Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

umask - Définir les autorisations par défaut

Le umask La commande contrôle les autorisations par défaut accordées à un fichier lors de sa création. Il utilise la notation octale pour exprimer un masque de bits à supprimer des attributs de mode d'un fichier. Nous allons jeter un coup d'oeil:



[moi@linuxbox ~]$ rm -f truc.txt

[moi@linuxbox ~]$ umask

0002

[moi@linuxbox ~]$ > foo.txt

[moi@linuxbox ~]$ rm -f truc.txt

[moi@linuxbox ~]$ umask

0002

[moi@linuxbox ~]$ > foo.txt


[moi@linuxbox ~]$ ls -l foo.txt

-rw-rw-r-- 1 moi moi 0 2016/03/06 14:53 foo.txt

[moi@linuxbox ~]$ ls -l foo.txt

-rw-rw-r-- 1 moi moi 0 2016/03/06 14:53 foo.txt


Nous avons d'abord supprimé toute ancienne copie de toto.txt pour s'assurer que nous commencions à zéro. Ensuite, nous avons exécuté le umask commande sans argument pour voir la valeur actuelle. Il a répondu avec la valeur 0002 (la valeur 0022 est une autre valeur par défaut courante), qui est la représentation octale de notre masque. Nous créons ensuite une nouvelle instance du fichier toto.txt et respecter ses autorisations.

Nous pouvons voir que le propriétaire et le groupe obtiennent des autorisations de lecture et d'écriture, tandis que tout le monde n'obtient que des autorisations de lecture. La raison pour laquelle le monde n'a pas d'autorisation d'écriture est à cause de la valeur du masque. Répétons notre exemple, en réglant cette fois le masque nous-mêmes :



[moi@linuxbox ~]$ rm foo.txt [moi@linuxbox ~]$ masque 0000 [moi@linuxbox ~]$ > foo.txt [moi@linuxbox ~]$ ls -l foo.txt

-rw-rw-rw- 1 moi moi 0 2016/03/06 14:58 foo.txt

[moi@linuxbox ~]$ rm foo.txt [moi@linuxbox ~]$ masque 0000 [moi@linuxbox ~]$ > foo.txt [moi@linuxbox ~]$ ls -l foo.txt

-rw-rw-rw- 1 moi moi 0 2016/03/06 14:58 foo.txt


Lorsque nous mettons le masque sur 0000 (en le désactivant effectivement), nous voyons que le fichier est désormais accessible en écriture dans le monde entier. Pour comprendre comment cela fonctionne, nous devons à nouveau examiner les nombres octaux. Si nous prenons le masque et le développons en binaire, puis le comparons aux attributs, nous pouvons voir ce qui se passe :


Mode de fichier d'origine

--- rw-rw-rw-

Masques

000

000

000

010

Résultat

---

rw-

rw-

r--


Ignorez pour le moment les zéros non significatifs (nous y reviendrons dans une minute) et observez que là où le 1 apparaît dans notre masque, un attribut a été supprimé-dans ce cas, l'autorisation d'écriture du monde. C'est ce que fait le masque. Partout où un 1 apparaît dans la valeur binaire du masque, un attribut est désactivé. Si nous regardons une valeur de masque de 0022, nous pouvons voir ce qu'il fait :


Mode de fichier d'origine

--- rw-rw-rw-

Masques

000

000

010

010

Résultat

---

rw-

r--

r--


Là encore, lorsqu'un 1 apparaît dans la valeur binaire, l'attribut correspondant n'est pas défini. Jouez avec certaines valeurs (essayez quelques sept) pour vous habituer à la façon dont cela fonctionne. Lorsque vous avez terminé, n'oubliez pas de nettoyer :



[moi@linuxbox ~]$ rm foo.txt ; masque 0002

[moi@linuxbox ~]$ rm foo.txt ; masque 0002


image

La plupart du temps, nous n'aurons pas à changer de masque ; la valeur par défaut fournie par votre distribution conviendra. Dans certaines situations de haute sécurité, cependant, nous voudrons le contrôler.


Quelques autorisations spéciales

Bien que nous voyions généralement un masque d'autorisation octal exprimé sous la forme d'un nombre à trois chiffres, il est plus techniquement correct de l'exprimer en quatre chiffres. Pourquoi? Parce qu'en plus des autorisations de lecture, d'écriture et d'exécution, il existe d'autres paramètres d'autorisation moins utilisés.

Le premier est le peu de setuid (octal 4000). Lorsqu'il est appliqué à un fichier exécutable, il définit le ID utilisateur effectif de celui de l'utilisateur réel (l'utilisateur exécutant réellement le programme) à celui du propriétaire du programme. Le plus souvent, cela est attribué à quelques programmes appartenant au superutilisateur. Lorsqu'un utilisateur ordinaire exécute un programme qui est "racine sétuide", le programme s'exécute avec les privilèges effectifs du superutilisateur. Cela permet au programme d'accéder à des fichiers et des répertoires auxquels un utilisateur ordinaire ne serait normalement pas autorisé à accéder. De toute évidence, parce que cela soulève des problèmes de sécurité, le nombre de programmes setuid doit être réduit au strict minimum.

Le deuxième paramètre moins utilisé est le bit setgid (octal 2000) qui, comme le bit setuid, change le ID de groupe effectif du ID de groupe réel de l'utilisateur réel à celui du propriétaire du fichier. Si le bit setgid est défini sur un répertoire, les fichiers nouvellement créés dans le répertoire se verront attribuer la propriété de groupe du répertoire plutôt que la propriété de groupe du créateur du fichier. Ceci est utile dans un répertoire partagé lorsque les membres d'un groupe commun ont besoin d'accéder à tous les fichiers du répertoire, quel que soit le groupe principal du propriétaire du fichier.

Le troisième s'appelle le peu collante (octal 1000). Il s'agit d'un vestige de l'ancien Unix, où il était possible de marquer un fichier exécutable comme « non échangeable ». Sur les fichiers, Linux ignore le bit collant, mais s'il est appliqué à un répertoire, il empêche les utilisateurs de supprimer ou de renommer des fichiers à moins que l'utilisateur ne soit le propriétaire du répertoire, le propriétaire du fichier ou le superutilisateur. Ceci est souvent utilisé pour contrôler l'accès à un répertoire partagé, tel que / Tmp.



image

Voici quelques exemples d'utilisation chmod avec une notation symbolique pour définir ces autorisations spéciales. Première affectation de setuid à un programme :

chmod u+s Danse

Ensuite, assignez setgid à un répertoire :

chmod g+s dir

Enfin, en affectant le sticky bit à un répertoire :

chmod +t dir

Lors de la visualisation de la sortie de ls, vous pouvez déterminer les autorisations spéciales. Voici quelques exemples. Tout d'abord, un programme qui est setuid :

-rwsr-xr-x

Un répertoire qui a l'attribut setgid :

dessinxrwsrx

Un répertoire avec le sticky bit défini :

dessinxrwxrwt


Meilleur système d'exploitation Cloud Computing chez OnWorks :