如果用户执行如下命令
sudo /etc/init.d/apache2 restart
我想检测并阻止该脚本执行。
我可以在不修改脚本的情况下做到这一点吗apache2
?
答案1
您很可能想要sudo chmod o-x /etc/init.d/apache2
。这将阻止任何用户运行 apache2,除非他/她是超级用户、文件所有者或其组的成员。
查看chmod 维基了解更多信息。
答案2
你可以限制用户可以执行的命令,甚至可以限制他们使用 sudo 执行这些命令的权限。所有这些设置都在文件中完成/etc/sudoers
,该文件由命令编辑visudo
。
通常使用 sudo 安装并使用的最基本的配置允许 wheel 组中的用户以 root 用户身份执行程序。sudoers(5)手册页提供了有关如何配置 sudo 的详细信息,以便用户只能执行他们应该有权访问的程序,以及他们应该被允许使用什么权限来执行该程序。
还要注意,即使用户有权执行命令,sudo 也会记录所有使用情况。通常,这会记录到您的系统日志中,其位置取决于您在系统上配置的日志和日志记录方式。
如果您只是进行实验(而不是真正想阻止某人执行程序,但仍通过 sudo 将其交给他们),那么您可以为 sudo 编写一个包装器脚本。在包装器脚本中,要么拦截日志消息以确定是否请求运行不需要的程序,要么更好的是,只查看请求在 sudo 权限下运行的命令,然后将命令正常传递给 sudo 或拒绝该操作。请注意,如果用户知道并可以访问 sudo 二进制文件的路径,包装器脚本也可以被绕过。
答案3
您可能应该删除他们的sudo
权限。只要他们拥有权限,您所做的一切都是他们无法“撤销”的。如果您不能信任他们授予权限,那么他们一开始就不应该拥有这些权限。