我希望共享媒体驱动器对所有用户透明可用,同时遵守 FHS 和 Ubuntu 标准。如有必要,前者优先。我目前将其安装在/media/Stuff
但/media
我认为应该是用于外部媒体。主要问题是设置正确的权限,以便可以向在同一目录中工作的多个用户授予对驱动器的读写权限。
安装新硬盘看起来有点令人困惑,也不是我想要的。它声称这会设置顶级目录的所有权(尽管有递归标志):
sudo chown -R USERNAME:USERNAME /media/mynewdrive
这将允许多个用户创建文件和子目录,但只能删除他们自己的文件和子目录:
sudo chgrp plugdev /media/mynewdrive
sudo chmod g+w /media/mynewdrive
sudo chmod +t /media/mynewdrive
但是,组可写位似乎不会被继承,这对于保持有序性来说很麻烦(防止在另一个用户最初创建的子文件夹中创建文件)。出于同样的原因,粘性位可能也是不受欢迎的,尽管目前看来,一个用户 A(可能是挂载点的所有者?)可以删除用户 B 的文件,但反之则不行。只要用户 B 可以在用户 A 的目录中创建文件,这就可以了。所以:
- 正确的挂载点是什么?
- plugdev 是正确的组吗?
- 最重要的是,如何设置权限来维护有组织的媒体驱动器?
我不想运行 cron 作业来定期设置权限!
答案1
正确的挂载点是/mnt/我的新驱动器;插件开发不正确;在权限上,为什么不使用访问控制列表(ACL)?
ACL 工具是默认安装的吗?记不清了,不过安装一下也无妨……
sudo apt-get install acl
使用 /etc/fstab 中的 acl 选项挂载文件系统。
sudo vim /etc/fstab
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 默认值,访问控制列表0 1
sudo mount -o remount,acl /
然后为此目的创建一个用户可以所属的组,我将其称为石头,然后使用户成为该组的成员。
sudo groupadd stone
sudo usermod -a -G stone $username
用户需要注销并重新登录才能成为该组的成员。如果目录 /mnt/mynewdrive 已挂载且完全为空:
sudo chown root.stone /mnt/mynewdrive
sudo chmod 0775 /mnt/mynewdrive
sudo chmod g+s /mnt/mynewdrive
sudo chmod +t /mnt/mynewdrive
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /mnt/mynewdrive
多于...
- 将所有者更改为 root 并将组所有者更改为 stone
- 赋予石头组写作能力
- 使所有新文件由 stone 集体所有
- 限制除创建文件的用户之外的所有人进行删除和重命名
- 默认情况下,允许用户和组 rwx,其他:rx。
答案2
目前,我建议设置一个没有权限的驱动器。使用 FAT32 或其他非安全文件系统并通过 samba 共享。
在未来,我认为我们需要认真考虑如何在 Ubuntu 中启用这些功能。