setguid
Il y a 2 forces ici au travail. Le premier est le bit setgid qui est activé sur le dossier, folder
.
drwxr-s---. user group folder
C'est s
dans le pack de caractères au début de cette ligne. Ils sont regroupés ainsi:
d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users
Les r-s
moyens que tous les fichiers ou répertoires créés dans ce dossier auront le groupe automatiquement réglé sur le groupe group
.
C'est ce qui a causé les fichiers foo.txt
et a bar.txt
été créé comme suit:
-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt
autorisations et umask
Les autorisations que vous voyez sont une autre affaire. Ceux-ci sont régis par les paramètres de votre umask
. Vous pouvez voir ce que votre umask
est défini avec la commande umask
:
$ umask
0002
NOTE: ces bits sont également appelés bits "mode".
C'est un masque, il désactivera donc tous les bits liés aux autorisations activées. Dans cet exemple, le seul bit que je veux désactiver est les autorisations d'écriture pour les autres.
0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits
La représentation des "bits" dans cette commande est sous forme décimale. Donc, un 2 équivaut à 010 sous forme binaire, qui est le bit d'écriture. Un 4 (100) signifie que vous souhaitez désactiver la lecture. Un 7 (111) signifie que vous voulez lire / écrire / exécuter tout désactivé. Construire à partir d'ici:
$ umask 007
Désactiverait les bits de lecture / écriture / exécution pour les autres utilisateurs.
Alors qu'en est-il de vos fichiers?
Eh bien, la umask
règle les autorisations qui seront définies lors de la création d'un nouveau fichier. Donc, si nous avions l' umask
ensemble suivant :
$ umask 007
Et commencé à toucher de nouveaux fichiers, nous les verrions créés comme suit:
$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:34 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:34 newfile2.txt
Si nous l'avons changé pour autre chose, dites ceci:
$ umask 037
$ ls -l |grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:36 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:36 newfile2.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile3.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile4.txt
Cela n'aura cependant aucun impact sur les fichiers que nous avons déjà créés. Vois ici:
$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:37 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:37 newfile2.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile3.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile4.txt
Alors, que se passe-t-il avec le navigateur de fichiers?
C'est umask
ce que j'avais appelé un réglage "doux". Il n'est en aucun cas absolu et peut être contourné assez facilement sous Unix de plusieurs manières. De nombreux outils prennent des commutateurs qui vous permettent de spécifier les autorisations dans le cadre de leur fonctionnement.
Prenez mkdir
par exemple:
$ umask
0037
$ mkdir -m 777 somedir1
$
$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov 3 22:44 somedir1
Avec l' -m
interrupteur, nous pouvons passer outre umask
. La touch
commande n'a pas cette fonctionnalité, vous devez donc faire preuve de créativité. Voir cette Q&R U&L intitulée: Les fichiers peuvent-ils être créés avec des autorisations définies sur la ligne de commande? pour de telles méthodes.
D'autres moyens? Remplacez simplement umask
. Le navigateur de fichiers est probablement en train de faire cela ou d'ignorer complètement umask
et de déposer le fichier en utilisant les autorisations configurées pour le faire.