我需要一个 sudoers 才能执行以下命令
sudo -u myAppUser /opt/myapp/bin/myapp.Console.pl Admin::User::Add <some optional parameters>
我创建了一个群组myAppExecGroup
并添加到myTestUser
了该群组
Cmnd_Alias MYAPPADDCMD = /opt/myapp/bin/myapp.Console.pl Admin\:\:User\:\:Add *
%myAppExecGroup ALL= (myAppUser) NOPASSWD: MYAPPADDCMD
作为一个反测试,我尝试了这个简单的重启,效果很好
Cmnd_Alias POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
%myAppExecGroup ALL= (root) NOPASSWD: POWER
也试过这个,但根本不起作用,还要求输入密码
Cmnd_Alias IFCONFIG = /sbin/fdisk --list
%myAppExecGroup ALL= (root) NOPASSWD: IFCONFIG
所以我不清楚我是否普遍缺乏理解或者我是否面临使用问题,从而阻碍了我的要求?
更新1:
该脚本可以模拟上述命名的命令
mkdir -p /opt/myapp/bin/
echo > /opt/myapp/bin/myapp.Console.pl
chmod 755 /opt/myapp/bin/myapp.Console.pl
tee -a /opt/myapp/bin/myapp.Console.pl <<EOF
#!/bin/bash
echo \$@
echo \$USER
EOF
更新2:
如果使用 root 而不是 myAppUser
%myAppExecGroup ALL= (root) NOPASSWD: MYAPPADDCMD
命令执行。但我需要 myAppUser 环境?!?
答案1
我认为 fdisk 的问题在于路径,请尝试which fdisk
检查正确的路径(我在 /usr/sbin/fdisk 下)
您的命令的问题在于 * 之前的空格,通过书写...User\:\:Add *
您暗示可选参数是强制性的,如果您删除空格:
Cmnd_Alias MYAPPADDCMD = /opt/myapp/bin/myapp.Console.pl Admin\:\:User\:\:Add*
它应该接受带有或不带有参数的命令