/etc/sudoers
viaコマンドに次の1行を追加しました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
。 2番目の質問については別に質問する必要がありますが、とにかくスクリプトに含まれている内容を正確に知らないと、何が間違っているのかを伝えることは困難です。