GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Comprendre les autorisations Unix et les types de fichiers ?

Je n'ai jamais vraiment compris comment chmod travaillé jusqu'à aujourd'hui. J'ai suivi un tutoriel qui m'a beaucoup expliqué.

Par exemple, j'ai lu que vous aviez trois groupes d'autorisations différents :

  • propriétaire (u )
  • groupe (g )
  • tout le monde (o )

Sur la base de ces trois groupes, je sais maintenant que :

  • Si le fichier appartient à l'utilisateur, les autorisations de l'utilisateur déterminent l'accès.
  • Si le groupe du fichier est le même que le groupe de l'utilisateur, l'autorisation du groupe détermine l'accès.
  • Si l'utilisateur n'est pas le propriétaire du fichier et ne fait pas partie du groupe, l'autre autorisation est utilisée.

J'ai également appris que vous disposez des autorisations suivantes :

  • lire (r )
  • écrire (w )
  • exécuter (x )

J'ai créé un répertoire pour tester mes connaissances nouvellement acquises :

mkdir test

Ensuite j'ai fait quelques tests :

chmod u+rwx test/
# drwx------
chmod g+rx test/
# drwxr-x---
chmod u-x test/
# drw-r-x---

Après m'être amusé pendant un certain temps, je pense que j'ai enfin compris chmod et la façon dont vous définissez l'autorisation à l'aide de cette commande.

Mais…

J'ai encore quelques questions :

  • Que signifie le d au stand de départ ?
  • Quel est le nom et l'utilisation de l'emplacement contenant et quelles autres valeurs peut-il contenir ?
  • Comment puis-je l'activer et le désactiver ?
  • Quelle est la valeur de ce d ? (Comme vous n'avez que 7=4+2+1 7=4+2+1 7=4+2+1)
  • Pourquoi les gens utilisent-ils parfois 0777 ? au lieu de 777 définir leurs autorisations ?

Mais comme je ne devrais pas poser plusieurs questions, je vais essayer de la poser en une seule question.

Dans les systèmes basés sur UNIX comme toutes les distributions Linux, concernant les permissions, que fait la première partie (d ) représentent et à quoi sert cette partie des autorisations ?

Réponse acceptée :

Je vais répondre à vos questions en trois parties :types de fichiers, autorisations et cas d'utilisation pour les différentes formes de chmod .

Types de fichiers

Le premier caractère de ls -l la sortie représente le type de fichier ; d signifie que c'est un répertoire. Il ne peut pas être activé ou désactivé, cela dépend de la façon dont le fichier a été créé. Vous pouvez trouver la liste complète des types de fichiers dans la documentation ls; ceux que vous êtes susceptible de rencontrer sont

  • - :fichier "normal", créé avec n'importe quel programme capable d'écrire un fichier
  • b  :un fichier spécial de bloc, généralement des périphériques de disque ou de partition, peut être créé avec mknod
  • c :fichier spécial caractère, peut aussi être créé avec mknod (voir /dev pour des exemples)
  • d :répertoire, peut être créé avec mkdir
  • l :lien symbolique, peut être créé avec ln -s
  • p :tube nommé, peut être créé avec mkfifo
  • s :socket, peut être créé avec nc -U
  • D :porte, créé par certains processus serveur sur Solaris/openindiana.

Autorisations

chmod 0777 est utilisé pour définir toutes les permissions dans un seul chmod exécution, plutôt que de combiner les changements avec u+ etc. Chacun des quatre chiffres est une valeur octale représentant un ensemble d'autorisations :

  • suid , sgid et "collant" (voir ci-dessous)
  • autorisations utilisateur
  • autorisations de groupe
  • "Autres" autorisations

La valeur octale est calculée comme la somme des autorisations :

  • "lire" vaut 4
  • "écrire" vaut 2
  • "exécuter" vaut 1

Pour le premier chiffre :

  • suid est 4 ; les binaires avec ce bit défini s'exécutent en tant qu'utilisateur propriétaire (généralement root )
  • sgid est 2 ; les binaires avec ce jeu de bits s'exécutent en tant que groupe propriétaire (cela a été utilisé pour les jeux afin que les scores élevés puissent être partagés, mais c'est souvent un risque de sécurité lorsqu'il est combiné avec des vulnérabilités dans les jeux), et les fichiers créés dans des répertoires avec ce jeu de bits appartiennent au groupe propriétaire du répertoire par défaut (c'est pratique pour créer des dossiers partagés)
  • "collant" (ou "suppression restreinte") vaut 1 ; les fichiers dans les répertoires avec ce bit défini ne peuvent être supprimés que par leur propriétaire, le propriétaire du répertoire ou root (voir /tmp pour un exemple courant).
En relation :Linux – la bonne procédure pour remplacer MDM par LightDM sur Linux Mint ?

Voir le chmod page de manuel pour plus de détails. Notez que dans tout cela, j'ignore les autres fonctionnalités de sécurité qui peuvent modifier les autorisations des utilisateurs sur les fichiers (SELinux, fichiers ACL…).

Les bits spéciaux sont gérés différemment selon le type de fichier (fichier normal ou répertoire) et le système sous-jacent. (Ceci est mentionné dans le chmod manpage.) Sur le système que j'ai utilisé pour tester ceci (avec coreutils 8.23 sur un ext4 filesystem, exécutant le noyau Linux 3.16.7-ckt2), le comportement est le suivant. Pour un fichier, les bits spéciaux sont toujours effacés sauf s'ils sont explicitement définis, donc chmod 0777 est équivalent à chmod 777 , et les deux commandes effacent les bits spéciaux et donnent à tout le monde des autorisations complètes sur le fichier. Pour un répertoire, les bits spéciaux ne sont jamais complètement effacés en utilisant la forme numérique à quatre chiffres, donc en fait chmod 0777 est aussi équivalent à chmod 777 mais c'est trompeur car certains des bits spéciaux resteront tels quels. (Une version précédente de cette réponse s'est trompée.) Pour effacer des bits spéciaux sur les répertoires, vous devez utiliser u-s , g-s et/ou o-t explicitement ou spécifiez une valeur numérique négative, donc chmod -7000 effacera tous les bits spéciaux d'un répertoire.

Dans ls -l sortie, suid , sgid et "collant" apparaissent à la place du x entrée :suid est s ou S au lieu du x de l'utilisateur , sgid est s ou S au lieu du x du groupe , et "collant" est t ou T au lieu du x des autres . Une lettre minuscule indique que le bit spécial et le bit exécutable sont activés ; une lettre majuscule indique que seul le bit spécial est activé.

Les différentes formes de chmod

En raison du comportement décrit ci-dessus, l'utilisation des quatre chiffres complets dans chmod peut être déroutant (au moins il s'avère que j'étais confus). C'est utile lorsque vous souhaitez définir des bits spéciaux ainsi que des bits d'autorisation ; sinon les bits sont effacés si vous manipulez un fichier, conservés si vous manipulez un répertoire. Donc chmod 2750 garantit que vous obtiendrez au moins sgid et exactement u=rwx,g=rx,o=; mais chmod 0750 n'effacera pas nécessairement les bits spéciaux.

Utilisation des modes numériques au lieu des commandes textuelles ([ugo][=+-][rwxXst] ) est probablement plus un cas d'habitude et le but de la commande. Une fois que vous êtes habitué à utiliser les modes numériques, il est souvent plus facile de spécifier simplement le mode complet de cette façon ; et il est utile de pouvoir penser aux autorisations en utilisant des modes numériques, car de nombreuses autres commandes peuvent les utiliser (install , mknod …).

Certaines variantes de texte peuvent être utiles :si vous voulez simplement vous assurer qu'un fichier peut être exécuté par n'importe qui, chmod a+x le fera, quelles que soient les autres autorisations. De même, +X ajoute l'autorisation d'exécution uniquement si l'une des autorisations d'exécution est déjà définie ou si le fichier est un répertoire ; cela peut être pratique pour restaurer les autorisations globalement sans avoir à cas particulier les fichiers par rapport aux répertoires. Ainsi, chmod -R ug=rX,u+w,o= équivaut à appliquer chmod -R 750 à tous les répertoires et fichiers exécutables et chmod -R 640 à tous les autres fichiers.


Linux
  1. Bases des autorisations de fichiers Linux

  2. Autorisations Linux :une introduction à chmod

  3. Autorisations de fichiers et sauvegarde ?

  4. Comment activer l'indexation de fichiers et de répertoires apache sous Linux ou UNIX ?

  5. UNIX / Linux :Guide du débutant sur les autorisations de fichiers et de répertoires (umask, chmod, lecture, écriture, exécution)

Comprendre les autorisations de fichiers Linux

Commande Chmod sous Linux (autorisations de fichiers)

Autorisations et propriété des fichiers Linux expliquées avec des exemples

Comprendre les autorisations de fichiers Linux

Commande AWK sous Linux/Unix

Comprendre les autorisations de fichiers de base et la propriété sous Linux