sudoers 与其他用户和冒号“:”字符

sudoers 与其他用户和冒号“:”字符

我需要一个 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*

它应该接受带有或不带有参数的命令

相关内容