Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Spezielle Berechtigungen für Dateien unter dem Linux-System

Spezielle Berechtigungen für Dateien unter dem Linux-System

齐天大圣
齐天大圣Original
2020-09-13 16:05:341720Durchsuche

Haben Sie das Gefühl, dass Linux-Dateiberechtigungen zu kompliziert sind? Benutzer, Gruppen, Dateiberechtigungen, Standardberechtigungen, versteckte Attribute, ACL, warum gibt es jetzt eine spezielle Berechtigung? Drei Sekunden lang tun mir meine Haare leid~.

Schauen wir uns eine Datei an

ls /usr/bin/passwd  -l
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

Nein, warum ist etwas Seltsames aufgetaucht? Dieses s erscheint über dem x des Dateieigentümers und wird Set UID oder kurz SUID genannt. Wenn es über dem x der Gruppe erscheint, zu der es gehört, bedeutet es SGID. Wenn es über dem x einer anderen Person liegt, bedeutet es Sticky.

Die Folge ist eine Tabelle, um die Verwendung jeder Sondergenehmigung zu erläutern:


File Directory
suid Dieser Benutzer wird die Eigentümerberechtigungen dieses Programms erben No Bedeutung
SGID Dieser Benutzer erbt die Gruppenberechtigungen dieses Programms Alle neuen Dateien, die von Benutzern in diesem Verzeichnis erstellt werden, erben automatisch die Benutzergruppe dieses Verzeichnisses
Sticky Keine Bedeutung Jeder Benutzer in Das Verzeichnis kann nur Ihre eigenen Dateien oder Verzeichnisse löschen, verschieben oder umbenennen

Als nächstes verwenden wir die Datei /usr/bin/passwd, um den Zweck von SUID zu erklären.

Wir wissen, dass unter Linux jeder Benutzer sein eigenes Passwort ändern kann und Root die Passwörter aller Benutzer ändern kann. Haben Sie schon einmal darüber nachgedacht, warum auch normale Benutzer ihre Passwörter ändern können? Ist das Passwort nicht in der Datei /etc/shadow gespeichert? Diese Datei hat für normale Benutzer keine Schreibberechtigung.

# ls -l /etc/shadow
---------- 1 root root 969 Sep 10 09:37 /etc/shadow

Dies ist der Zweck von SUID. Normale Benutzer können ihre Passwörter über den Befehl passwd ändern. Während der Ausführung verfügt der Benutzer vorübergehend über die Berechtigungen des Dateieigentümers Root, sodass normale Benutzer ihre Passwörter ändern können. Wenn die Sonderberechtigungen der Datei SGID lauten, sind während der Ausführung die Berechtigungen der Gruppe vorhanden, zu der die Datei gehört.

Neben Dateien kann SGID auch für Verzeichnisse verwendet werden. Beachten Sie, dass seine Funktionen für Dateien und Verzeichnisse völlig unterschiedlich sind. Anhand eines Szenarios erläutern wir die Rolle der SGID für Verzeichnisse.

Nachfolgend simulieren wir ein Szenario: Das Unternehmen muss nun ein Projekt entwickeln, die Prototypenzeichnung liegt vor und muss zur Konstruktion an die Designabteilung übergeben werden. Erstellen Sie nun ein Verzeichnis project1_ps. Alle Mitarbeiter in der Designabteilung verfügen über RWX-Berechtigungen für Dateien in diesem Verzeichnis.

Wir wissen, dass unter Linux beim Erstellen einer neuen Datei oder eines neuen Verzeichnisses Sie selbst der Eigentümer sind und die Gruppe, zu der sie gehört, die Gruppe ist, zu der Sie gehören. Wenn Designer eine neue Datei erstellt, verfügen andere Benutzer auf diese Weise über die Berechtigungen anderer Personen für diese Datei, was unseren Anforderungen nicht entspricht. Daher benötigen wir SGID, um die Anforderungen zu erfüllen.

# 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了

Endlich kommen wir zu Sticky. Dies ist sehr einfach zu verstehen. Jeder Benutzer im Verzeichnis kann nur seine eigenen Dateien oder Verzeichnisse löschen, verschieben oder umbenennen. Tatsächlich verwendet das Verzeichnis /tmp diese spezielle Berechtigung.

# ll /tmp -d
drwxrwxrwt. 9 root root 868352 Sep 13 08:24 /tmp

Das obige ist der detaillierte Inhalt vonSpezielle Berechtigungen für Dateien unter dem Linux-System. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn