Eu tenho um script PHP que contém um shell_exec()
e o comando que ele executa normalmente requer o sudo. Eu editei os sudoers com visudo para conter o seguinte:
www-data ALL = NOPASSWD: /var/root/node/npm/node_modules/less/
%users ALL = NOPASSWD: /var/root/node/npm/node_modules/less/
Eu suspeito que ou deveria funcionar, mas eu fui com a abordagem de cinto e suspensórios para ter certeza.
Estou editando etc / sudoers com o vim, então depois de adicionar essas linhas, eu faço: xe tudo funciona. Meu script PHP faz o que é suposto ... por cerca de 10 a 15 minutos. Então o script pára de funcionar. Especificamente, o shell_exec()
pára de funcionar.
Se eu voltar a sudo visudo
, minhas novas linhas ainda estarão lá. Mas somente quando eu salvá-lo novamente o script começa a funcionar novamente.
Alguém pode me dizer por que isso pode estar acontecendo? Eu tenho dois palpites que não são muito bons:
- Existe algum período de carência que começa quando eu
sudo visudo
e é isso que permite que meu script funcione (mas apenas até que expire).
- Os novos dados em etc / sudoers estão hospedados no sudoers.tmp (o "arquivo de bloqueio") ...
Nenhum destes se soma a mim.
EDITAR:
Acho que estou usando o nome de usuário incorreto ... Parece que para o MAMP, o usuário do apache é realmente meu usuário (não o www-data). Eu sei disso porque adicionei isso ao meu script PHP: echo = shell_exec("whoami");
Meu nome de usuário aparece: Emerson
. Então isso significa que eu devo adicionar Emerson ALL = NOPASSWD: /var/root/note/npm/node_modules/less/bin/lessc
ao meu arquivo sudoers?
EDITAR:
Eu tenho que trabalhar com isso no meu arquivo sudoers. Emerson ALL=(ALL) NOPASSWD: ALL
Funciona, mas não acho que seja assim. Além de um monte de redundância, também é muito permissivo. Deixei todas as bobagens para que você possa ver o que eu tenho atualmente.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
Defaults env_reset
Defaults env_keep += "BLOCKSIZE"
Defaults env_keep += "COLORFGBG COLORTERM"
Defaults env_keep += "__CF_USER_TEXT_ENCODING"
Defaults env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
Defaults env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
Defaults env_keep += "LINES COLUMNS"
Defaults env_keep += "LSCOLORS"
Defaults env_keep += "SSH_AUTH_SOCK"
Defaults env_keep += "TZ"
Defaults env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults env_keep += "EDITOR VISUAL"
Defaults !requiretty
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
Emerson ALL=(ALL) NOPASSWD: ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
#Allow PHP to compile .less files
www-data ALL = NOPASSWD: /var/root/node/npm/node_modules/less/bin/lessc
%users ALL = NOPASSWD: /var/root/node/npm/node_modules/less/bin/lessc
Emerson ALL =(ALL) NOPASSWD: /var/root/node/npm/node_modules/less/bin/lessc
apache ALL =(ALL) NOPASSWD: /var/root/node/npm/node_modules/less/bin/lessc