我是用户“somebody”。我有一个典型的“Web blob”网站生态系统(本质上是一个从 Apache 的典型“htdocs”目录开始的 FS 子树)。
它的文件归“root”所有,并分组到“daemon”,以供 Apache 读取和/或执行,而“root”也可以写入它们(它们位于“/opt”,通常由脚本或以 super 形式调用的“安装程序”填充)。
作为“某人”,我想在那里创建一个 git repo(在“htdocs”中),以跟踪配置更改等,但我不想以超级用户身份运行“git”(我尽量避免以超级用户身份运行东西)。我不想将文件 chown/chgrp 为我的用户名,因为任意用户都不应该在“/opt/...”中乱搞,对吧?
所以我想——为什么不把自己添加到“守护进程”组,并启用文件的组写入权限?这样不是更简洁一些吗?但也许让普通用户成为“守护进程”组的一部分并不明智,或者让“守护进程”组的文件可写也不明智——我只是还不知道为什么。
有没有推荐的方法,可以给“某人”写权限,访问“/opt”中的内容,由“root”拥有,同时对守护进程模式下的 Apache 等程序保持只读,而无需诉诸 ACL?我不这么认为,但我不是一个聪明人。:-D
(这个问题与此相关,但并没有真正为我解答: 用户权限:守护进程和用户)。
答案1
我认为最接近的方法是将“htdocs”的内容移动到其他地方(在这种情况下,由于“somebody”是该网站的唯一预期编辑者,我可以将内容放在例如“/home/somebody/some_website-htdocs”中),然后从原始位置创建一个指向实际文件的符号链接。然后我可以将文件重新归还给“somebody”以提供写入权限,其他一切保持不变(Apache 仍然可以通过组“daemon”读取/ex)。
假设这有意义,如果我想将编辑扩展到多个用户,也许我会创建一个“web”用户和组,将“blob”移动到“/home/web/...”中的某个位置,链接到那里,然后添加“daemon”、“somebody”和任何其他用户到“web”组,并重新将文件设置为可组写。
这种程度的控制可能有点客观的但更好的答案可能会教会我(和其他发现这个问题的人)很多关于权限管理的知识。