我想将设备挂载/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=value
和gid=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 ./