[英]Allowing users to run script via /etc/sudoers and permissions
我希望没有管理员/ root权限的人员组中的用户在不提示输入密码的情况下运行以下脚本。 这是在OSX中。
请注意,/ usr / sbin / serveradmin需要root / sudo特权。
我尝试将以下内容添加到我的/ etc / sudoers中,但是它不起作用。 脚本的权限为755。
%staff ALL=NOPASSWD: /usr/sbin/serveradmin stop smb,/usr/sbin/serveradmin start smb
%staff ALL=NOPASSWD: /bin/sh /opt/scripts/restart-smb
这是shell脚本:
#!/bin/bash
#
# This script simply restarts SMB (Samba)
#
echo "Stopping SMB..."
/usr/sbin/serveradmin stop smb
echo "Pausing for 30 seconds..."
/bin/sleep 30
echo "Starting SMB..."
/usr/sbin/serveradmin start smb
echo "Script complete!"
您的想法,建议深表感谢!
担
警告在使用/ etc / sudoers文件管理用户特权和权限时,我将 Ubuntu 崩溃了 。
无法再正常登录。 我在一行中#和%字符之间缺少一个简单空格而导致解析错误,我错误地注释了#%sudo ALL = NOPASSWD:/pathtoscripts/script.sh。 我必须通过再次安装hardrive文件系统的install / liveCD来恢复它,将原始文件放回原处,并卸下卷以记录更改。
由于上述原因,我不建议您首先使用此方法,因为它会修改/ etc / sudoers特权关键文件。 除非以下情况,否则请选择第一个可用的替代品:
您可以在PC之外很好地备份数据
您不怕冒险修理/重新安装系统
您知道/ etc / sudoers文件的正确语法 ,尝试和分析错误可能会花费您很多时间和/或努力/崩溃...
阅读其他文章,我设法使其在我的系统上正常工作,并通过一个组管理权限:
我创建了群组mygroup
sudo groupadd mygroup
我添加了用户myuser,它将执行脚本
sudo usermod -a -G mygroup myuser
我在/ 末尾添加等/ sudoers文件中的条目,否则特权由前面的行覆盖(小心语法)
%mygroup ALL=NOPASSWD: /mypath/to/myscripts/myscript.sh
上面的脚本myscript.sh必须具有执行权限
sudo ugo+x /mypath/to/myscripts/myscript.sh
然后,用户myuser可以直接启动此脚本,如下所示,不再提示输入密码
sudo /mypath/to/myscripts/myscript.sh
或者,可以用相同的方式在另一个脚本中启动脚本
我发现的另一种方式,而不创建组,添加到/ etc / sudoers文件(在文件的结尾 )行:
%sudo ALL=NOPASSWD: /mypath/to/myscripts/myscript.sh
如果脚本必须只由少数几个现有用户为MyUser1推出,MyUser2 ...,依此总是可以只添加到/ etc / sudoers文件(在文件的结尾 )的线路:
myuser1 ALL=(ALL) NOPASSWD: /mypath/to/myscripts/myscript.sh
myuser2 ALL=(ALL) NOPASSWD: /mypath/to/myscripts/myscript.sh
我可以通过将以下内容添加到我的/ etc / sudoers文件中来使其工作:
%staff ALL=/opt/scripts/restart-smb
然后当然使脚本可执行(我忘记了)。
仍然需要密码(可以),但是可以。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.