我是新手来融合。我已通过以下命令安装了保险丝。
/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"?
如果我的理解错误,请纠正我。
答案 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
计算机后再试一次。