90 votes

Comment puis-je modifier récursivement les permissions des fichiers et des répertoires ?

J'ai installé ubuntu sur mon ordinateur local avec apache / php / mysql.

J'ai maintenant un répertoire dans /var/www - à l'intérieur duquel se trouvent plusieurs de mes projets en cours. Je travaille également avec des logiciels libres (drupal, magento, sugarcrm).

Le problème auquel je suis confronté est de changer la permission des fichiers avec le terminal. Parfois, j'ai besoin de changer les droits d'un dossier entier et de ses sous-dossiers et fichiers. Je dois changer individuellement en utilisant

sudo chmod 777 foldername

Comment puis-je faire cela de manière récursive.

Et pourquoi je dois toujours le faire 777 J'ai essayé. 755 pour les dossiers et 644 pour les fichiers, mais ça ne marchera pas.

121voto

Lekensteyn Points 162346

Il suffit d'ajouter le -R pour modifier récursivement les permissions des fichiers. Par exemple, ajouter récursivement des permissions de lecture et d'écriture pour le propriétaire et le groupe sur foldername :

chmod -R ug+rw foldername

Les permissions seront de type 664 ou 775.

Mettre les permissions à 777 est fortement déconseillé . Vous obtenez des erreurs dans Apache ou dans votre éditeur concernant les permissions parce qu'Apache fonctionne sous un utilisateur différent ( www-data ) que vous.

Si vous voulez écrire à /var/www , ajoutez-vous à la liste des www-data et définir umask+permissions en conséquence.

  • Ajoutez vous à la www-data groupe : sudo adduser $USER www-data
  • Changez la propriété des fichiers dans /var/www : sudo chown -R www-data:www-data /var/www
  • Changez l'umask, pour que les fichiers nouvellement créés par Apache accordent les droits d'écriture au groupe également. Ajoutez umask 007 a /etc/apache2/envvars .
  • Accordez-vous (techniquement, le groupe www-data ) les droits d'écriture : sudo chmod -R g+w /var/www .

30voto

Igor B. Points 365

Force brute :

sudo find foldername -exec chmod a+rwx {} ";"

Qu'est-ce qui ne fonctionne pas ? Soyez plus précis !

sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"

4voto

HenryR Points 3026

Vous pouvez modifier les sous-dossiers et les fichiers sur Nautilus. Comme vous pouvez le voir sur l'image ci-dessous. Afin d'avoir les permissons sur les boutons, vous pouvez activer l'option sur Ubuntu Tweak.

enter image description here

4voto

Brian Childress Points 437

Vous ne devriez pas avoir besoin de 777 pour quoi que ce soit. Dans le pire des cas, vous devrez changer le propriétaire de certains fichiers et répertoires pour l'utilisateur "www-data".

sudo find /var/www -type d -print0 | xargs -0 chmod 755
sudo find /var/www -type f -print0 | xargs -0 chmod 644
sudo find /var/www/some/subset -print0 | xargs -0 chown www-data:www-data

Si vous utilisez la méthode d'appartenance à un groupe de Lekensteyn, changez 755 en 775 et 644 en 664 respectivement ci-dessus, puis forcez l'adhésion au groupe :

sudo find /var/www/some/subset -type d -print0 | xargs -0 chmod g+s

1voto

Matt Hendricks Points 51

Si vous voulez que tous vos fichiers soient lisibles par le monde entier (c'est-à-dire qu'il s'agit juste d'un ensemble statique de fichiers/images HTML), alors utilisez cette commande :

chmod -R a+r <base directory>

Cela va récursivement parcourir tous les fichiers et sous-répertoires et leur ajouter des droits de lecture.

AVERTISSEMENT : Ne faites pas cela pour les fichiers qui sont exécutables ! Seulement les fichiers qui doivent être visibles par tout le monde.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X