我在 /etc/init.d/ 中有一个指向服务脚本的硬链接,该脚本指向一个 shell 脚本 (bash)。权限显示所有者、用户和组的权限对每个人都是 rwx。
但是,当我运行 $find /etc/init.d/ -group myuser 命令时,目录中没有显示任何有关 myuser 的内容,尽管似乎任何人都可以执行该脚本。我仔细检查了一下,当我运行 $find /etc/init.d/ -group root 时,输出显示了 root 的权限。
知道发生了什么吗?当我执行服务时,它似乎运行良好(它应该通过 pid 关闭一些进程),但是当我 ps -ef 进程时,它们仍在运行。
莫名其妙...
答案1
因为脚本包含有特权的命令,例如kill
或initctl
。
如果服务以 root 身份运行,则只有具有 root 权限的用户才能终止它,即使您有一个包含这些命令且具有全局执行权限的脚本。查看您提到的 shell 脚本,看看它包含哪些命令。
调用 init 脚本的正确方法是使用 sudo。