Je vais essayer de comprendre la raison sous-jacente pourquoi il est 777, plutôt que aaa, ou 999.
Rappelez-vous que les autorisations sont au format suivant:
u g o
rwx rwx rwx
où u = utilisateur, g = groupe, o = autre.
Maintenant, imaginez que vous représentez chacun de ces groupes en tant que binaire. 1 est vrai, 0 est faux.
Si vous souhaitez donner un accès complet à tout le monde, vous devez attribuer les autorisations suivantes en binaire:
u g o
rwx rwx rwx
111 111 111
Maintenant, si vous connaissez le binaire, vous réaliserez que lorsque vous convertissez 111
de binaire en décimal, vous obtenez 7
.
Ainsi, vous pouvez représenter un accès complet en tant que 777
.
Remarque: Nous convertissons vraiment du binaire en octal. Voir la modification ci-dessous.
Cela fonctionne également pour tous les autres modes d’accès.
Par exemple, nous pouvons facilement déterminer ce que 555
signifie en convertissant chaque 5
en binaire et en l'écrivant dans le format ci-dessus. 5
en binaire est 101
, nous avons donc les autorisations suivantes:
u g o
r-x r-x r-x
101 101 101
5 5 5
De même, si nous voulons accorder toutes les autorisations à l'utilisateur, mais autoriser uniquement d'autres personnes à lire, nous pouvons trouver une représentation numérique.
u g o
rwx r-- r--
111 100 100
7 4 4
Maintenant, nous savons que 111
en binaire est 7
en décimal et que 100
en binaire est 4
en décimal. Ainsi, les autorisations seront 744
.
Modifier:
Techniquement, comme le soulignent @ LưuVĩnhPhúc et @Braiam, nous passons de binaire à octal, comme décrit ci-dessous. Cependant, les représentations décimales et octales des nombres & lt; 8 sont les mêmes, donc pour les nombres binaires avec 3 chiffres ou moins, les représentations décimales et octales sont les mêmes.
Lorsqu'ils sont représentés par des nombres octaux, plutôt que par division en groupes de trois, et effectuant une conversion binaire en décimal sur chaque groupe, vous pouvez regrouper les trois groupes en un seul nombre binaire et les convertir en octal.
Par exemple, voici quelques conversions binaires à octales:
0b111111111 == 0o777
0b101101101 == 0o555
0b111100100 == 0o744
Notez que je préfixe "0b" et "0o" pour faire la distinction entre les nombres binaires et octaux.
Si vous voulez jouer avec cela, ouvrez un terminal, exécutez python
, puis jouez avec les commandes suivantes:
oct(0b111111111)
bin(0o555)
N'oubliez pas d'ajouter "0b" ou "0o" aux nombres pour informer l'ordinateur de la base qui vous intéresse. (Si vous ne le faites pas, la base sera 10.)