/etc/sudoers
via 명령 에 다음 한 줄을 추가했습니다 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
. 두 번째 질문에 대해서는 별도로 질문해야 하지만 어쨌든 스크립트에 포함된 내용을 정확히 알지 못하면 무엇이 잘못되었는지 말하기가 어렵습니다.