Question PHP exec () a une erreur d'autorisation d'écriture malgré le privilège d'écriture


Je cours 7.0.28-0ubuntu0.16.04.1, sous LAMP, sur deux Ubuntu 16.04. Le code C, pour ouvrir le fichier à écrire est:

 #define ERROR_OPENING_FILE -4

 fprintf(stderr, "Open output file: /var/www/dropbox/candidates_results.lst.");
 if (!(fpOutputFile=fopen("/var/www/dropbox/candidates_results.lst", "w"))){
       perror("Error opening output file: ");
       throw ERROR_OPENING_FILE;
 }

J'appelle l'exécutable, à partir de PHP, avec les éléments suivants.

    $program="/var/www/executables/programName ";
    $inFile="/var/www/dropbox/candidates.lst";
    $str=$program . " -i " . $inFile;
    $Result=exec($str, $output, $return);

Après avoir rafraîchi la page Web, je vais sur le shell Linux et saisis

cat /var/log/apache2/error.log

Cela revient

Open output file: /var/www/dropbox/candidates_results.lst.
Error opening output file: : Permission denied
terminate called after throwing an instance of 'int'
Aborted (core dumped)

Quand j'entre

ls -l /var/www/dropbox/candidates_results.lst

Je reçois

-rw-rw-r-- 1 ubuntu www 107 May 20 11:40 /var/www/dropbox/candidates_results.lst   

Le problème disparaît si j'entre

sudo chmod o+w /var/www/dropbox/candidates_results.lst

donc la longue liste devient

-rw-rw-rw- 1 ubuntu www 107 May 20 11:40 /var/www/dropbox/candidates_results.lst

Cependant, www-data est membre du groupe www

 $ grep '^www' /etc/group
 www-data:x:33:
 www:x:1001:ubuntu

Il semble donc que www-data ait des autorisations de groupe. Je ne vois pas pourquoi j'obtiens l'erreur d'écriture après avoir entré

sudo chmod o-w /var/www/dropbox/candidates_results.lst

1
2018-05-20 12:33


origine




Réponses:


$ grep '^www' /etc/group
  www-data:x:33:
  www:x:1001:ubuntu

Cela montre clairement que www-data n'est pas membre du groupe www. Seulement ubuntu est membre de www groupe.

Courir

sudo usermod -a -G www www-data

ajouter www-data à www-grouper et redémarrer le serveur Web.


3
2018-05-20 13:20



Ça a marché! Merci beaucoup! - OtagoHarbour