我可以与其他用户共享主目录中的文件夹吗?
我的系统上有两个用户,agent
并且daemon
.外部服务器连接为agent
文件并将文件同步到~agent/incoming
我想要daemon
访问 中的文件,~agent/incoming
但我不想agent
访问 的任何daemon
文件。
我建立了一个名为 的组automaton
并将两个用户添加到其中。然后我将该~agent/incoming
文件夹 chmod 为drwxrws---
(注意粘滞位)并将该文件夹 chown 为agent:automaton
.
该进程运行并将新文件传送到该incoming
文件夹并设置为agent:automaton
具有权限,-rw-rw----
但daemon
无法查看或复制这些文件:
stat: cannot stat (path here) : Permission denied
我究竟做错了什么?
答案1
您的问题很难准确回答,因为您没有说明要传递给守护进程的路径,也没有指定~agent
.如果您在目录中启动守护进程~agent/incoming
并传递相对路径,那么由于守护进程位于automaton
组中,因此它将能够读取、写入和删除~agent/incoming
目录中的文件。
我想发生的事情是:
- 该
~agent
目录不可由守护程序执行。 - 传递给守护程序的路径
~agent
作为一个组件包含在内(例如,它是绝对路径)。
当进程访问 时/home/agent/incoming/foo
,它必须对遍历的所有目录具有执行权限:/
、/home
和(如果其中一些是符号链接,则需要更多权限)/home/agent
。/home/agent/incoming
如果守护进程foo
在当前目录为 时进行访问,则只需对当前目录( )本身~agent/incoming
具有执行权限即可。~agent/incoming
您需要设法使该目录成为当前目录;chdir
要求进程有权访问目标目录。如果您在以(比如说)用户身份运行时首先更改到所需的目录agent
,然后运行类似su daemon -c daemon-command
.
答案2
即使他有“~agent/incoming”的权限,“~agent/”文件夹中的守护进程也没有权限,所以它是权限层次结构,请参阅此关于分层目录权限的问题