我正在开发一个 Web 界面(只能通过内联网访问,不能通过互联网访问)。单击 PHP 页面中的按钮时,Python 脚本会执行一些操作,最后需要以 root 身份执行 cp 命令。
我搜索了不同的解决方案,并决定采用建议为 apache 用户提供无密码 sudo 访问权限(仅用于 /bin/cp 命令)的解决方案。因此,我编辑了 sudoers 文件,为 cp 命令提供无密码 sudo 访问权限(仅用于 apache),并且运行正常。但是,第二天我发现我添加的行本身不见了。我不确定是否发生了一些常规更新,从而覆盖了 sudoers 文件。
请帮我找出解决这个问题的可能方法。
答案1
据我所知,任何发行版中都没有可以实现这一功能的自动化流程。
要调试此问题,您应该做几件事:首先,检查上次修改时间。(ls -l /etc/sudoers
)一个表明它是一个自动化过程的重要指标是它恰好在整点发生,例如在 0200h。您可以检查 cron 文件(/etc/crontab
、、)中是否有任何看起来不正常的东西(或所有内容),寻找任何解析和/或写入的东西。最后,您可以检查 root或向同事询问:也许其中一个人从备份中恢复或意外覆盖了/etc/cron.d/*
您的更改。/etc/cron.{hourly,daily,monthly,weekly}
/etc/sudoers
~/.bash_history
答案2
为什么 cp 命令必须以 root 身份执行?您不能调整要从/向其复制的目录的所有权和权限,以便 apache 用户可以在没有 root 权限的情况下执行复制吗?
答案3
注意:您永远不应该直接编辑 sudoers 文件。这会导致 sudoers 文件无法使用。应使用命令 visudo 来操作 sudoers 条目,因为使用此命令基本上语法检查文件以防止错误的文件条目并锁定任何其他人编辑文件。我想知道这是否可能是问题的一部分,因为有人做了 visudo 并且它出于某种原因踢出了条目。