J'ai vu un code changer au travail, où les valeurs de mode ont été changées de 777 à 0777 pour que nfs setattr fonctionne. Quelle est la différence entre les 2 valeurs?
mkdir()
. 0777 vs 777
J'ai vu un code changer au travail, où les valeurs de mode ont été changées de 777 à 0777 pour que nfs setattr fonctionne. Quelle est la différence entre les 2 valeurs?
mkdir()
. 0777 vs 777
Réponses:
Si vous les transmettez à chmod
(le programme en ligne de commande), il n'y a pas de différence. Mais dans un programme C ou similaire, 0777
est octal (trois ensembles de trois 1 bits, ce qui est ce que vous souhaitez), tandis que 777
est décimal, et c’est un motif binaire assez différent. ( chmod
interprétera n'importe quel argument numérique comme octal, aucun zéro n'est donc nécessaire.)
0777 (octal) == binaire 0b 111 111 111
== autorisations rwxrwxrwx
(== décimal 511
)
777 (décimal) == binaire 0b 1 100 001 001
== autorisations sr----x--x
(== octal 1411
)
chmod
commande est toujours interprétée comme une valeur octale. Utiliser chmod 888
donnera une erreur.
chmod
interprète un argument numérique en octal, quel que soit le préfixe. (Mais en réalité, le nombre lui-même n'a pas de fonction; juste les chiffres, ou plutôt les bits.)
1777
, vous devez écrire 01777
?
1777
est écrit 01777
en C. (Ou vous pourriez écrire 1023
, qui est le même nombre en décimal. Mais ne le faites pas :-)
Le premier bit est utilisé pour le bit collant http://en.wikipedia.org/wiki/Sticky_bit
Si vous définissez l'autorisation à l'aide de 4 chiffres, le premier définira ou supprimera ce bit.
La réponse intéressante est:
0700
et 700
, comme expliqué dans les autres réponses00700
et 0700
(pour les annuaires)C'est du moins le cas pour la version chmod de GNU coreutils, qui est la version par défaut sous Linux.
Voir cet exemple:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
Ceci permet d'éviter la suppression accidentelle de bits setuid / setgid pour les répertoires. Pour plus de détails, voir la documentation de chmod .
Dans le système Linux, il existe deux types d'autorisations:
Dans l'autorisation de fichier, nous définissons l'autorisation sur les fichiers et les dossiers:
Les permissions sont:
Sous autorisation spéciale, trois types d’autorisation sont:
Dans votre question, vous demandez quelle est la différence, il n'y a donc aucune différence entre les deux chmod 777 and 0777
parce qu'il y a la no any octal value
valeur d'affichage de (0) zéro.