当前位置: 首页>>技术教程>>正文


使用特殊用户 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 文件系统的最佳方法是什么?

最佳答案

答案是 bindfs。它将获取已安装的文件系统,并使用您想要的任何 uid 提供其视图:

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

次佳答案

无法在具有 ext4 文件系统的磁盘上强制指定所有者。只有不支持 Linux 权限的文件系统(如 fat)才具有所有权/组属性:uid=valuegid=value 。请参阅 manual page on mount

您应该按如下方式更改已挂载文件系统的所有者:

sudo chown johndoe /foo/bar/baz

如果需要递归更改权限:

sudo chown -R johndoe /foo/bar/baz

…如果组也需要更改为 johndoe

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

第三种答案

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14497.html,未经允许,请勿转载。