我有一个目录,其中包含一些需要通过 Web 请求调用的脚本。这些脚本需要提升权限才能运行。
我目前的想法是添加以下几行/etc/sudoers
:
Cmnd_Alias WEB_COMMANDS = /path/to/scripts
www-data ALL=(ALL) NOPASSWD: WEB_COMMANDS
这是解决这个问题的正确方法吗?还是我造成了潜在的安全漏洞?
使用 CentOS 7,如果有任何区别的话。
答案1
任何事情都可能存在安全漏洞。有两件事:
首先,你当然它需要 root 权限吗?为什么?您可以使用 capabilities 来做到这一点吗?(您可能可以。)
话虽如此,你的例子几乎是正确的。在路径后添加一个星号:
Cmnd_Alias WEB_COMMANDS = /path/to/scripts/*
现在它可以工作了。但要注意,如果攻击者可以修改任何脚本,那么攻击者将获得完全根访问权限。他们可以简单地exec('/bin/bash')
拥有一个 shell。如果可能的话,一定要按照每个脚本的功能路线走,并且一定要锁定脚本目录。参见这个unix.se答案有关使用脚本管理功能的信息。