'chmod u + x' contre 'chmod + x'

113

Et chmod u+xjust chmod +x? Quelle est la différence entre ? J'ai vu une tonne de tutoriels à utiliser u+xpour rendre les scripts exécutables. Cependant, omettre le une semble pas avoir d'effet.

Nathan Schwermann
la source

Réponses:

150

La page de manuel de chmodcouvre cela.

  • U représente l'utilisateur.
  • g signifie groupe.
  • o représente les autres.
  • a signifie tout.

Cela signifie que chmod u+x somefilecela n'accordera que le propriétaire de ces autorisations d'exécution de fichier, alors qu'il chmod +x somefileest identique à chmod a+x somefile.

La page de manuel de chmod dit:

Le format d'un mode symbolique est [ugoa...][[+-=][rwxXstugo...]...][,...]. Plusieurs opérations symboliques peuvent être données, séparées par des virgules.

Une combinaison des lettres 'ugoa' détermine quels utilisateurs auront accès au fichier: l'utilisateur à qui il appartient (u), les autres utilisateurs du groupe de fichiers (g), les autres utilisateurs n'appartenant pas au groupe de fichiers (o), ou tous les utilisateurs (a). Si aucun de ces éléments n'est donné, l'effet est comme si "a" avait été donné, mais les bits définis dans l'umask ne sont pas affectés.

Octave Damien
la source
J'ai une petite question, quelle est la différence entre a + x et disons 111. Cela rend les deux exécutables
TheBro21
En effet, 1 est la notation octale qui signifie l'autorisation d'exécution. 111 signifie un exécutable pour utilisateur, groupe et autre.
Octavian Damiean
Grande réponse propre
M4heshd
L'effet umask est important, chmod +x filedifférent de chmod a+x file- voir la réponse de Ravexina pour plus de détails.
Cinnam
19

Il suffit de le faire +xpour l'appliquer à tous les drapeaux: [u] ser, [groupe], [o] autres.

Tapez man chmodpour plus d'informations.

matpie
la source
Je vous promets que j'ai d'abord vérifié le manuel, mais que je ne l'ai pas vu puisque j'ai sauté la description et sauté aux options. Je les vois maintenant cependant :-)
Nathan Schwermann Le
14

Exigences

Tout d'abord, je vous suggère de lire ces questions et les réponses liées ci-dessous:

Cela vous aide à comprendre toutes les parties nécessaires que vous devez connaître.


Version courte

  • chmod +xest égal à chmod ugo+x(basé sur la umaskvaleur)
  • chmod a+xest égal à chmod ugo+x(sans considérer la umaskvaleur)

Explication

Le résultat de chmod a+xest de définir le bit exécutable pour tout le monde (Propriétaire, Groupe, Autres), facile non?

Cependant, avec chmod +xla complexité, cela dit utilisation umasket, sur la base de cette valeur, ajouter xà tout le monde qui est autorisé.

Donc si le umaskde mon environnement est 0002:

$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx

Cela va ajouter xà l'utilisateur (propriétaire), au groupe et aux autres, dans cette situation (qui est la situation par défaut pour la plupart des systèmes) c'est exactement pareil chmod ugo+xou identique à chmod a+x, ou sous une forme plus verbeuse:

chmod u+x,g+x,o+x

Pouvez-vous repérer le lien entre chmod u+x,g+x,o+xet la sortie de umask -S?

Modifions maintenant umaskle shell actuel en 0003:

$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r

Comme vous pouvez le voir maintenant, seuls le propriétaire et le groupe vont obtenir le bit exécutable et pas les autres. Cela signifie chmod +xest maintenant égal à chmod u+x,g+xou chmod ug+x.


Heure des questions!

Que se passe-t-il si je cours chmod +wsur un fichier après le paramétrage umaskde 0003?

Comme auparavant, cela n'affecte userque grouple fichier et 3 car il supprime également l'autorisation d'écriture (2).


Prime

Cela a le même effet lorsque vous supprimez un peu comme chmod -w:

$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx
Ravexina
la source
7

chmod u+x rendra le fichier exécutable pour votre utilisateur (il ne l'ajoutera que pour votre utilisateur, bien qu'il puisse déjà être exécutable par le propriétaire du groupe ou "autre").

chmod +xou chmod a+x('plus bit exécutable') rend le fichier exécutable par tout le monde.

Si vous faites cela dans un répertoire, cela rend le répertoire consultable. En d'autres termes, vous pouvez répertorier le contenu d'un répertoire sur lequel vous avez + x l'autorisation.

Belacqua
la source
désolé mais cette chose aussi n'a pas fonctionné pour moi. Je l'ai essayé avec sudo et je ne l'ai pas fait fonctionner sur mon ordinateur. askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
Anirudha Gupta Le
@AnkitGupta Je ne suis pas sûr de ce que vous dites. Mon commentaire ne visait pas à résoudre un problème dans un autre Q & R. Essayez de demander une clarification pour y répondre à la place. Modifiez votre question pour dire ce que vous avez essayé. Afficher la sortie.
belacqua
1
  • chmod u+x filesignifie ajouter le bit exécutable au propriétaire du fichier en ignorant le umask(votre mod sera défini, pas de question).

  • chmod +x filesignifie ajouter le bit exécutable au propriétaire, au groupe et aux autres en tenant compte de l' umaskoption (Tout d'abord, umaskensuite, appliquez les mods, cela pourrait avoir des effets différents en fonction de la valeur de umask).


créons deux fichiers:

$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file2

Maintenant , je mis le umaskà « 111 » pour supprimer les bits exécutables: umask 111.

$ chmod u+x file1
$ chmod  +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file2

Comme vous pouvez le voir, le fichier chmodignoré ignoré umasket le fichier 1 ont obtenu le bit exécutable, mais le second n'a rien fait car il considère la valeur de umask.

Ravexina
la source