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?
permissions
utilisateur1071840
la source
la source
mkdir()
. 0777 vs 777Ré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 que777
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
== autorisationsrwxrwxrwx
(== décimal511
)777 (décimal) == binaire
0b 1 100 001 001
== autorisationssr----x--x
(== octal1411
)la source
chmod
commande est toujours interprétée comme une valeur octale. Utiliserchmod 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 écrire01777
?1777
est écrit01777
en C. (Ou vous pourriez écrire1023
, 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 source
La réponse intéressante est:
0700
et700
, comme expliqué dans les autres réponses00700
et0700
(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:
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 .
la source
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 lano any octal value
valeur d'affichage de (0) zéro.la source