web-dev-qa-db-fra.com

Pourquoi utiliser `chmod 644` au lieu de` chmod u = rw, go = r, ... `?

Je travaille sur * nix depuis quelques années maintenant, et l'une des choses auxquelles je ne peux pas m'habituer est les autorisations octales dans le code. Y a-t-il une autre raison que la longueur de ligne pour préférer chmod 644 ... plus de chmod u=rw,go=r ...?

PS: je ne cherche pas d'explication sur les autorisations octales. Je sais comment elles fonctionnent, et c'est bien expliqué dans le manuel. Je demande pourquoi l'octal semble être préféré à la forme plus lisible par l'homme.

39
l0b0

L'utilisation des codes octaux a deux avantages auxquels je peux penser, dont aucun n'est énorme:

  1. Ils sont plus courts, plus faciles à taper.
  2. Quelques choses ne les comprennent que si vous les utilisez régulièrement, vous ne vous gratterez pas la tête (ou ne courrez pas vers la documentation) lorsque vous en rencontrerez une. Par exemple, vous devez utiliser octal pour chmod en Perl ou C.

Parfois, des utilitaires vraiment simples ne gèrent pas les versions "conviviales"; en particulier dans les zones utilisateur non GNU.

De plus, certains utilitaires crachent octal. Par exemple, si vous exécutez umask pour voir quel est votre umask actuel, il le crachera en octal (bien qu'en bash, umask -S fait symbolique).

Donc, en bref, je dirais que la seule raison de les préférer est de taper moins de caractères, mais que même si vous choisissez de ne pas les utiliser, vous devez savoir comment ils sont mappés afin que vous puissiez trouver un code octal si vous exécutez dans l'une des choses qui ne fait que l'octal. Mais vous n'avez pas besoin de savoir immédiatement que 5 correspond à rx, il vous suffit de pouvoir le comprendre.

41
derobert

Je suppose que j'utilise l'octal depuis trop longtemps.

7 est rwx (faites n'importe quoi avec lui), 5 est rx (je dois le lire pour l'exécuter), 6 est wr (tout fichier de données que vous devez modifier), 4 est r (nous vous laisserons le regarder), et 0 est - (désolé, rien ici pour voir). Et l'ordre est moi, nous, tout le monde. Ce sont les combinaisons de base.

755 Je peux le changer et l'exécuter, tout le monde peut l'exécuter.

644 Je peux le changer, tout le monde peut le lire.

444 En lecture seule pour tout le monde, nous avons terminé.

500 Je peux l'exécuter, je ne veux pas que ça change, tout le monde s'en va.

Pour moi, c'est court, au point. 9 caractères et une spécification de fichier et continuer.

18
Fiasco Labs

Je n'ai jamais vraiment apprécié la représentation octale, je suis toujours allé droit vers le haut rwxr-xr-x notation car elle me semble plus simple. Cependant, d'après ce que je comprends, la représentation octale existe pour nous faciliter la mémoire (je ne vois pas comment cela fonctionne).

Le seul autre avantage possible que je vois octal apporter à la table est un manque d'ambiguïté. Les 8 configurations de bits d'autorisation différentes sont représentées par un seul numéro distinct, ce qui, j'en suis sûr, aide certaines personnes à mettre accidentellement un w là où elles ne devraient pas avoir.

Malheureusement, j'ai mémorisé ce tableau:

#  r  w  x
0  0  0  0
1  0  0  1
2  0  1  0
3  0  1  1
4  1  0  0
5  1  0  1
6  1  1  0
7  1  1  1
14
n0pe

Je pense que la raison est encore une fois - l'histoire. Au début, les valeurs octales étaient les seules. Les symboles sont venus plus tard.

Je préfère les symboles. Surtout si vous souhaitez modifier les valeurs existantes sans toucher à d'autres parties.

Comme chmod -R u=rwx,g-w+X,o=- faites ça en octal ...

6
Nils

Notez que les modes octaux peuvent supprimer les bits setuid et setgid sur certains systèmes.

Fedora 16:

$ mkdir dir
$ chmod 2775 dir
$ stat -c %a dir
2775
$ chmod 770 dir
$ stat -c %a dir
2770

(le 2 est conservé)

FreeBSD 9:

$ mkdir dir
$ chmod 2775 dir
$ stat -f %Mp%Lp dir
2775
$ chmod 770 dir
$ stat -f %Mp%Lp dir
0770

(le 2 est devenu un 0)

Si vous souhaitez modifier les autorisations d'un fichier ou d'un répertoire, il peut être préférable de simplement spécifier les bits que vous souhaitez modifier (par exemple chmod o= dir ou chmod o-rwx dir dans l'exemple ci-dessus).

3
Mikel

L'histoire explique pourquoi les modes octaux existent, mais je pense que la fonctionnalité est la raison pour laquelle la forme mnémonique existe. Et tous les points sur les autres outils utilisant exclusivement des modes octaux sont parfaitement valables et je pense que vous avez pour les apprendre et les connaître. Néanmoins, je trouve que conservateur les administrateurs ne voient pas la véritable utilité qui vient de la forme mnémonique.

La forme octale, surtout lorsqu'elle est utilisée de manière récursive, tend à forcer les administrateurs à faire des choses stupides. Ou plutôt, la négligence supplémentaire fait que cela devient stupide. Chaque fois que vous parcourez un dossier avec beaucoup de fichiers texte et le jeu de bits x, vous avez une preuve.

Pourquoi quelqu'un définirait-il le bit x comme ça? Parce qu'il est difficile de ne pas le faire sauf si vous utilisez la forme mnémonique pour les modes. Considérez que vous souhaitez réinitialiser les autorisations sur /var/www et vous n'exécutez aucun CGI à l'ancienne, donc le bit x doit être supprimé. Cependant, le bit x sert un autre objectif sur les répertoires. Vous finissez donc par faire quelque chose (comme root) comme:

chmod -R 666 /var/www
find /var/www -type d -exec chmod 777 {} \;

Si, cependant, vous utilisiez la forme mnémonique, vous pourriez lui donner une "recette":

chmod -R a=rwX /var/www

qui est la forme abrégée de chmod -R ugo=rwX /var/www (atteindre le même chemin, mais différent: chmod -R a-x,a+rwX /var/www).

Mais il y a une autre chose plus banale qui ne peut pas être réalisée avec les modes octaux. Vous ne pouvez pas ajuster le masque user ou group ou other individuellement avec la forme octale.

En bref: c'est comme comparer un scalpel (mnémonique) et un couteau de cuisine tranchant (octal) ... mais il faut quand même connaître les bits du mode octal pour d'autres raisons :)

La raison pour laquelle les modes octaux sont toujours préféré, je pense, n'est pas plus typant impliqué dans la forme mnémonique, mais des administrateurs trop conservateurs. Et oui, en 2013, ces administrateurs trop conservateurs existent toujours et sont là pour rester pendant un certain temps.

2
0xC0000022L

Je suggère qu'une raison importante est que la représentation octale correspond étroitement à ce que vous voyez avec ls -l (ou, plutôt, lorsque vous convertissez mentalement entre octal et binaire).

0
Conor O'Neill

Il correspond bien aux paramètres umask, qui sont généralement donnés en écriture octale (en pam ou fstab).

0
Nikodemus RIP

Lorsque vous devez modifier les permissions des fichiers tout le temps, vous appréciez les 3 caractères. La plupart du temps, j'utilise le + ou - versions pour modifier les autorisations.

Par exemple, je crée un nouveau PHP, Python ou un autre script dans mon dossier Apache. chmod a+x est tout ce que je fais pour pouvoir l'exécuter. Je l'ai lu comme "tout plus exécuter". Maintenant je sais que ça va marcher, et je n'avais besoin que de 3 caractères.

D'autres fois, j'utilise 644 et 755 automatiquement. Je pense juste à ça comme 644 signifie un fichier, 755 signifie un script.

0
Brigand