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