我们的 Ubuntu 服务器上的一位用户给了我们一个外部硬盘驱动器,作为增加其帐户存储空间量的一种方法。
他们希望我们自动将他们自己的 /home/user 文件夹中的外部硬盘驱动器安装到 /home/user/usbDrive 等位置
此外,他们希望确保系统上的其他用户无法访问此外部硬盘驱动器。
通常,在没有多个用户的系统上,我一直将外部硬盘驱动器安装到 /media/usbDrive 之类的位置,并且我从未真正花时间查看此类安装是否可供其他用户使用(因为没有没有任何其他用户)。
我知道如何向 fstab 表添加条目以便自动安装挂载,但我真正要求指导的是以下问题:
在多用户环境中,安装仅由一名用户使用的外部硬盘驱动器的最佳位置在哪里?
如果我将此外部硬盘驱动器安装在他们自己的 /home/user 文件夹中的某个位置,他们是否会自动成为唯一可以访问它的用户(除了 root 之外)?或者,是否需要进行额外的权限修改才能确保这一点。
我担心如果我安装到 /home/user/usbDrive,如果安装失败,大量数据将填满内部硬盘驱动器(在该安装位置),而不是转到外部硬盘驱动器(如预期)。这是一个合理的担忧吗?
答案1
我建议使用autofs
来安装驱动器(https://wiki.archlinux.org/index.php/Autofs)在标准位置(例如不是他们的主目录)。默认autofs
为/run/media/$username/$media-title
.
udev
限制权限(https://wiki.archlinux.org/index.php/Udev)和一个符号链接,允许用户从其主目录访问驱动器。
来自 arch wiki 的有关配置 autofs 的摘录:
/etc/autofs/auto.master
/media/misc /etc/autofs/auto.misc --timeout=5
/media/net /etc/autofs/auto.net --timeout=60
。
/etc/autofs/auto.misc
#kernel -ro ftp.kernel.org:/pub/linux
#boot -fstype=ext2 :/dev/hda1
usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sdb1
cdrom -fstype=iso9660,ro :/dev/cdrom
#floppy -fstype=auto :/dev/fd0
您可以决定是否喜欢这个想法autofs
,我在这里建议的原因是:以防在启动机器时设备未插入(fstab
在启动时引用,但除非您mount -a
手动运行root
) 。另外,autofs
如果它安装的目录不存在,将临时创建它,这对我的最后一点很有用。
udev 用于修改硬件设备设置/权限等
/udev/rules.d/99-sdb1.rules
KERNEL="sdb1", OWNER="user1", GROUP="user1", MODE="0700"
这将阻止除user1
阅读或写作之外的任何人sdb1
。
我建议在用户的主目录中建立一个指向该autofs
目录的符号链接,因为如果未安装磁盘,该目录将不存在。这意味着尝试写入该目录将失败,而不是默默地填充硬盘驱动器。
为此需要进行一些设置,因此请使用此答案作为起点而不是全面的答案,但它应该可以解决您的所有问题。
答案2
如果我将此外部硬盘驱动器安装在他们自己的 /home/user 文件夹中的某个位置,他们是否会自动成为唯一可以访问它的用户(除了 root 之外)?或者,是否需要进行额外的权限修改才能确保这一点?
访问内部文件夹的能力/home/user
与安装无关,取决于为其他用户设置的权限/home/user
:
drwxr-xr-x
:/home/user/usbDrive
每个人都可以访问。drwxr--r--
:其他用户将能够看到/home/user/usbDrive
(ls /home/user/
将列出usbDrive
),但无法访问其中的任何内容。drwx--x--x
:其他用户将无法看到,但如果知道其名称(可以使用),则/home/user/usbDrive
可以访问它。cd /home/user/usbDrive
drwx------
:其他用户将被拒绝所有访问/home/user/usbDrive
请注意,一旦安装了驱动器,内部的权限/home/user/usbDrive
将取决于安装选项,而不是/home/user/usbDrive
目录的原始权限。