使用特殊用户 ID 设置挂载文件系统

使用特殊用户 ID 设置挂载文件系统

我想将设备挂载/dev/sda3到目录/foo/bar/baz。挂载后,目录应该具有用户的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。使用 uid 设置挂载此 ext4 文件系统的最佳方法是什么johndoe

答案1

bindfs就是答案。它将获取已安装的文件系统,并使用您想要的 uid 提供其视图:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

答案2

无法在具有 ext4 文件系统的磁盘上强制所有者。只有不支持 Linux 权限的文件系统(如 fat)才具有所有权/组属性:uid=valuegid=value。请参阅安装手册页

您应该按如下方式更改已挂载文件系统的所有者:

sudo chown johndoe /foo/bar/baz

如果需要递归更改权限:

sudo chown -R johndoe /foo/bar/baz

...如果组也需要更改为johndoe

sudo chown -R johndoe: /foo/bar/baz

答案3

假设为文件设置的组具有适当的权限,您应该能够找出它的组 ID (GID) 并将自己添加到其中。


要找出文件的组 ID,请使用ls -n。示例输出:

drwxr-xr-x 1 1000 1000  550 Jul  9 11:08 Desktop/

您需要 GID 的第四个字段,在我的情况下是第二个1000

sudo addgroup --gid GID foobar; sudo usermod `whoami` -aG foobar

一旦运行该程序,您就可以完全控制组的文件属性允许的任何位置。

正如与用户权限相关的其他答案中所述,如果您需要修复某些文件的组,请运行这些:

sudo chown -R :foobar ./
sudo chgrp -R  foobar ./

相关内容