我想将设备挂载/dev/sda3到目录/foo/bar/baz。挂载后目录应该有 user 的 uid johndoe。所以我做了:
sudo -u johndoe mkdir /foo/bar/baz
stat -c %U /foo/bar/baz
johndoe
Run Code Online (Sandbox Code Playgroud)
并将以下行添加到我的/etc/fstab:
/dev/sda3 /foo/bar/baz ext4 noexec,noatime,auto,owner,nodev,nosuid,user 0 1
Run Code Online (Sandbox Code Playgroud)
当我现在sudo -u johndoe mount /dev/sda3执行命令stat -c %U /foo/bar/baz结果root而不是johndoe. 使用 uidjohndoe设置挂载这个 ext4 文件系统的最佳方法是什么?
Cat*_*kul 23
bindfs是答案。它将采用一个已经安装的文件系统,并使用您想要的任何 uid 提供它的视图:
sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo
Run Code Online (Sandbox Code Playgroud)
Lek*_*eyn 22
无法在具有 ext4 文件系统的磁盘上强制所有者。只有不支持像 fat 这样的 Linux 权限的文件系统才有所有权/组别属性:uid=value和gid=value. 请参阅mount的手册页。
您应该更改已挂载文件系统上的所有者,如下所示:
sudo chown johndoe /foo/bar/baz
Run Code Online (Sandbox Code Playgroud)
如果您需要递归更改权限:
sudo chown -R johndoe /foo/bar/baz
Run Code Online (Sandbox Code Playgroud)
...如果该组也需要更改johndoe为:
sudo chown -R johndoe: /foo/bar/baz
Run Code Online (Sandbox Code Playgroud)
小智 7
假设为文件设置的组具有适当的权限,您应该能够找到它的组 ID (GID) 并将您自己添加到其中。
要找出文件的组 ID,请使用ls -n. 示例输出:
drwxr-xr-x 1 1000 1000 550 Jul 9 11:08 Desktop/
Run Code Online (Sandbox Code Playgroud)
您需要 GID 的第四个字段,在我的情况下是第二个1000.
sudo addgroup --gid GID foobar; sudo usermod `whoami` -aG foobar
Run Code Online (Sandbox Code Playgroud)
一旦你运行,你应该完全控制组的文件属性允许它。
正如与用户权限相关的另一个答案中所述,如果您需要修复某些文件上的组,请运行以下命令之一:
sudo chown -R :foobar ./Run Code Online (Sandbox Code Playgroud)
sudo chgrp -R foobar ./
Run Code Online (Sandbox Code Playgroud)