向其他用户公开某些 bash 脚本命令

向其他用户公开某些 bash 脚本命令

我有一个名为的 bash 脚本,/root/scripts/start-apache其中包含:

systemctl start apache2
sendTelegramNotice "Apache started from the web"
echo Done

/root/scripts/stop-apache

systemctl stop apache2
sendTelegramNotice "Apache stopped from the web"
echo Done

在 visudo 中我添加了:

www-data ALL=NOPASSWD: /root/scripts/start-apache
www-data ALL=NOPASSWD: /root/scripts/stop-apache

我添加了以下命令/usr/local/bin

ln -s /root/scripts/{start-apache,stop-apache} /usr/local/bin/

现在,当我以用户身份登录时www-data,我可以运行如下命令:

sudo start-apache
sudo stop-apache

这是一种安全的方法吗?我的假设是否正确?当我正确验证 bash 脚本命令的输入时,从安全角度来看,这对于生产来说是安全的。如果不是,那么实现这一目标的最佳做法是什么?

我想创建类似的简单命令banip 0.0.0.0 unbanip 0.0.0.0 slowtrafficdown并将它们公开给www-data,但我不想授予www-data提升的权限来直接运行底层命令(如iptables / ipset等)。

相关内容