繁体   English   中英

允许用户通过/ etc / sudoers和权限运行脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM