我目前有一个额外的硬盘,用作我的工作空间。我试图使用添加到 /etc/fstab 的以下行让它在重新启动时自动安装
/dev/sdb1 /media/workspace auto defaults 0 1
这可以自动安装它,但是我想限制属于特定组的用户的读/写访问权限。我该如何在 /etc/fstab 中执行此操作?我可以简单地使用乔恩或者chmod来控制访问?
答案1
如果文件系统类型是没有权限的文件系统类型(例如 FAT),您可以将umask
,gid
和uid
添加到 fstab 选项中。例如:
/dev/sdb1 /media/workspace auto defaults,uid=1000,gid=1000,umask=022 0 1
uid=1000
是用户 ID。
gid=1000
是组ID。
umask=022
这将设置权限,以便所有者具有读、写、执行的权限。小组和其他人将阅读并执行。
要查看您的更改,您无需重新启动。一次umount
又一次mount
,没有争论。例如:
umount /media/workspace
mount /media/workspace
但请确保没有任何进程(甚至是您的 shell)使用该目录。
答案2
我将通过包含挂载点的目录来访问文件系统。
作为根用户:
mkdir -p /media/group1only/workspace
chgrp group1 /media/group1only
chmod 750 /media/group1only
这是对 root 的完全访问权限以及 group1 成员的读取+执行访问权限。不要在此处授予他们写入权限,因为如果他们不小心重命名了workspace
挂载点,可能会导致您的系统无法启动。
并将其添加到 /etc/fstab :
/dev/sdb1 /media/group1only/workspace auto defaults 0 1
挂载文件系统后,您可以对文件系统内的对象进行进一步的所有权和模式更改,以适应组成员之间更细粒度的访问。
答案3
例如,假设磁盘上的文件系统支持 ACL,并使用假设的用户 myusername 和假设的组来访问磁盘 diskusers,可以完成类似以下的操作。$
表示以普通用户身份执行的命令;#
表示以root用户执行的命令。
为此目的创建一个用户可能所属的组。
$ sudo groupadd diskusers
$ sudo usermod -a -G diskusers myusername
$ logout
再次登录。
$ sudo -i
# mount /media/workspace
# chown root:root /media/workspace
# chmod 0750 /media/workspace/
# setfacl -d -m -g:diskusers:7 /media/workspace
# setfacl -m g:diskusers:7 /media/workspace
命令中的“7”setfacl
是八进制(读= 4 + 写= 2 + 执行= 1),很像普通的八进制权限(0400、0200、0100)。
这-d
是一个指定默认掩码的开关 - 新文件和目录。是-m
应用于目录的掩码。
您还可以在设置默认值(如上所述)后最初将掩码应用于所有文件:
find /media/workspace -exec setfacl -m g:diskusers:7 {} +
此时,只有 root 和 diskuser 的成员可以访问这些文件。我也喜欢 Mark Plotnick 的想法,即对子目录应用权限。这项技术也可以这样使用。
答案4
我在 ubuntu 22.04
我在 fstab 中的 root 挂载是这样的:
UUID=myuuid / ext4 errors=remount-ro,user=owner 0 1
所以,我没有进入 passwd conf 文件的所有者用户,但我认为这个所有者是挂载点(目录)的绝对所有者......
/
有根所有者/home/whateveruser
有whateveruser
所有者/media/myuser/mypendrive
有myuser
所有者
我们不需要指定 user=listofusers。所有者足以获得 root 和有效的登录用户。
在我在 / ext4 挂载点设置 user=owner 后,我的 USB 3.0 pendrive 获得了近 200 MB 的传输速率。
我不知道这是否像我说的那样有效,但我可以在没有安装错误或systemd
错误的情况下启动。