Pensez-vous que les autorisations de fichiers Linux sont trop compliquées ? Utilisateurs, groupes, autorisations de fichiers, autorisations par défaut, attributs cachés, ACL, pourquoi y a-t-il une autorisation spéciale maintenant ? Je me sens désolé pour mes cheveux pendant trois secondes ~.
Regardons un fichier
ls /usr/bin/passwd -l -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
Je ne l'ai pas trouvé, pourquoi une chose étrange est-elle apparue ? Ce s apparaît au-dessus du x du propriétaire du fichier et s'appelle Set UID, ou SUID en abrégé. S'il apparaît au-dessus du x du groupe auquel il appartient, cela signifie SGID. S'il est au-dessus du x de quelqu'un d'autre, cela signifie Sticky.
Ce qui suit utilise un tableau pour expliquer l'utilisation de chaque autorisation spéciale :
文件 | 目录 | |
SUID | 此用户将继承此程序的所有者权限 | 无意义 |
SGID | 此用户将继承此程序的所属组权限 | 此目录下所有用户新建文件都自动继承此目录的用户组 |
Sticky | 无意义 | 目录中每个用户仅能删除、移动或改名自己的文件或目录 |
Ensuite, nous utilisons le fichier /usr/bin/passwd pour expliquer l'utilisation de SUID.
Nous savons que sous Linux, chaque utilisateur peut changer son propre mot de passe, et root peut changer les mots de passe de tous les utilisateurs. Avez-vous déjà réfléchi à la raison pour laquelle les utilisateurs ordinaires peuvent également modifier leur mot de passe ? Le mot de passe n'est-il pas stocké dans le fichier /etc/shadow ? Ce fichier n'a pas d'autorisation d'écriture pour les utilisateurs ordinaires.
# ls -l /etc/shadow ---------- 1 root root 969 Sep 10 09:37 /etc/shadow
C'est le but de SUID. Les utilisateurs ordinaires peuvent changer leur mot de passe via la commande passwd. Lors de l'exécution, l'utilisateur disposera temporairement des autorisations du propriétaire du fichier, c'est-à-dire root, afin que les utilisateurs ordinaires puissent modifier leur mot de passe. Si les autorisations spéciales du fichier sont SGID, alors les autorisations du groupe auquel appartient le fichier seront possédées lors de l'exécution.
En plus des fichiers, SGID peut également être utilisé sur les répertoires. Notez que ses fonctions sont complètement différentes pour les fichiers et les répertoires. Nous utilisons un scénario pour expliquer le rôle du SGID pour les répertoires.
Ci-dessous, nous simulons un scénario : l'entreprise doit maintenant développer un projet, le dessin du prototype a été donné, et il doit être remis au service d'études pour la conception. Créez maintenant un répertoire project1_ps. Tout le personnel du service de conception dispose des autorisations rwx sur les fichiers de ce répertoire.
Nous savons que sous Linux, lorsque vous créez un nouveau fichier ou répertoire, le propriétaire est vous-même et le groupe auquel il appartient est le groupe auquel vous appartenez. De cette façon, lorsque le concepteur crée un nouveau fichier, d'autres utilisateurs disposent des autorisations d'autres personnes sur ce fichier, ce qui ne répond pas à nos exigences. Par conséquent, nous avons besoin du SGID pour répondre aux exigences.
# groupadd design #创建design用户组 # useradd -G design --no-create-home dgn1 # 创建用户 # useradd -G design --no-create-home dgn2 # 创建用户 # id dgn1 uid=1003(dgn1) gid=1004(dgn1) 组=1004(dgn1),1003(design) # id dgn2 uid=1004(dgn2) gid=1005(dgn2) 组=1005(dgn2),1003(design) # mkdir design # 工作目录 # chgrp design design/ # chmod 2770 design/ <== 如果是SUID则是4770 # ll -d design/ drwxrws--- 2 root design 4096 5月 5 19:06 design/ # su dgn1 $ umask 0022 $ umask 0002 $ touch design/1.ps $ ls design -l 总用量 0 -rw-rw-r-- 1 dgn1 design 0 5月 5 19:31 1.ps <=== 新创建的文件默认组为design了
Enfin, nous arrivons à Sticky. C'est très simple à comprendre. Chaque utilisateur du répertoire ne peut supprimer, déplacer ou renommer que ses propres fichiers ou répertoires. En fait, le répertoire /tmp utilise cette autorisation spéciale.
# ll /tmp -d drwxrwxrwt. 9 root root 868352 Sep 13 08:24 /tmp
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!