我想将设备挂载/dev/sda3
到目录/foo/bar/baz
。挂载后的目录应该有 user 的 uid johndoe
。所以我做了:
sudo -u johndoe mkdir /foo/bar/baz
stat -c %U /foo/bar/baz
johndoe
并将以下行添加到我的/etc/fstab
:
/dev/sda3 /foo/bar/baz ext4 noexec,noatime,auto,owner,nodev,nosuid,user 0 1
当我现在sudo -u johndoe mount /dev/sda3
执行命令时,命令的stat -c %U /foo/bar/baz
结果是root
而不是johndoe
. johndoe
用 uid集挂载这个 ext4 文件系统的最佳方法是什么?
bindfs
是答案。它将采用已安装的文件系统,并使用您想要的任何 uid 提供它的视图:无法在具有 ext4 文件系统的磁盘上强制拥有所有者。只有不支持 Linux 权限(如 fat)的文件系统才具有所有权/组别属性:
uid=value
和gid=value
. 请参阅mount 的手册页。您应该更改已挂载文件系统的所有者,如下所示:
如果您需要递归更改权限:
...如果该组也需要更改
johndoe
为:假设为文件设置的组具有适当的权限,您应该能够找出它的组 ID (GID) 并将自己添加到其中。
要找出文件的组 ID,请使用
ls -n
. 示例输出:你想要 GID 的第四个字段,在我的例子中是第二个
1000
。一旦你运行它,你应该在组的文件属性允许的地方完全控制它。
如与用户权限相关的另一个答案中所述,如果您需要在某些文件上修复组,请运行其中之一: