使用 sudo 时接收权限被拒绝

使用 sudo 时接收权限被拒绝

我已将以下单行添加到/etc/sudoersvia 命令visudo

www-data ALL=(ALL) NOPASSWD: /var/www/db_backup.sh

通过执行命令www-data后:

sudo -u www-data /var/www/db_backup.sh

我收到以下消息:

sudo: unable to execute /var/www/db_backup.sh: Permission denied

不确定为什么会这样,因为我过去曾使用过相同的程序,没有出现问题。一定有什么东西是我忽略的。有什么向任何人指出的吗?我的/etc/sudoers文件如下:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL


www-data ALL=(ALL) NOPASSWD: /var/www/db_backup.sh



# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

另外,作为旁注,当尝试sudo /var/www/db_backup.sh从 www-data 下运行的 php 进程中运行命令时,会收到以下消息(尽管我认为这只是由于未从 sudoers 文件中获取权限的问题?):

sudo: no tty present and no askpass program specified

编辑

ls -al /var/www/db_backup.sh

产生以下结果:

-rwxrwx--- 1 root root 523 Jan 7 2019 /var/www/db_backup.sh

答案1

正如评论中所述,其他用户无法执行您的脚本。因此,如上所述,更改用户所有权和组所有权,然后将其标记为可执行文件:chown www-data:www-data /var/www/db_backup.sh && chmod +x /var/www/db_backup.sh。关于你的第二个问题,应该单独询问,但无论如何,在不确切知道脚本包含什么内容的情况下,很难说出哪里出了问题。

相关内容