我想为一些通常不需要 root 权限的管理任务创建“角色”帐户。例如,假设有一名www-admin
用户在 中维护文件/var/www
。
在我看来,这是解决文件权限问题最简单的方法:它可以确保承担此角色的每个人都以权限/所有权创建文件,以便具有此角色的其他人都可以编辑/读取,而无需使用组可写访问模式。
用户可以使用sudo su www-admin --preserve-environment --shell /bin/bash
或类似命令切换到该角色。
我遇到两个问题:
有时,
www-admin
角色需要执行sudo
任务。但切换到角色后,sudo
会要求输入角色帐户的密码。我不想设置它并与所有人共享。我可以让 sudo 询问原来的用户的密码?切换到角色后,用户可能需要使用 SSH,例如签出 git 存储库。但是,SSH 身份验证套接字的权限(当然)设置为“角色”用户 ID 无法从中读取。
我确信这在多人管理团队中是一个相当常见的问题。您如何解决这个问题?
另外,我注意到sudo
手册页上写着“调用用户的真实(非有效)用户 ID...”。那么,如果真实用户 ID 和有效用户 ID 之间存在差异,这有帮助吗...?
答案1
也许最好是完全避免转换“角色”?
相反,您可以使用 ACL 来确保某些共享文件集可以在无需任何切换的情况下进行编辑。
另外,您还可以使用 ACL 强制限制“守护进程”在需要时具有 R/O 访问权限。
—sudo
可以说它主要是克服标准 UNIX 用户/组/其他访问模型(以及另一个可以描述为“root”或“nobody”的模型)的一种方法,同时它仍然被广泛使用,现代 UNIX 系统已经获得了比上述模型更细粒度的访问模型。
答案2
- 有时,
www-admin
角色需要执行sudo
任务。但切换到角色后,sudo
会要求输入角色帐户的密码。我不想设置它并与所有人共享。我可以让 sudo 询问原来的用户的密码?
为什么不
- 给www-管理员用户一个
~/bin/
带有相应命令的文件夹,所有命令都带有苏伊德权限?
或者
- 编辑
/etc/sudoers
并赋予NOPASSWD
各种命令属性www-管理员用户。然后www-管理员可以通过运行这些须藤无需使用任何密码。