当前位置: 首页>>技术教程>>正文


为所有人或特定用户安装具有写入权限的 USB 驱动器

, , , ,

问题描述

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

我有:

  • HDD 分为两个分区。 /dev/sdb1/dev/sdb2sdb1 是 NTFS,我不需要它。我需要sdb2,它是fat32。

  • Ubuntu 12.04.1 LTS(服务器)

我想:

最终我需要一个 perma-mount /dev/sdb2/home/storage ,并为用户 media 提供访问权限(rw)。

我面临的问题:

从命令行使用手动安装。

如果我只是使用

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

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

如果我使用 mount 命令而不使用 sudo 作为用户 media – 我不允许。说只有root可以使用mount。

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

重新启动时重新安装 – 使用 fstab **

所以我想如果我每次重新启动时都使用 fstab 挂载这个分区( /dev/sdb2 )就可以了。我添加的 fstab 行:

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

获得了 blkid 的 uuid 。 fs 类型 auto 我更改了几次…我也尝试了 vfat,但总是在重新启动时 Ubuntu 在处理 fstab(我认为)时停止并显示消息(从日志中获取):

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 – 那么如何? 🙂

最佳方法

您的问题似乎与您设置的权限有关。 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 提出了一个很好的观点\n您需要使用 FAT 是否有某种原因?如果没有,我会备份数据并使用 Linux 本机文件系统。然后您可以设置所有权和权限。

次佳方法

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

你也可以运行

sudo chmod 0777 /home/storage

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

第三种方法

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

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

首先,我们有一个空文件夹 ‘backup’ 作为安装点,\n并且由 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

现在,如果您有一个空驱动器,并且想要将其安装为 ‘user’ 作为 ‘user’ 磁盘空间的扩展,请以 root 身份安装驱动器,将安装的根目录更改为 ‘user’ 并卸载。

下次挂载文件系统时(由 root 或任何人根据 fstab),\n挂载的所有者将为 ‘user’。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14151.html,未经允许,请勿转载。