Eu resolvi: não é o suficiente para voltar ao seu usuário / root, você precisa sair da sessão ssh e reabri-la para carregar tudo o que é necessário para o Visudo funcionar.
Eu tenho uma máquina Ubuntu para testes de selênio sem cabeça.
Eu gero um script python em /var/www/tmp/random123name.py via PHP e executo-os. O script funciona quando executado a partir do usuário da linha de comando, falha quando executado a partir da web (apache www-data: usuário www-data).
O script chama alguns módulos do sistema / python:
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from time import sleep, strftime
import os, json
from pyvirtualdisplay import Display
Este código retorna 1:
$python = "sudo /usr/bin/python /var/www/tmp/random123name.py";
exec($python, $output, $return);
echo "OUT<pre>".print_r($output,1)."</pre>"; #returns empty
echo "RET<pre>".print_r($return,1)."</pre>"; #returns 1
Eu modifiquei o / etc / sudoers dessa maneira, sem sorte:
www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/python
Eu também tentei
www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/python /var/www/tmp/
adicionou www-data ao grupo de discagem e algumas outras tentativas. Obrigado pelo seu apoio.
Eu resolvi: não é o suficiente para voltar ao seu usuário / root, você precisa sair da sessão ssh e reabri-la para carregar tudo o que é necessário para o Visudo funcionar.
Como você mesmo descobriu, as alterações em sudoers
não são aplicadas a sessões em execução, apenas a novas sessões. Então você precisa fazer logout e login novamente para ver.
Mas, o que é mais importante, você não precisa de sudo
para essa finalidade,
e permitir que o usuário www-data
execute python
como root
sem senha é extremamente assustador. Certamente há uma maneira de fazer seu script funcionar sem precisar de root
privileges, como um usuário comum, e eu recomendo strongmente que você tente descobrir isso, em vez de recorrer a sudo
para esse propósito.