GNU/Linux >> Tutoriels Linux >  >> Linux

Que signifie chmod 777

Vous essayez de résoudre un problème d'autorisation avec votre serveur Web et avez trouvé des informations sur Internet, indiquant que vous devez récursivement chmod 777 l'annuaire Web. Avant de faire cela, assurez-vous de comprendre ce que fait chmod -R 777 faire, et pourquoi vous ne devriez jamais définir les autorisations sur 777.

Cet article explique le modèle d'autorisations Linux de base et la signification des nombres correspondant aux autorisations.

Comprendre les autorisations de fichiers Linux #

Sous Linux, l'accès aux fichiers est contrôlé par le système d'exploitation à l'aide des autorisations, des attributs et de la propriété des fichiers. Comprendre le modèle d'autorisations du système de fichiers Linux vous permet de restreindre l'accès aux fichiers et répertoires uniquement aux utilisateurs et processus autorisés et de rendre votre système plus sécurisé.

Chaque fichier appartient à un utilisateur particulier et à un groupe et se voit attribuer des droits d'accès pour trois catégories d'utilisateurs différentes :

  • Le propriétaire du fichier.
  • Les membres du groupe.
  • Autres (tous les autres).

Il existe trois types d'autorisations de fichiers qui s'appliquent à chaque classe d'utilisateurs et vous permettent de spécifier quels utilisateurs sont autorisés à lire le fichier, à écrire dans le fichier ou à exécuter le fichier. Les mêmes attributs d'autorisation s'appliquent aux fichiers et aux répertoires avec une signification différente :

  • L'autorisation de lecture.
    • Le fichier est lisible. Par exemple, lorsque l'autorisation de lecture est définie, l'utilisateur peut ouvrir le fichier dans un éditeur de texte.
    • Le contenu du répertoire peut être visualisé. L'utilisateur peut lister les fichiers à l'intérieur du répertoire avec le ls commande.
  • L'autorisation d'écriture.
    • Le fichier peut être changé ou modifié.
    • Le contenu du répertoire peut être modifié. L'utilisateur peut créer de nouveaux fichiers, supprimer des fichiers existants, déplacer des fichiers, renommer des fichiers, etc.
  • La permission d'exécution.
    • Le fichier peut être exécuté.
    • Le répertoire peut être saisi à l'aide du cd commande.

Les autorisations de fichiers peuvent être consultées à l'aide de ls commande. Voici un exemple :

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

Le premier caractère indique le type de fichier. Il peut s'agir d'un fichier normal (- ), répertoire (d ), un lien symbolique (l ), ou tout autre type de fichier spécial.

Les neuf caractères suivants représentent les autorisations de fichier, trois triplets de trois caractères chacun. Le premier triplet affiche les autorisations du propriétaire, le second les autorisations du groupe et le dernier triplet affiche les autorisations de tous les autres.

Numéro d'autorisation #

L'autorisation de fichier peut être représentée sous un format numérique ou symbolique. Dans cet article, nous nous concentrerons sur le format numérique.

Le numéro d'autorisation peut être composé de trois ou quatre chiffres, allant de 0 à 7.

Lorsqu'un nombre à 3 chiffres est utilisé, le premier chiffre représente les autorisations du propriétaire du fichier, le second le groupe du fichier et le dernier tous les autres utilisateurs.

Les autorisations d'écriture, de lecture et d'exécution ont la valeur numérique suivante :

  • r (lire) =4
  • w (écrire) =2
  • x (exécuter) =1
  • aucune autorisation =0

Le chiffre des autorisations d'une classe d'utilisateurs spécifique est la somme des valeurs des autorisations pour cette classe.

Chaque chiffre du numéro d'autorisation peut être une somme de 4, 2, 1 et 0 :

  • 0 (0+0+0) – Aucune autorisation.
  • 1 (0+0+1) – Autorisation d'exécution uniquement.
  • 2 (0+2+0) – Autorisation d'écriture uniquement.
  • 3 (0+2+1) – Autorisations d'écriture et d'exécution.
  • 4 (4+0+0) – Autorisation de lecture uniquement.
  • 5 (4+0+1) :autorisation de lecture et d'exécution.
  • 6 (4+2+0) :autorisations de lecture et d'écriture.
  • 7 (4+2+1) :autorisation de lecture, d'écriture et d'exécution.

Par exemple, si le numéro d'autorisation est défini sur 750, cela signifie que le propriétaire du fichier dispose des autorisations de lecture, d'écriture et d'exécution, que le groupe du fichier dispose des autorisations de lecture et d'exécution et que les autres utilisateurs n'ont aucune autorisation :

  • Propriétaire :rwx=4+2+1=7
  • Groupe :r-x=4+0+1=5
  • Autres :r-x=0+0+0=0

Lorsque le nombre à 4 chiffres est utilisé, le premier chiffre a la signification suivante :

  • setuid=4
  • setgid=2
  • collant=1
  • aucune modification =0

Les trois chiffres suivants ont la même signification que lors de l'utilisation d'un nombre à 3 chiffres. Si le premier chiffre est 0, il peut être omis et le mode peut être représenté par 3 chiffres. Le mode numérique 0755 est identique à 755 .

Pour afficher les autorisations du fichier dans la notation numérique (octal), utilisez le stat commande :

stat -c "%a" filename
644

Ne jamais utiliser chmod 777 #

Définir des autorisations 777 sur un fichier ou un répertoire signifie qu'il sera lisible, inscriptible et exécutable par tous les utilisateurs et peut poser un énorme risque de sécurité.

Par exemple, si vous modifiez de manière récursive les autorisations de tous les fichiers et sous-répertoires sous /var/www répertoire vers 777 , tout utilisateur du système pourra créer, supprimer ou modifier des fichiers dans ce répertoire.

Si vous rencontrez des problèmes d'autorisation avec votre serveur Web, au lieu de définir de manière récursive l'autorisation sur 777 , attribuez la propriété du fichier à l'utilisateur exécutant l'application et définissez les autorisations du fichier sur 644 et les autorisations du répertoire à 755 .

La propriété du fichier peut être modifiée à l'aide du chown commande et permissions avec le chmod commande.

Disons que vous avez une application PHP sur votre serveur en cours d'exécution en tant qu'utilisateur "linuxize". Pour définir les autorisations correctes, vous exécuteriez :

chown -R linuxize: /var/wwwfind /var/www -type d -exec chmod 755 {} \;find /var/www -type f -exec chmod 644 {} \;

Seul root, le propriétaire du fichier ou l'utilisateur disposant des privilèges sudo peut modifier les autorisations d'un fichier. Soyez très prudent lorsque vous utilisez chmod , en particulier lors de la modification récursive des autorisations.

Conclusion #

Si vous gérez un système Linux, il est essentiel de savoir comment fonctionnent les autorisations Linux.

Vous ne devez jamais définir 777 (rwxrwxrwx ) autorisations fichiers et répertoires autorisations. 777 signifie que n'importe qui peut faire n'importe quoi avec ces fichiers.

N'hésitez pas à laisser un commentaire si vous avez des questions.


Linux
  1. Que signifie cet avertissement ?

  2. Que signifie - dans cette commande Linux ?

  3. Que fait si [[ $ ? -ne 0 ]] ; signifie en .ksh

  4. Qu'est-ce que cela signifie par #define X X ?

  5. Que signifie tuer -3 ?

Que signifie "-" (double tiret) ?

Qu'est-ce que cela signifie d'être "compatible sh" ?

Que signifie `:-` dans un script shell ?

Que signifie l'attribut "s" dans les autorisations de fichiers ? ?

Pas de variable DISPLAY X11 - qu'est-ce que cela signifie ?

Pourquoi chmod -R 777 / destructif ?