web-dev-qa-db-fra.com

Comment résoudre/var/www copier/écrire l'autorisation refusée?

Je suis un débutant en php, mysql. J'ai écrit un script hello.php que je tente de copier dans le répertoire/var/www (et que je veux ouvrir plus tard via le navigateur Web). Le problème avec le même problème est que je ne suis pas autorisé à enregistrer/écrire des fichiers dans/var/www alors que je suis la racine. J'ai essayé d'implémenter les étapes dans this question, mais l'erreur suivante s'affiche lorsque je traite la troisième ligne 

find /var/www/ -type f -exec chmod g+w '{}' ';'
chmod: changing permissions of `/var/www/index.html': Operation not permitted

Je sais que le lien symbolique est également une option. Je voudrais pouvoir écrire/copier des fichiers directement dans le répertoire/var/www /.

Des suggestions sur ce qui ne va pas?

17
shubster

il faut compter sur * les permissions unix, obtenir un accès root, par exemple en tapant

Sudo su
[then type your password]

et essayez de faire ce que vous devez faire

16
Lopoc

Êtes-vous dans un environnement de développement? pourquoi ne pas simplement faire

chown -R user.group /var/www

vous pourrez donc écrire avec votre utilisateur.

13
Gabriel Sosa

Exécuter la commande suivante

Sudo setfacl -R -m u:<user_name>:rwx /var/www

Il va changer les autorisations du répertoire HTML afin que vous puissiez télécharger, télécharger et supprimer les fichiers ou les répertoires

9
Chandra D.P

Avez-vous un fichier dans /var/www appelé hello.php qui a déjà des autorisations? Peut-être que le système ne peut pas remplacer le fichier?

Cependant, l'accès root devrait remplacer tout utilisateur du système. 

Avez-vous essayé d'appliquer des autorisations au dossier www?

Si vous pouvez le faire, essayez ce qui suit:

Sudo chmod -R 777 /var/www

alors fais:

Sudo cp hello.php /var/www

Je ne recommande cela que si vous savez à 100% qu'il est correct de définir des autorisations pour l'ensemble du dossier www. De ce fait, vous exécutez votre propre serveur de production car la plupart des serveurs d’hébergement live/partagés sont configurés de sorte que le dossier www ne se trouve pas dans le dossier/var (mais dans le dossier d’accueil de l’utilisateur). 

Soyez très prudent lorsque vous faites quelque chose avec le préfixe Sudo, vous pouvez sérieusement endommager votre système si vous le faites mal. 

7
Tisch

A rencontré un problème similaire aujourd'hui. Je n'ai pas vu ma solution énumérée ici, alors j'ai pensé partager.

La racine n'a pas pu effacer un fichier.

J'ai fait mes recherches. Il s'avère qu'il y a quelque chose appelé un bit immuable.

# lsattr /path/file
----i-------- /path/file
#

Ce bit en cours de configuration empêche même la racine de le modifier/de le supprimer.

Pour enlever ceci j'ai fait:

# chattr -i /path/file

Après cela, je pourrais récupérer le fichier.

Inversement, il est judicieux de savoir si vous souhaitez empêcher la disparition de quelque chose. 

:)

1
user3277597

Tout d'abord, cela n'a rien à voir avec php. Ceci est un problème d'autorisation Unix. Vous devez vous connecter en tant que superutilisateur (Sudo/su) et taper votre mot de passe, puis essayer cette commande.

$ su
(type password )
\# your command

$ Sudo command
$ (type password)

Cela pourrait également vous aider si vous avez spécifié le système d'exploitation que vous utilisez.

0
meder omuraliev
Sudo cp hello.php /var/www/

Quelle sortie obtenez-vous?

0
phoebus

Il vous suffit d'écrire Sudo au lieu de su.

Ensuite, copiez simplement le fichier PHP dans le var/www/ directory.

Ensuite, accédez au navigateur et écrivez le Host/test.php local ou le nom du fichier .php.

0
arao

Si rien de ce qui précède ne fonctionne, vous pourriez avoir affaire à un système de fichiers vfat. Utilisez "df" pour vérifier.

Voir http://www.charlesmerriam.com/blog/2009/12/operation-not-permitted-and-the-fat-32-system/ pour plus d'informations.

0
Charles Merriam

Tout d’abord, vous devez vous connecter en tant que root, puis aller dans le répertoire/etc et exécuter certaines commandes présentées ci-dessous.

[root@localhost~]# cd /etc
[root@localhost /etc]# vi sudoers

et entrez cette ligne à la fin

kundan ALL=NOPASSWD: ALL

où kundan est le nom d'utilisateur et enregistrez-le. puis essayez de transférer le fichier et d’ajouter Sudo comme préfixe à la commande à exécuter:

Sudo cp hello.txt /home/rahul/program/

où rahul est le deuxième utilisateur du même serveur.

0
Kundan Kumar Saw