基本上我有一个应用程序服务器,并希望允许应用程序的所有者/管理员能够在与应用程序相关的目录上运行任何 sudo 命令。例如,如果应用程序目录是 /opt/my-application,则用户不需要运行“sudo vim /opt/my-application/some-file”,而是运行“sudo vim /var/some-file” ”
我认为正确的方法是确定他们在应用程序目录中经常使用哪些命令,但我觉得这仍然会让他们在系统中拥有太多的权力。
9月11日编辑:看到一些答案,我想我应该澄清我的问题。此时,用户具有 sudo 访问权限。我不反对他们拥有 sudo 访问权限来完成他们需要的工作。我很好奇的是我可以实施一个潜在的解决方案,使他们更容易在他们定期修改的特定目录中工作。我希望我可以为他们在这些特定目录上运行的任何命令启用无密码 sudo。到目前为止的答案已经帮助我为他们需要的一些系统命令实现无密码 sudo,例如能够管理应用程序的 systemctl。
答案1
在你的 sudoers 文件中:
user ALL=(root) NOPASSWD: /usr/bin/vim /opt/my-application/some-file
该行仅允许运行特定命令。
但是您无法更改目录的权限(chmod 或 setfacl)?或者更改默认的 umask 值?
答案2
对于文件访问,正确的方法是设置权限以允许该文件访问。如有必要,设置 cron 作业以追溯执行新创建/修改的文件的权限和所有权。
对于特定要求(可能需要重新启动 Apache/NginX),请编写一个 shell 包装器脚本,该脚本通过调用自身sudo
并在严格控制下运行适当的命令。