Pourquoi chmod + w ne donne pas la permission d'écriture à d'autres (o)


18

Quand je lance , chmod +w filenameil ne donne pas l' autorisation d'écriture other, il donne juste l' autorisation d'écriture useret group.

Après avoir exécuté cette commande

chmod +w testfile.txt

ls -l testfile.txttirages en cours

-rw-rw-r-- 1 ravi ravi 20 Mar 10 18:09 testfile.txt

mais en cas de +ret +xcela fonctionne correctement.

Je ne veux pas utiliser chmod ugo+w filename.



1
Si vous ne voulez pas utiliser ugo, utilisez a.
muru

oui, mais je veux juste savoir pourquoi +wne pas travailler.
Ravi Sevta

C'est pourquoi j'ai laissé deux commentaires.
muru

@muru. Vous affirmez dans votre askubunturéponse que vous faites référence ci-dessus que "Ce comportement est obligatoire pour POSIX, et donc pas un bug". Veuillez noter que le texte d'utilisation de l'application POSIX n'est pas normatif et n'est donc pas mandaté par POSIX.
fpmurphy

Réponses:


26

Votre situation spécifique

Dans votre situation spécifique, nous pouvons deviner que votre courant umaskest 002(c'est une valeur par défaut courante) et cela explique votre surprise.

Dans cette situation spécifique où la umaskvaleur est 002 (tous les nombres sont octaux).

  • +rdes moyens ugo+rparce 002 & 444est 000, ce qui permet tous les bits à définir
  • +xdes moyens ugo+xparce 002 & 111est 000, ce qui permet tous les bits à définir
  • mais des +wmoyens ug+wparce 002 & 222est 002, ce qui empêche le bit « o » pour être ensemble.

Autres exemples

  • Avec umask 022 +wsignifierait u+w.
  • Avec umask 007 +rwxsignifierait ug+rwx.
  • Avec umask 077 +rwxsignifierait u+rwx.

Qu'est-ce qui aurait correspondu à vos attentes

Lorsque vous passez umaskà 000, en exécutant

umask 000

dans votre terminal, puis

chmod +w file

définira les autorisations sur ugo + w.

Note latérale

Comme suggéré par ilkkachu, notez que umask 000cela ne signifie pas que tout le monde peut lire et écrire tous vos fichiers.

Mais cela umask 000signifie que tous ceux qui ont une sorte d'accès à n'importe quel compte d'utilisateur sur votre machine (qui peuvent inclure des programmes exécutant des services de serveur ofc) peuvent lire et écrire tous les fichiers que vous créez avec ce masque actif et ne changent pas (si la chaîne contenant répertoires jusqu'à la racine le permet également).


4
umask 000 signifie que tous ceux qui ont une sorte d'accès à un compte d'utilisateur sur votre machine (qui peuvent inclure des programmes exécutant des services de serveur ofc) peuvent lire et écrire tous les fichiers que vous créez avec ce masque actif et ne changent pas, pour être clair
StarWeaver

4
"+ r signifie ugo = r" - non, ce n'est pas le cas, cela signifie mettre le rbit pour les parties où l'umask le permet. Ceci est clairement indiqué dans les manuels de GNU chmod et FreeBSD chmod, ainsi que dans la norme. Pareil pour +x. Car +wvous avez raison, pour le cas de ce umask particulier.
ilkkachu

4
De plus, la définition de umask 0 ne signifie pas que tout le monde peut lire et écrire tous vos fichiers, car de nombreuses applications créent des fichiers particulièrement privés avec le mode 0600, ce qui signifie que le groupe et les autres n'ont aucun accès, quel que soit le umask.
ilkkachu

@ilkkachu + r signifie ugo = r, cela était lié à la situation décrite dans la question. Ce n'était pas général.
Prvt_Yadav

2
@Debian_yadav, c'est exactement le point: le umaskest une partie importante de la façon dont +rse comporte, pas un sidenote. D' ailleurs, même en supposant umask 002, chmod +rne signifie pas chmod ugo=r, cela signifiechmod ugo+r
ilkkachu

24

Avec:

chmod +<perms>

les permanentes sont ajoutées à l' utilisateur , au groupe et à d' autres, mais avec l'umask toujours appliqué. Il s'assure que le fichier ne bénéficie pas de plus d'autorisations qu'un fichier nouvellement créé.

Si vous souhaitez ajouter les perms à l' utilisateur , aux groupes et autres indépendamment du umask, utilisez

chmod a+<perms>

ce qui est court pour

chmod ugo+<perms>

Cela signifie que + x et a + x ne sont pas égaux.
Prvt_Yadav

1
J'aime avoir des liens: man7.org/linux/man-pages/man1/chmod.1.html „Si aucun de ceux-ci n'est donné, l'effet est comme si (a) était donné, mais les bits qui sont définis dans l'umask ne sont pas affectés. »
tehnicaorg

0

Vous devez spécifier à qui vous accordez les autorisations, par exemple otheren utilisantchmod o+w testfile.txt


1
oui, mais je pense +wdonne la permission à tous (utilisateur, groupe et autres).
Ravi Sevta

Pour accorder des autorisations à tous les utilisateurs, utilisez chmod a+w testfile.txt. Utilisez upour l'utilisateur, gpour le groupe, opour les autres et apour tous.
Jaken551

si chmod a+w filename, chmod +w filenameet chmod ugo+w filenamesont alternatifs les uns aux autres alors pourquoi ne pas simplement utiliser+w
Ravi Sevta
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.