80 votes

Comment puis-je obtenir un chmod 777 pour tous les sous-dossiers de /var/www ?

Je fais tourner un serveur web et un serveur FTP, dans lesquels /var/www est lié à /home/user/www .

J'ai mis les deux répertoires à chmod 777 (ce qui n'est pas grave puisque ce n'est qu'un test).

Je peux télécharger des fichiers dans /home/user/www mais à chaque fois que je crée un nouveau répertoire, je dois toujours lancer le programme chmod 777 sur ce dossier.

Sinon, lorsque j'essaie de le parcourir, j'obtiens le message d'erreur suivant

Vous n'avez pas la permission d'accéder à /test/ sur ce serveur.

Y a-t-il un moyen de faire en sorte que tous les sous-dossiers à l'intérieur de /var/www être accessible par n'importe qui ? Ou bien leurs permissions pourraient-elles être automatiquement fixées à 777 ? C'est ennuyeux que je doive taper chmod 777 à chaque fois.

127voto

Dan Points 6405

C'est une mauvaise pratique, mais j'espère que vous ne l'utilisez que pour le développement, ou que vous avez une autre bonne raison. Vous pouvez spécifier les permissions lorsque vous créez un répertoire en utilisant la commande -m option :

mkdir -m 777 dirname

Ou vous pouvez définir les autorisations de manière récursive.

sudo chmod -R 777 /var/www

Avant d'utiliser l'une ou l'autre de ces solutions, demandez-vous vraiment si vous voulez que votre système de fichiers soit aussi accessible.


Modifier : Comme mentionné par Rinzwind, il existe une meilleure façon d'accomplir ce que vous voulez.

Vérifiez quel groupe possède votre /var/www et ajoutez votre utilisateur à ce groupe.

sudo adduser yourusername group

Le groupe est probablement www-data .

Vous pourrez alors fixer vos autorisations à 775.

11voto

Les fichiers et les répertoires sous Unix peuvent avoir trois types de permissions : lecture ( r ), écrire ( w ), et exécuter ( x ). Chaque autorisation peut être on ou off pour chacune des trois catégories d'utilisateurs : le propriétaire du fichier ou du répertoire, les autres personnes appartenant au même groupe que le propriétaire et tous les autres. Pour modifier le mode d'un fichier, utilisez la commande chmod. La forme générale est chmod X@Y fichier1 fichier2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access

7voto

Jose Pla Points 71
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

pour le ftp qui crée tous les fichiers avec des permissions différentes, vous pouvez rechercher l'umask de ftpd, comment ce démon est démarré.

Jetez un coup d'œil à ce site https://linuxaria.com/article/linux-Shell-comprendre les masques avec des exemples

7voto

thomasrutter Points 33791

Annonce de service public :


N'utilisez jamais chmod 777 pour résoudre les problèmes.


  • C'est un risque pour la sécurité si vous exécutez des services accessibles au public, en particulier les applications web (ex : PHP).

    Le modèle de sécurité du système d'exploitation part du principe que de nombreux services (tels que votre serveur serveur web) fonctionnent avec des privilèges réduits, ce qui les empêche de modifier les fichiers. La définition de 777 sur les fichiers brise cette conception sécurisée.

    Un utilisateur distant pourrait écrire ou télécharger des fichiers, puis tromper le serveur (ou un autre processus sur votre système) pour qu'il les lise ou les exécute. Les scripts ou les logiciels peuvent avoir des failles qui permettent cela. Il est très difficile d'être sûr d'avoir verrouillé toutes les façons dont cela pourrait se produire s'il existe des répertoires inscriptibles dans le monde.

  • Utilisé dans certains répertoires système (/usr, /etc, /var, etc.), il peut casser votre système de manière surprenante.

    Certains fichiers système essentiels nécessitent des autorisations spéciales, telles que les autorisations setuid/setgid, pour pouvoir être exécutés. Par exemple, sudo. Évitez de modifier les autorisations de fichiers sur les répertoires et les fichiers mis en place par le système lui-même.

  • Il n'y a aucun moyen de l'annuler et de récupérer toutes les anciennes permissions.

    En d'autres termes, si vous aviez des fichiers et des dossiers avec des autorisations différentes auparavant, il n'y a aucun moyen de revenir à ces autorisations spécifiques - seulement de les changer toutes en la même chose, ce qui peut perdre tous les paramètres d'autorisation spécifiques qui étaient nécessaires sur des fichiers spécifiques.

  • Il y a toujours un moyen plus approprié d'atteindre ce que vous voulez atteindre.

La configuration par défaut d'Ubuntu (et d'autres systèmes d'exploitation) consiste à exécuter le serveur web en tant qu'utilisateur non privilégié et à faire en sorte que les fichiers du site web soient accessibles à partir d'un ordinateur. lisible dans le monde entier est un choix sûr et raisonnable et, dans un souci de cohérence, ne devrait pas être modifié sauf si cela est nécessaire. Ainsi, pour s'assurer que le processus serveur non privilégié puisse lire les fichiers de votre site web, ceux-ci devront être lisibles par tous.

Donner la permission d'écrire le monde est bien plus que ce que vous devez faire.

Lorsque vous cherchez à savoir pourquoi le processus du serveur web ne peut pas lire vos fichiers, rappelez-vous que non seulement les fichiers eux-mêmes doivent être lisibles par le monde entier (par exemple, 644), mais que leurs répertoires parents doivent être lisibles et traversables par le monde entier (par exemple, 755). Définissez votre répertoire personnel à quelque chose comme 755, ou si vous ne voulez pas que votre répertoire personnel soit lisible par tous, déplacez votre répertoire www en dehors de votre domicile dans un endroit comme /var/www ou /srv).

Remarque sur le fait de rendre les fichiers accessibles en écriture :

De temps en temps, vous avez besoin que votre serveur web soit capable d'écrire dans certains fichiers. Pour ce faire, assurez-vous de n'autoriser l'écriture que sur les fichiers spécifiques pour lesquels vous voulez donner cette autorisation, et il est encore préférable d'utiliser la propriété de groupe et le bit d'écriture de groupe pour donner cette autorisation qui les rend accessibles à tous.

2voto

Amir Khalil Points 71

Si vous souhaitez copier les permissions et/ou la propriété d'un autre fichier dont vous êtes satisfait, vous pouvez le faire en utilisant sudo chmod --reference=chemin/vers/fichier/vers/référence chemin/vers/fichier/vers/changement de permissions/vers.

Et vous pouvez faire la même chose pour la propriété des fichiers.

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