GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Zweck des setgid-Verzeichnisses?

Lösung 1:

Während eine Setgid-Datei / Binärdatei möglicherweise nicht offensichtlich nützlich ist, finde ich das Setgid-Bit definitiv sehr nützlich, wenn es auf Verzeichnisse angewendet wird. Angenommen, Sie sind Teil verschiedener Arbeitsgruppen, die jeweils ihre eigenen Unix-(Berechtigungs-)Gruppen haben. Sicherlich möchten Sie dann das Setgid-Bit auf Projektordner setzen, um sicherzustellen, dass die richtige Gruppeneigentümerschaft angewendet wird, wenn Sie neue Dateien erstellen, und dadurch Ihren Kollegen in dieser Projektgruppe Zugriff auf diese Dateien gewähren?

Lösung 2:

Die Hauptverwendung besteht darin, den Gruppeneigentümer eines Dateibaums beizubehalten:

[[email protected] tmp]$ mkdir dir1 && touch dir1/file && mkdir dir1/dir
[[email protected] tmp]$ mkdir dir2 && chgrp staff dir2 && chmod 2755 dir2 && touch dir2/file && mkdir dir2/dir
[[email protected] tmp]$ ls -al dir1
total 32
drwxrwxr-x   3 lockie  lockie   4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwxr-x   2 lockie  lockie   4096 Dec 13 19:32 dir
-rw-rw-r--   1 lockie  lockie      0 Dec 13 19:32 file
[[email protected] tmp]$ ls -al dir2
total 32
drwxr-sr-x   3 lockie  staff  4096 Dec 13 19:32 .
drwxrwxrwt 125 root root  20480 Dec 13 19:32 ..
drwxrwsr-x   2 lockie  staff  4096 Dec 13 19:32 dir  < note new dir is g+s, owned by "staff" group, so the setgid behaviour acts recursively
-rw-rw-r--   1 lockie  staff     0 Dec 13 19:32 file < note new file is owned by "staff" group
[[email protected] tmp]$

Dies ist in der Regel nützlich in Umgebungen, in denen verschiedene Benutzer Dateien/Verzeichnisse in einem Verzeichnis erstellen/bearbeiten:Wenn alle Dateien/Verzeichnisse dieselbe Gruppe teilen, können alle Benutzer die Dateien/Verzeichnisse bearbeiten/ändern (sofern die Berechtigungen dies zulassen):Dies vermeidet Situationen wie "xyz besitzt die Datei abc, also kann ich sie nicht bearbeiten".

Eine Alternative zur Verwendung von setgid auf diese Weise ist grpid Dateisystem-Mount-Option.

Von Manmount:

grpid oder bsdgroups / nogrpid oder sysvgroups

Diese Optionen definieren, welche Gruppen-ID eine neu erstellte Datei erhält. Wenn grpid gesetzt ist, nimmt es die Gruppen-ID des Verzeichnisses, in dem es erstellt wurde; andernfalls (Standardeinstellung) nimmt es die fsgid des aktuellen Prozesses, es sei denn, das Verzeichnis hat das setgid-Bit gesetzt, in diesem Fall nimmt es die gid aus dem übergeordneten Verzeichnis und bekommt auch das gesetzte setgid-Bit, wenn es ein Verzeichnis selbst ist.

Wenn aktiviert, erben Dateien/Verzeichnisse, die auf einem grpid-gemounteten Dateisystem erstellt wurden, auch die Gruppe des übergeordneten Verzeichnisses:

[[email protected] ~]$ mount | grep /home
/dev/mapper/VolGroup00-home on /home type ext3 (rw,grpid)
[[email protected] ~]$ mkdir dir3 && touch dir3/file && mkdir dir3/dir
[[email protected] ~]$ ls -al dir3
total 12
drwxrwxr-x  3 lockie users 4096 Dec 13 19:37 .
drwxrwxr-x 12 lockie users 4096 Dec 13 19:37 ..
drwxrwxr-x  2 lockie users 4096 Dec 13 19:37 dir < inherited "users" group from parent dir
-rw-rw-r--  1 lockie users    0 Dec 13 19:37 file  < inherited "users" group from parent dir
[[email protected] ~]$

Ich habe mit grpid gefunden Option reduziert angemessen die Wahrscheinlichkeit menschlicher Fehler (da das Dateisystem die Arbeit erledigt, unabhängig von dir-Berechtigungen).


Linux
  1. Welchem ​​Zweck dient der eingebaute Doppelpunkt „:“?

  2. Was ist der Zweck der .bash_profile-Datei im Benutzer-Home-Verzeichnis in Linux

  3. Was ist der Zweck des Benutzers „mysql.sys@localhost“.

  4. Was ist der Zweck des „Systembenutzers“ in der MySQL-Replikation?

  5. Was ist der Zweck der Gruppe „Wheel“ in Linux?

Absoluter vs. relativer Pfad in Linux:Was ist der Unterschied?

Was ist der sicherste Weg, ein Verzeichnis in * nix zu leeren?

Was sollten die idealen Home-Verzeichnisberechtigungen in Linux sein?

Was bedeutet ./ (Punkt-Schrägstrich) unter Linux?

Was bedeutet das Suffix .d unter Linux?

Was ist der Zweck eines nachgestellten '-' in einer Kubernetes-Anwendung -f -