Et chmod u+x
just chmod +x
? Quelle est la différence entre ? J'ai vu une tonne de tutoriels à utiliser u+x
pour rendre les scripts exécutables. Cependant, omettre le u
ne semble pas avoir d'effet.
la source
Et chmod u+x
just chmod +x
? Quelle est la différence entre ? J'ai vu une tonne de tutoriels à utiliser u+x
pour rendre les scripts exécutables. Cependant, omettre le u
ne semble pas avoir d'effet.
La page de manuel de chmod
couvre cela.
Cela signifie que chmod u+x somefile
cela n'accordera que le propriétaire de ces autorisations d'exécution de fichier, alors qu'il chmod +x somefile
est 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.
chmod +x file
différent dechmod a+x file
- voir la réponse de Ravexina pour plus de détails.Il suffit de le faire
+x
pour l'appliquer à tous les drapeaux: [u] ser, [groupe], [o] autres.Tapez
man chmod
pour plus d'informations.la source
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 +x
est égal àchmod ugo+x
(basé sur laumask
valeur)chmod a+x
est égal àchmod ugo+x
(sans considérer laumask
valeur)Explication
Le résultat de
chmod a+x
est de définir le bit exécutable pour tout le monde (Propriétaire, Groupe, Autres), facile non?Cependant, avec
chmod +x
la complexité, cela dit utilisationumask
et, sur la base de cette valeur, ajouterx
à tout le monde qui est autorisé.Donc si le
umask
de mon environnement est0002
: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 pareilchmod ugo+x
ou identique àchmod a+x
, ou sous une forme plus verbeuse:Pouvez-vous repérer le lien entre
chmod u+x,g+x,o+x
et la sortie deumask -S
?Modifions maintenant
umask
le shell actuel en0003
: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 +x
est maintenant égal àchmod u+x,g+x
ouchmod ug+x
.Heure des questions!
Que se passe-t-il si je cours
chmod +w
sur un fichier après le paramétrageumask
de0003
?Comme auparavant, cela n'affecte
user
quegroup
le 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
:la source
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 +x
ouchmod 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.
la source
chmod u+x file
signifie ajouter le bit exécutable au propriétaire du fichier en ignorant leumask
(votre mod sera défini, pas de question).chmod +x file
signifie ajouter le bit exécutable au propriétaire, au groupe et aux autres en tenant compte de l'umask
option (Tout d'abord,umask
ensuite, appliquez les mods, cela pourrait avoir des effets différents en fonction de la valeur de umask).créons deux fichiers:
Maintenant , je mis le
umask
à « 111 » pour supprimer les bits exécutables:umask 111
.Comme vous pouvez le voir, le fichier
chmod
ignoré ignoréumask
et le fichier 1 ont obtenu le bit exécutable, mais le second n'a rien fait car il considère la valeur de umask.la source