我正在尝试运行两个系统服务,每个系统服务都有自己的用户,并在 /var/lib 下的目录中创建由该用户拥有的文件 - 问题是我需要两个服务都将它们的文件写入同一个目录,并且一个服务写入的文件可供另一个服务读取。
我能够解决chmod 0777
目录及其所有父级的问题,但这似乎不是一个明智的长期解决方案。有没有更好的方法来解决权限问题?也许通过将两个用户添加到同一个组?
我正在运行 20.04 LTS Focal
答案1
有几种选择。
是的,您可以将两个用户添加到同一个组并设置对该组的写权限:
sudo groupadd somegroup
sudo adduser user1 somegroup
sudo adduser user2 somegroup
sudo chgrp somegroup /var/lib/somedir
sudo chmod g+rwx /var/lib/somedir
您还可以将目录设置为由其user1
所属组所拥有和属于user2
,然后为所有者和组设置写访问权限:
# assume group2 is a group to which user2 belongs
sudo chown user1:group2 /var/lib/somedir
sudo chmod ug+rwx /var/lib/somedir
最后,您可以使用 ACL。首先,您必须安装用于操作 ACL 的命令:
sudo apt install acl
然后你可以例如使目录归拥有user1
并添加写访问权限user2
:
sudo chown user1 /var/lib/somedir
sudo chmod u+rwx /var/lib/somedir
sudo setfacl -m u:user2:rwx /var/lib/somedir
或者您可以明确添加访问权限user1
,而user2
不管目录的所有者是谁:
sudo setfacl -m u:user1:rwx /var/lib/somedir
sudo setfacl -m u:user2:rwx /var/lib/somedir
顺便说一句。您不需要对父目录 (0777) 具有写权限,您x
只需要对每个父目录具有访问权限。