我想将设备挂载/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)
归档时间: |
|
查看次数: |
50224 次 |
最近记录: |