J'utilise Linux 12.04, Apache et php y sont installés.Je veux accéder à un fichier texte dans/root/folder.Je suis vraiment confondu avec les permissions.Le script php que j'utilise
<?php
$file = fopen("/root/cr.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
{
echo fgets($file). "<br>";
}
fclose($file);
?>
Ce script peut accéder au dossier fichier/var/www mais pas au fichier /root/ip.txt. S'il vous plaît aider et expliquer étape par étape possible.
J'oublierai les conséquences de cette opération pour la sécurité et je passerai aux choses sérieuses:
Si vous avez fait ls -l /var/www
et ls -l /root
, vous auriez remarqué que les deux ont des autorisations différentes:
$ ls -l /root/cr.txt
total 2
-rw-r----- 1 root root 0 Jul 9 01:28 cr.txt
$ ls -l /var/www
total 2
-rw-r--r-- 1 www-data www-data 0 Jul 9 01:28 somefile
Le /root
n'est lisible que par root
, tandis que /var/www
est lisible par l'utilisateur www-data
. Maintenant, si vous vérifiez le processus Apache, vous remarquerez qu'il est exécuté avec l'utilisateur www-data
.
$ ps aux | grep Apache www-data 5133 0,0 0,2 6512 1208? R + 10:04 0:00 Apache
Vous essayez maintenant de faire fonctionner Apache avec l'utilisateur www-data
en lecture du fichier. Vous pouvez prendre trois mesures:
Déplacez le fichier vers /var/www
et modifiez ses autorisations pour que les utilisateurs de www-data
puissent le lire.
mv /root/cr.txt /var/www/
chown www-data:www-data /var/www/cr.txt
C'est la méthode préférable.
Créez un lien symbolique vers le fichier dans le répertoire /var/www
:
ln -s /root/cr.txt /var/www/
Cela ne garantit pas que votre fichier est lu, dans certains cas.
Ceci est dangereux et ne devrait pas être fait! Ajoutez l'utilisateur www-data
au groupe root
ou changez le propriétaire du fichier pour qu'il puisse être lu par www-data
utilisateurs :
chown :www-data /root/cr.txt
## Or
Sudo adduser www-data root
Cela ne devrait pas être fait si vous ne comprenez pas les risques!
Le fichier est-il lisible par des utilisateurs autres que root? Essayez d'ajouter un accès en lecture pour ALL.
Sudo chmod a+r /root/cr.txt