Votre situation spécifique
Dans votre situation spécifique, nous pouvons deviner que votre umask
actuel est 002
(il s'agit d'une valeur par défaut courante) et cela explique votre surprise.
Dans cette situation spécifique où umask
la valeur est 002 (tous les nombres octaux).
+r
signifieugo+r
parce que002 & 444
est000
, qui permet de définir tous les bits+x
signifieugo+x
parce que002 & 111
est000
, qui permet de définir tous les bits- mais
+w
signifieug+w
car002 & 222
est002
, ce qui empêche le bit "o" d'être défini.
Autres exemples
- Avec
umask 022
+w
signifieraitu+w
. - Avec
umask 007
+rwx
signifieraitug+rwx
. - Avec
umask 077
+rwx
signifieraitu+rwx
.
Qu'est-ce qui aurait correspondu à vos attentes
Lorsque vous modifiez umask
à 000
, en exécutant
umask 000
dans votre terminal, puis
chmod +w file
définira les autorisations sur ugo+w.
Note complémentaire
Comme suggéré par ilkkachu, notez que umask 000
ne signifie pas que tout le monde peut lire et écrire tous vos fichiers.
Mais umask 000
signifie tout le monde qui a un accès quelconque à tout compte d'utilisateur sur votre machine (qui peut inclure des programmes exécutant des services de serveur ofc) peut lire et écrire tous les fichiers que vous créez avec ce masque actif et ne changez pas (si la chaîne contenant des répertoires jusqu'à la racine le permet également).
Avec :
chmod +<perms>
les permissions sont ajoutées à user , groupe et autre mais avec l'umask toujours en vigueur. Il s'assure que le fichier ne reçoit pas plus d'autorisations qu'un fichier nouvellement créé.
Si vous souhaitez ajouter les permissions à user , groupes et autre quel que soit le umask, utilisez
chmod a+<perms>
qui est l'abréviation de
chmod ugo+<perms>