具有"默认权限"的保险丝文件系统选项

时间:2017-01-10 15:11:43

标签: linux linux-kernel filesystems redhat fuse

我是新手来融合。我已通过以下命令安装了保险丝。

/mnt/fuse -o default_permissions -o allow_other -o nonempty -o hard_remove –d

现在如果我登录为" test"用户并尝试创建一个名为" testfile"。

的文件
test@11540302:/registration> touch testfile
touch: setting times of `testfile': Permission denied

Strace输出:

uname({sys="Linux", node="11540302", ...}) = 0
brk(0)                                  = 0x8055000
brk(0x8076000)                          = 0x8076000
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK|O_LARGEFILE, 0666) =    3
dup2(3, 0)                              = 0
close(3)                                = 0
utimensat(0, NULL, NULL, 0)             = -1 EACCES (Permission denied)
close(0)                                = 0

但" testfile"所有者创建成功为 root 用户,

-rw-r--r--  1 root trusted     0 Jan 19 13:51 testfile

我可以理解保险丝应用程序在根级别运行,文件创建以root用户身份进行。由于该测试,用户无法对" testfile"。

执行任何操作

我的问题:

因为我已经给了" allow_other"安装时,为什么测试用户无权访问" testfile"?

如果我的理解错误,请纠正我。

2 个答案:

答案 0 :(得分:1)

我得到了解决这个问题的方法。

Detailed explanation for this issue.

解决方案:

正如@dirkt所说,我们需要自己处理权限。

获取来电者uid和gid的代码:

  

fuse_get_context() - > UID;

     

fuse_get_context() - > GID;

获取调用者用户ID和组ID,并在创建via fuse API时设置文件/目录的所有权。

总是有改进的余地。如果我不对,请帮我纠正。

谢谢dirkt的解释。

答案 1 :(得分:0)

尝试将test用户添加到fuse群组:

usermod -a -G fuse test

另外,请确保在#user_allow_other配置文件(通常在fuse上)取消注释/etc/fuse.conf

sed -i -e "s/#user_allow_other/user_allow_other/gi" /etc/fuse.conf

运行其中任何一个,reboot计算机后再试一次。