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

20

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.

Kevdog777
la source
6
la première solution est plus courte et plus largement utilisée, je n'ai jamais vu la seconde.
Archemar
2
définir des autorisations de lecture, d'écriture ET d'exécution pour tout le monde n'est vraiment pas une bonne idée en termes de sécurité. Vous devriez plutôt utiliser chmod 773.
Martin Erhardt du
1
@MartinErhardt J'utiliserais normalement 775ou 755uniquement pour les fichiers exécutables.
Kevdog777
3
chmod 777c'est comme chmod a=rwx, non chmod a+rwx.
Stéphane Chazelas
1
777ou 666est simple et beaucoup plus mémorisable que ugo+rwx, a+rwxou ugo+rwqui est très déroutant car oambigu et peut signifier pour vous, propriétaire ou autres, que vous choisissez. Donc, au lieu de faire la grosse erreur, vous continuez manà vérifier pour vérifier lequel est lequel, ou utilisez simplement les chiffres.
kenorb

Réponses:

29

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.txtet vérifier les autorisations", vous voudrez peut-être utiliser chmod a+rwxcar c'est ainsi que ls affichera les autorisations.

jwhitlock
la source
Merci pour cela. Je suppose qu'en l'écrivant dans son intégralité (alphanumérique) cela empêchera les gens de demander ce que cela 7signifie, etc.
Kevdog777
1
Je pense que la raison chmod 777est plus populaire (comme conjetured avant de voir vos chiffres) est simplement que vous tapez 2 caractères de moins :)
Ángel
Si vous souhaitez ajouter des astuces dans votre documentation, vous pouvez ajouter une astuce qui chmod 777est un raccourci pratique pour obtenir le même effet. Vos lecteurs apprécieraient l'élément éducatif de votre documentation. Le 777 est plus populaire car il est beaucoup plus facile et plus rapide d'appuyer sur 7 trois fois, mais lorsqu'un nouvel utilisateur voit le 777 pour la première fois, il ne sait peut-être pas exactement ce que cela signifie. C'est pourquoi c'est un mauvais choix comme documentation principale. Mais cela vaut vraiment la peine d'être mentionné comme un conseil.
ADTC
En tant que tangente, mon frère et ses amis utiliseraient cette technique pour autoriser les mots Scrabble. Ils avaient un certain seuil pour le nombre de visites Google avant qu'un mot ne soit considéré comme «réel»
Wayne Werner
Je pense que c'est populaire parce qu'il est plus ancien (la notation symbolique a été ajoutée plus tard), donc quand quelqu'un choisit, ils recherchent sur Google ou quel que soit l'équivalent du temps et vont avec la foule. Je pense qu'il est plus facile d'utiliser le symbolique, car au moment où j'ai calculé les chiffres, j'aurais pu taper les symboles, j'ai également tendance à bien faire les choses la première fois.
ctrl-alt-delor
26

[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 de l'ensemble "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 de très rares cas 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)

Olivier Dulac
la source
1
De plus, chmod a + w (qui inclut a + rwx) sur un fichier suid est très dangereux. Dois-je élaborer sur chmod a + w *?
Joshua
Quel est l'intérêt de définir l' othersautorisation? Si vous êtes connecté à la machine en tant qu'utilisateur, vous pouvez sûrement simplement utiliser l' usersautorisation?
Kevdog777
@ Kevdog777: Les autres sont destinés aux personnes qui ne sont ni propriétaires ni membres du groupe, alias tout le monde sur le système
Olivier Dulac
1
@ Kevdog777: si seulement root et l'utilisateur ont besoin d'un accès: chmod 00600 (si pas besoin d'exécuter le fichier) ou chmod 00700 (si besoin d'exécuter le fichier -ou- c'est un répertoire). ou chmod 00400 pour ajouter une protection (minuscule, facilement remplaçable) contre la modification / écriture dans le fichier (00500 pour un répertoire). Ensuite, les autres (et les personnes du groupe mais pas l'utilisateur) ne peuvent pas accéder au fichier / dir. (à la suite de la note dotandcohen, j'ajoute le 4ème octal + un "0" avant: cela ne fait aucune différence pour le shell, mais aide si vous définissez via perl / C / etc et le 4ème octal est une sorte de rappel qu'il existe , et que c'est réglé aussi)
Olivier Dulac
4
chmod 777c'est comme chmod a=rwx.
Stéphane Chazelas
1

Je pense généralement à la différence étant que la définition des 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.

Josh Famestad
la source
0

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, veillez à les spécifier en tant que valeurs octales et non décimales:

$ chmod 0777 some_dir

Notez le leader 0dans 0777. Bien que Bash et d'autres environnements CLI fassent ce qu'il faut avec l'utilisation du non-rembourré 777, de nombreux langages de programmation tels que PHP et Perl ont des fonctions similaires qui nécessitent la direction 0. Je recommande donc également son utilisation dans Bash, pour se souvenir qu'il est censé être là.

Note aux downvoters: Comme précisé dans les commentaires, la chmodcommande 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 prennent pas en charge, il est donc préférable de s'habituer à le spécifier explicitement.

dotancohen
la source
10
chmodne traite jamais le nombre comme décimal. chmod 777 fileet chmod 0777 filesont complètement équivalents.
celtschk
3
@ Kevdog777: "octal" signifie simplement base-8. Mais vous n'avez pas besoin de vous en soucier, en ce qui concerne l'utilisation de la chmodcommande shell; vous pouvez simplement penser que les trois chiffres sont indépendants les uns des autres, chacun vous indiquant un ensemble d'autorisations.
celtschk
3
Pour chmod, le 0 dans 0777 signifie en fait «effacer les bits setuid, setgid et sticky». Cela équivaut à 777, car l'argument est toujours complété par des zéros de tête à quatre chiffres. Pour la même raison, chmod 77est équivalent à chmod 077.
Emil Jeřábek soutient Monica le
1
La chmodcommande interprète son argument mode en octal. Vous devez faire attention si vous utilisez la plupart des langages de programmation (C, Perl,…), mais dans un script shell, c'est octal chmod.
Gilles 'SO- arrête d'être méchant'
1
+1 pour votre note, car il est en effet bon de toujours ajouter un 0 (même si vous définissez les 4 octales: 01777 par exemple) car cela ne fait aucune différence pour le shell, mais assurez-vous que C, perl et d'autres l'interprètent comme octal
Olivier Dulac