mbr*_*nyc 1 php bash httpd sudo perl
我正在使用的 PHP 程序 ( LConf ) 使用sudo.
我已允许用户apache运行脚本并使用sudo -u apache /usr/local/LConf/lconf_deploy.sh.
我在lconf_deploy.sh拨打时被提示输入密码/usr/bin/sudo -u icinga /usr/local/LConf/LConfExport.pl -o /etc/icinga/lconf -v,但在此线路之前或之后拨打线路没有问题。
在阅读了很多(在 stackexchange 和互联网上的其他地方)关于在这种情况下该怎么做之后,我已经禁用requiretty并使用NOPASSWD了所有我能想到的会影响这种情况的东西。
# cat /etc/sudoers | grep -v "#"
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
apache ALL = NOPASSWD: /usr/local/LConf/lconf_deploy.sh
apache ALL = NOPASSWD: /usr/bin/sudo -u icinga /usr/local/LConf/LConfExport.pl -o /etc/icinga/lconf -v
apache ALL = NOPASSWD: /usr/local/LConf/LConfExport.pl -o /etc/icinga/lconf -v
icinga ALL = NOPASSWD: /usr/local/LConf/LConfExport.pl -o /etc/icinga/lconf -v
Run Code Online (Sandbox Code Playgroud)
是否可以sudo在已经“ sudoing”的情况下使用 切换用户上下文(或诸如此类)?
如果没有,我该如何解决这个问题?注意/usr/local/LConf/LConfExport.pl必须以用户身份运行icinga。
谢谢,
马特
[参考下面的 mdpc 评论更新]
User_Alias LCONF=apache,icinga
Defaults:LCONF !requiretty
LCONF ALL=(icinga) NOPASSWD: /usr/local/LConf/LconfExport.pl -o /etc/icinga/lconf -v
LCONF ALL= NOPASSWD: /usr/local/LConf/lconf_deploy.sh
Run Code Online (Sandbox Code Playgroud)
执行sudo -u apache /usr/local/LConf/lconf_deploy.sh.仍然提示输入密码
# cat /usr/local/LConf/lconf_deploy.sh
echo start of script
/usr/bin/sudo -u icinga /usr/local/LConf/LConfExport.pl -o /etc/icinga/lconf -v
/etc/init.d/icinga reload
# sudo -u apache /usr/local/LConf/lconf_deploy.sh
start of script
[sudo] password for apache:
Running configuration check.../etc/init.d/icinga: line 111: /var/icinga/icinga.chk: Permission denied
CONFIG ERROR! Reload aborted. See /var/icinga/icinga.chk for details.
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
这一行:
apache ALL = NOPASSWD: /usr/bin/sudo -u icinga /usr/local/LConf/LConfExport.pl -o /etc/icinga/lconf -v
Run Code Online (Sandbox Code Playgroud)
不管用。它会以 apache 的身份调用 sudo,这是不对的。
你可能想要的是:
apache ALL=(icinga) NOPASSWD: /usr/local/LConf/LConfExport.pl -o /etc/icinga/lconf -v
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
805 次 |
| 最近记录: |