挂载具有特殊用户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=value
和gid=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 ./