安装 USB 驱动器,并为所有人或特定用户提供写入权限

安装 USB 驱动器,并为所有人或特定用户提供写入权限

我知道有类似的问题,但我遇到了一些无法克服的具体问题。

我有:

  • HDD 分成两个分区。/dev/sdb1并且/dev/sdb2sdb1是 NTFS,我不需要它。我需要sdb2的是 fat32。
  • Ubuntu 12.04.1 LTS(服务器)

我想:

最终我需要一个具有用户访问权限(rw)的永久/dev/sdb2挂载。/home/storagemedia

我面临的问题:

使用命令行手动挂载。

如果我只是使用

server# sudo mount /dev/sdb2 /home/storage

它已安装但/home/storage接收 root 作为所有者和组并且不允许media用户在那里写入。

如果我以非用户身份使用mount命令- 则不允许。据说只有 root 可以使用 mount。sudomedia

如果我使用mount选项:server# sudo mount /dev/sdb2 /home/storage -o umask=000我就能得到我需要的东西。当然,有点过头了,因为存储文件夹对每个人都是可写的。但是 - 这是手动安装的 - 现在我需要在每次重启时重新安装它。

重启时重新安装 - 使用fstab**

因此,我认为每次重启时使用fstabmount 这个分区 ( )就可以了。我添加了以下行:/dev/sdb2fstab

UUID=8C52-C1CD /home/storage auto   user,umask=000,utf8,noauto  0   0

得到了 uuid 。我更改了几次blkidfs 类型...我也尝试过,但每次重启时,Ubuntu 都会在处理 fstab 时停止(我认为),并显示以下消息(取自日志):autovfat

fsck from util-linux 2.20.1
/dev/sda5: clean, 120559/10969088 files, 19960144/43861504 blocks
mount: unknown filesystem type 'static'
mountall: mount /etc/fstab: [772] terminated with status 32
mountall: Filesystem could not be mounted: /etc/fstab:
Skipping /etc/fstab: at user request

而且 -sudo mount -a从来没有真正做过任何事情。

我做错了什么?我怀疑我搞砸了什么:)

它似乎fstab只应支持静态驱动器的安装,而不是任何类型的 USB 设备。我很困惑,为什么所有人都在网上发布他们的成功故事...

但是...如果这不可能 - 我想知道如何在每次重启后重新安装我的 USB...如果不行fstab- 那么怎么办?:)

答案1

您的问题似乎与您设置的权限有关。FAT / FAT32 格式的驱动器不支持文件权限。所有内容的权限取决于驱动器的安装方式。当您设置权限打开时,它会在您

server# sudo mount /dev/sdb2 /home/storage -o umask=000

至于它在重启时不会自动安装

UUID=8C52-C1CD /home/storage auto user,umask=000,utf8, -->noauto<-- 0 0

“noauto” 使得系统启动并解析 /etc/fstab 文件时不会自动挂载。删除该选项,它将在启动时挂载。挂载后,您可以设置挂载点的权限,chmod或者在 /etc/fstab 中指定权限。

如果需要媒体用户访问,可以将权限设置为 764,并将其添加到安全组。Root 始终可以访问所有内容。

http://www.linux.org/threads/file-permissions-chmod.4094/有关正确文件权限的一些示例

顺便说一句,bodhi.zazen 提出了一个很好的观点:你为什么需要使用 FAT?如果没有,我会备份数据并使用 Linux 原生文件系统。然后,你可以设置所有权和权限。

答案2

笔记:正如下面的评论中提到的,使用 0777 权限时要小心:这意味着机器上的任何人或任何脚本都可以写入驱动器。考虑到这一警告,这有时可能是一个有用的修复方法:

您还可以运行

sudo chmod 0777 /home/storage

由于 FAT 驱动器没有权限,因此 Linux 将挂载点的权限应用于整个驱动器。

答案3

除非被挂载选项 GID= 或 UID= 覆盖,否则挂载时挂载点的所有者和权限将成为正在挂载的文件系统树的所有者和权限。

因此,如果 /dev/sdb1 包含用户拥有的 ext4 文件系统(比如备份),那么成功挂载后,用户将成为挂载点的所有者。

首先,我们有一个空文件夹“备份”作为挂载点,并且由 root 拥有。

# ls -alR /mnt
/mnt/:
drwxr-x---  5 root root 4096 May 30 20:59 ./
drwxr-xr-x  3 root root 4096 Dec  5  2015 ../
drwx------  2 root root 4096 Jan  1 07:45 backup/

/mnt/backup:
drwx------  2 root root 4096 Jan  1 07:45 .
drwxr-x---  5 root root 4096 May 30 20:59 ..

现在我们挂载/dev/sdb1(只读)

# mount -o ro /dev/sdb1 /mnt/backup

让我们看看……

# ls -alR
/mnt/:
drwxr-x---  5 root root 4096 May 30 20:59 ./
drwxr-xr-x  3 root root 4096 Dec  5  2015 ../
drwx------  2 user user 4096 Jan  1 07:45 backup/

/mnt/backup:
drwx------  2 user user 4096 Jan  1 07:45 .
drwxr-x---  5 root root 4096 May 30 20:59 ..
-rw-------  1 user user 252076021760 Jun  9 21:11 backup.tar

现在,如果您有一个空驱动器,并且想要将其作为“用户”磁盘空间的扩展安装到“用户”,请以 root 身份安装该驱动器,将安装的根目录更改为“用户”,然后卸载。

下次挂载文件系统时(由 root 或任何按照 fstab 的用户挂载),挂载的所有者将是“用户”。

答案4

如果您确实有使用 NTFS 连接到 Linux 机器的外部存储设备,请确保文件系统是干净的。

在将存储安装到 Linux 系统之前:

  1. 运行以下命令

    ntfsfix /dev/storagedevice ( like sdb1 or sdc1 )  
    
  2. 重新启动Linux系统

  3. 通过运行以下命令挂载外部存储:

    mount -o rw /dev/storagedevice /media/ 
    

    或者

    mount -o rw /dev/storagedevice /mnt/ 
    

    或通过 GUI 安装存储设备。

相关内容