我的根目录中有一个守护进程,当前以 root 身份运行。但是,由于此程序可以读取文件系统,因此这显然是一个安全问题。我该如何以 nobody 身份运行它,以便解决这个问题?
执行“su - nobody -c /root/myscript”不起作用,返回权限被拒绝错误。我似乎能解决这个问题的唯一方法是:
- Chmod -R 777 /root,我不想在我的根目录上执行此操作,而且这也会弄乱 ssh。
- 将脚本移动到/opt或/var,然后执行(1)
当然,我可能没有找到一个简单的解决方案。我可以把它传给任何人,但这也不能解决问题。有什么想法吗?
答案1
您不想执行 (1) - 不管 root 的主目录。 (2) 是您的最佳选择 - 创建守护进程将以之运行的用户所拥有的新目录并让它在该目录中执行它需要执行的任何磁盘 I/O。
半相关,请不要以“nobody”的身份运行——有句老笑话说,nobody 通常是 *NIX 系统上最有权限的用户,因为所有守护进程都以“nobody”的身份运行。
如果你真的关心安全,你就不会想落入这个陷阱。花点时间为你的守护进程创建一个具有适当限制的专用用户是值得的 :-)
答案2
嗯 - 脚本当前位于 /root 中。假设您的目标用户不是 root,那么当该用户尝试读取/执行脚本时,您当然会收到权限错误。
为什么你反对将脚本移至其他目录?如果你这样做,然后正确设置文件所有权/模式,则不会出现任何问题。