Je vais essayer de parler de la raison sous-jacente pour laquelle il s’agit du 777, plutôt que de l’aa ou du 999.
N'oubliez pas 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ésentiez chacun de ces groupes sous forme binaire. 1 est vrai, 0 est faux.
Si vous voulez 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
du binaire en décimal, vous obtenez 7
.
Ainsi, vous pouvez représenter un accès complet en tant que 777
.
Note: Nous convertissons vraiment du binaire en octal. Voir l'édition ci-dessous.
Cela fonctionne également pour tous les autres modes d'accès.
Par exemple, nous pouvons facilement déterminer les 555
moyens en convertissant chacun 5
en binaire et en l’écrivant au format ci-dessus. 5
en binaire 101
, nous avons donc les permissions suivantes:
u g o
r-x r-x r-x
101 101 101
5 5 5
De même, si nous voulons donner toutes les autorisations à l'utilisateur, mais permettre uniquement à d'autres personnes de lire, nous pouvons trouver une représentation numérique.
u g o
rwx r-- r--
111 100 100
7 4 4
Nous savons maintenant que 111
binaire est 7
en décimal et que 100
binaire est 4
en décimal. Ainsi, les autorisations seront 744
.
Modifier:
Techniquement, comme le soulignent @ LưuVĩnhPhúc et @Braiam, nous effectuons la conversion de binaire en octal, comme décrit ci-dessous. Toutefois, les représentations décimales et octales des nombres <8 sont identiques. Ainsi, pour les nombres binaires de 3 chiffres ou moins, les représentations décimale et octale sont identiques.
Lorsqu'ils sont représentés sous forme de nombres octaux, plutôt que de se scinder en groupes de trois et d'effectuer une conversion binaire en décimale sur chaque groupe, vous pouvez en fait regrouper les trois groupes en un seul nombre binaire et les convertir en octal.
Par exemple, voici quelques conversions binaires en octales:
0b111111111 == 0o777
0b101101101 == 0o555
0b111100100 == 0o744
Notez que je fais précéder "0b" et "0o" pour distinguer les nombres binaires et octaux.
Si vous voulez jouer avec cela, ouvrez un terminal, lancez python
-vous puis jouez avec les commandes suivantes:
oct(0b111111111)
bin(0o555)
N'oubliez pas de faire précéder les nombres de "0b" ou "0o" pour que l'ordinateur sache à quelle base vous êtes intéressé. (Si vous ne le faites pas, il prendra le chiffre de base 10.)