Dan*_*Dan 1 macos shell sudoers
我希望员工组中没有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
Run Code Online (Sandbox Code Playgroud)
这是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!"
Run Code Online (Sandbox Code Playgroud)
您的想法,建议最受赞赏!
担
小智 6
警告在使用管理用户权限和权限的/ etc/sudoers文件时,我崩溃了 Ubuntu.
正常登录不再可能.我得到一个解析错误来自一行中#和%字符之间缺少的简单空格我错误地评论了#%sudo ALL = NOPASSWD:/pathtoscripts/script.sh.我必须使用install/liveCD再次安装hardrive文件系统来恢复它,将原始文件放回原位并卸下卷以记录更改.
由于上述原因,我不会首先推荐这种方法,因为它修改了/ etc/sudoers权限关键文件.除非:
您可以在PC外部备份好数据
您不怕冒险修复/重新安装系统
你知道/ etc/sudoers文件的正确语法,试验和解析错误可能会花费你很多时间和/或努力/崩溃...
阅读其他帖子,我设法让它在我的系统上运行,通过组管理权限:
我创建了组mygroup
sudo groupadd mygroup
Run Code Online (Sandbox Code Playgroud)
我添加了将执行脚本的用户myuser
sudo usermod -a -G mygroup myuser
Run Code Online (Sandbox Code Playgroud)
我在/ etc/sudoers 的END处添加了条目,否则特权会被前面的行覆盖(注意语法)
%mygroup ALL=NOPASSWD: /mypath/to/myscripts/myscript.sh
Run Code Online (Sandbox Code Playgroud)
上面的脚本myscript.sh必须具有执行权限
sudo ugo+x /mypath/to/myscripts/myscript.sh
Run Code Online (Sandbox Code Playgroud)
然后,用户myuser可以直接启动此脚本,如下所示,不再提示输入密码
sudo /mypath/to/myscripts/myscript.sh
Run Code Online (Sandbox Code Playgroud)
或者,脚本可以以相同的方式在另一个脚本中启动
我找到了另一种没有创建组的方法,添加到/ etc/sudoers文件(在文件的END)行:
%sudo ALL=NOPASSWD: /mypath/to/myscripts/myscript.sh
Run Code Online (Sandbox Code Playgroud)
如果脚本只能由少数现有用户myuser1,myuser2启动,则始终只能添加到/ etc/sudoers(在文件的END处)行:
myuser1 ALL=(ALL) NOPASSWD: /mypath/to/myscripts/myscript.sh
myuser2 ALL=(ALL) NOPASSWD: /mypath/to/myscripts/myscript.sh
Run Code Online (Sandbox Code Playgroud)