我正在尝试将一些bash脚本集成到一个网站管理区域。
我正在Ubuntu服务器上运行apache。赋予apache (www-data) sudo权限远非理想,所以我不会这么做。但是,可以为非sudo用户指定sudo访问。
出于许多安全原因,apache必须没有,或者在最坏的情况下,严重限制sudo访问.因此,一个合适的工作是指定www-data可以完成的特定脚本。
为了控制这一点,我使用etc/sudoers.tmp创建和编辑了visudo。
我在var/www/html/scripts中添加了一个名为sudoscripts.sh的测试脚本。
这很简单:
#!/bin/sh
sudo whoami因此,作为一个测试,我添加了一行:
www-data ALL=(ALL) NOPASSWD: ALL
这如预期的那样起作用。但是,这允许访问任何地方的所有脚本。
然后,我将其替换为:
www-data ALL=(ALL) NOPASSWD: /var/www/html/scripts/sudoscript.sh
这会导致错误(在我的应用程序异常中):
sudo: no tty present and no askpass program specified
..。不能使用sudo。
有人能指出我做错了什么吗?我看过几个例子/其他堆栈溢出线程,它们要么不匹配,要么没有回答。
以下是完整的文件:
Defaults env_reset
Defaults exempt_group=sudo
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL) NOPASSWD:ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
# Apache using /var/www/html/scripts
# (doesnt work)
www-data ALL=(ALL) NOPASSWD: /var/www/html/scripts/sudoscript.sh
# (works)
# www-data ALL=(ALL) NOPASSWD: ALL谢谢
发布于 2017-11-10 10:56:32
问题是,您没有使用sudo运行输入到sudoers文件中的命令。
您正在直接从您的You服务器运行/var/www/html/scripts/sudoscript.sh。然后脚本用whoami调用sudo,但sudoers文件中不允许whoami。您需要在sudoers中设置whoami,而不是脚本位置。
当然,这没什么意义。
更有意义的是:
/var/www/html/script/sudoscript.sh
#!/bin/sh
whoami/etc/sudoers
www-data ALL=(ALL) NOPASSWD: /var/www/html/scripts/sudoscript.sh然后在with服务器上使用sudo运行脚本:
sudo /var/www/html/scripts/sudoscript.sh发布于 2017-11-10 10:40:47
在签证或投稿中对要求进行评论!在它面前,就像:
缺省值!请求
https://serverfault.com/questions/882824
复制相似问题