web-dev-qa-db-fra.com

Qui est plus largement utilisé: chmod 777 ou chmod a + rwx

Parmi les deux options pour modifier les autorisations:

  • chmod 777 file.txt
  • chmod a+rwx file.txt

J'écris un document qui détaille les besoins des utilisateurs pour modifier les autorisations de fichier d'un certain fichier. Je veux le détailler comme le moyen le plus courant de modifier les autorisations de fichier.

Est actuellement dit:

- Set permissions on file.txt as per the example below:
    - chmod 777 /tmp/file.txt

Ceci est juste un exemple et ne changera pas les fichiers pour avoir des autorisations complètes pour tout le monde.

20
Kevdog777

Google donne:

chmod 777 est environ 3 fois plus populaire.

Cela dit, je préfère utiliser les options longues dans la documentation et les scripts, car elles sont auto-documentées. Si vous suivez vos instructions avec "Exécuter ls -l | grep file.txt et vérifier les autorisations ", vous pouvez utiliser chmod a+rwx car c'est ainsi que ls affichera les autorisations.

29
jwhitlock

[Je modifie pour ajouter les meilleures pratiques, en suivant la suggestion de Dotancohen dans sa réponse. J'espère que ça ne le rend pas moins clair, et que la bonne habitude est prise]

Informations supplémentaires importantes: elles ne sont pas équivalentes.

chmod a+rwx: définissez les 3 derniers octaux sur 777, afin de vous assurer que le propriétaire, le groupe et les utilisateurs disposent du jeu "rwx". S'il y a des bits supplémentaires dans le premier octal (setuid, setgid et/ou Sticky bit), ils ne sont pas modifiés. Pensez-y comme un binaire "ou 00777".

chmod 777: définissez les droits sur 00777, afin de vous assurer que le propriétaire, le groupe et les utilisateurs ont défini "rwx", ET RIEN DE PLUS. Il s'assure également que les bits supplémentaires (setuid, setgid et/ou Sticky bit) sont définis sur 0.

Donc, utilisez le premier formulaire, si vous voulez juste vous assurer d'accorder l'accès à tout le monde (et s'il vous plaît assurez-vous double, triple que c'est nécessaire ... cela ouvre la porte à toutes sortes de problèmes de sécurité, certains d'une portée assez inattendue ils permettent à un utilisateur malveillant de le faire)

Utilisez le formulaire 777 si vous souhaitez également vous assurer de réinitialiser tout bit setuid/setgid/sticky, c'est-à-dire si les fichiers doivent être "00777", ce qui est probablement plus probable dans votre cas (le droit du fichier est connu et doit être : 00777). Ici aussi, assurez-vous que c'est vraiment nécessaire ...

Habituellement, il est préférable de conserver l'accès au propriétaire (et parfois au groupe): puis utilisez les groupes pour accorder l'accès à certains utilisateurs spécifiques au fichier/répertoire. a + rwx est à la fois facile et généralement la mauvaise façon d'accorder l'accès (bien sûr, il y a des cas très rares où c'est la seule façon ...)

http://en.wikipedia.org/wiki/Chmod est une bonne lecture car elle explique ce que chaque chiffre ou lettre représente (y compris setuid/setgid/sticky)

26
Olivier Dulac

Je pense généralement à la différence étant que le fait de définir les autorisations sur 0777 les définit explicitement sur 0777. Comme mentionné précédemment, le 0 de tête sera déduit si vous tapez simplement 777. Alors qu'un + rwx ajoute lecture/écriture/exécution en laissant setuid/sticky peu intacte.

Supposons que vous vouliez simplement être sûr qu'un fichier est exécutable, vous pouvez utiliser un + x afin de pouvoir modifier le privilège d'exécution sans vous soucier ni modifier les autres autorisations. Si vous avez utilisé la représentation octale, vous devez connaître les autorisations actuellement définies pour être sûr de ne pas modifier les autorisations d'une autre manière que celle que vous souhaitiez.

1
Josh Famestad

Je dirais que donner les valeurs numériques est beaucoup plus courant dans les "guides simples des peuples" tels que ceux produits pour les utilisateurs d'hébergement Web à petit budget. Cependant, prenez soin de les spécifier en tant que octales , et non décimales, valeurs:

$ chmod 0777 some_dir

Notez le premier 0 Dans 0777. Bien que Bash et d'autres environnements CLI fassent ce qu'il faut en utilisant le 777 Non rembourré, de nombreux langages de programmation tels que PHP et Perl ont des fonctions similaires qui nécessitent le premier 0. Je recommande donc son utilisation dans Bash également, pour ne pas oublier qu'il est censé être là.

Note aux downvoters: Comme précisé dans les commentaires, la commande chmod sait en fait passer la directive en octal même si la notation décimale est spécifiée. Cependant, tous les environnements ne le supportent pas, il est donc meilleure pratique de s'habituer à le spécifier explicitement.

0
dotancohen