我希望员工组中没有admin / 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!"
您的想法,建议最受赞赏!
丹
答案 0 :(得分:6)
警告在使用管理用户权限和权限的/ etc / sudoers文件时,我 CRASHED Ubuntu。
无法正常登录。我得到一个解析错误来自一行中#和%字符之间缺少的简单空格我错误地评论了#%sudo ALL = NOPASSWD:/pathtoscripts/script.sh。 我必须使用install / liveCD再次安装hardrive文件系统来恢复它,将原始文件放回原位并卸下卷以记录更改。
由于上述原因,我首先不推荐这种方法,因为它修改了/ etc / sudoers权限关键文件。选择第一个可用的替代方案,除非:
您可以在PC外备份好数据
您不怕冒险修复/重新安装系统
你知道/ etc / sudoers文件的正确的SYNTAX ,试验和解析错误可能会花费你很多时间和/或努力/崩溃......
阅读其他帖子,我设法让它在我的系统上运行,通过组管理权限:
我创建了群组mygroup
sudo groupadd mygroup
我添加了将执行脚本的用户myuser
sudo usermod -a -G mygroup myuser
我在/ etc / sudoers的 END 添加了该条目,否则该特权被前面的行覆盖(注意语法)
%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文件(在文件的 END ):
%sudo ALL=NOPASSWD: /mypath/to/myscripts/myscript.sh
如果脚本只能由少数现有用户myuser1,myuser2启动,则始终只能添加到/ etc / sudoers(文件的 END )行: / p>
myuser1 ALL=(ALL) NOPASSWD: /mypath/to/myscripts/myscript.sh
myuser2 ALL=(ALL) NOPASSWD: /mypath/to/myscripts/myscript.sh
答案 1 :(得分:0)
我能够通过在/ etc / sudoers文件中添加以下内容来完成这项工作:
%staff ALL=/opt/scripts/restart-smb
然后当然使脚本可执行(我忘记了)。
仍然需要密码(没关系),但正在工作。