挂载具有特殊用户ID的文件系统

我想将设备/dev/sda3挂载到目录/foo/bar/baz 。 安装目录后应该有用户johndoe的uid。 所以我做了:

 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 johndoe设置这个ext4文件系统的最佳方法是什么?

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

您应该更改已挂载文件系统上的所有者,如下所示:

 sudo chown johndoe /foo/bar/baz 

如果需要递归更改权限:

 sudo chown -R johndoe /foo/bar/baz 

……如果该组也需要改为johndoe

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

bindfs就是答案。 这将需要一个已安装的文件系统,并提供它的视图与您想要的任何uid:

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

假设为文件设置的组具有适当的权限,您应该能够找到它的组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 ./