Erstellen und Konfigurieren von SetGid -Verzeichnissen für die Zusammenarbeit - RHCSA -Zielvorbereitung

Erstellen und Konfigurieren von SetGid -Verzeichnissen für die Zusammenarbeit - RHCSA -Zielvorbereitung

Berechtigungen und Rechte von GNU/Linux -Dateisystemen sind die Grundlage für die Sicherheit des Systems, und eines seiner Grundsätze ist die klare Trennung von Rechten an Dateien und Ordnern. In einer stark multiierener -Umgebung wie dem Server einer Schule verhindern Dateirechte, dass ein Benutzer standardmäßig die Dokumente eines anderen löschen oder überschreiben kann. Es gibt jedoch Anwendungsfälle, in denen mehrere Benutzer auf die Dateien eines anderen Benutzers zugreifen müssen (lesen, schreiben und sogar löschen). Dies ist möglicherweise in dem oben genannten Schulserver der Fall, an dem die Schüler an demselben Projekt arbeiten. In diesem Abschnitt der RHCSA -Prüfungsvorbereitung lernen wir, wie Sie eine Umgebung für eine solche Zusammenarbeit erstellen, indem wir die SETGID -Technik (SET GroupID) verwenden. Beachten Sie, dass die SetGid zwar diese Schritte in einem kürzlich durchgeführten Betriebssystem ausführen, und Sie werden sie in allen Verteilungen finden.

In diesem Tutorial lernen Sie:

  • So fügen Sie Benutzer einer ergänzenden Gruppe hinzu
  • So verwenden Sie Set-GID in einem Verzeichnis
  • So überprüfen Sie das ordnungsgemäße Eigentum im Set-GID-Verzeichnis
  • So nutzen Sie das spezielle Verzeichnis als Mitglied der Gruppe
Aktivierung der Zusammenarbeit mit SetGid Directory.

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Red Hat Enterprise Linux 8
Software GNU CoreUtils 8.30
Andere Privilegierter Zugriff auf Ihr Linux -System als Root oder über die sudo Befehl.
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Der Anwendungsfall

Um die Verwendung des SetGid zu demonstrieren, haben wir einen virtuellen Server und müssen eine Gruppe von Benutzern erstellen, Mitglieder hinzufügen und ein Verzeichnis einrichten, auf das beide Zugriffe haben. Bisher ist dies nur ein
Frage der Berechtigungseinstellungen. Der Trick besteht darin, das SetGid dem Verzeichnis hinzuzufügen, sodass die im Verzeichnis erstellten Dateien die Eigentümergruppe des übergeordneten Verzeichnisses haben. Da die Gruppe Berechtigungen im Verzeichnis gelesen und geschrieben hat, können alle Mitglieder der Gruppe die Dateien lesen und schreiben, ohne dass die ursprüngliche Benutzergruppenmitgliedschaft explizit erforderlich ist.

Grundeinstellung

Zuerst erstellen wir die erforderlichen Objekte. Erstellen wir das Projektverzeichnis:

# MKDIR -P /Student_Projects /Rocket_Science

Und unsere beiden Benutzer, Sarah Und John, Verwenden des Befehls userAdd:

# UserAdd John # UserAdd Sarah

Wir müssen auch eine Benutzergruppe erstellen, die die Zusammenarbeit zwischen den Mitgliedern ermöglicht:

# Groupadd Rocktengineers

Als nächstes setzen wir diese Gruppe als Eigentümer des Projektverzeichnisses rekursiv:

# Chown -R: Rocktengineers /Student_Projects /Rocket_Science

Als nächstes fügen wir unsere Benutzer zur Rocktengineers Gruppe:

# Usermod -a -g Rocktengineer John # Usermod -a -g Rocktengineers Sarah

Wir haben die Gruppe als Sekundärgruppe hinzugefügt. Einzelheiten zu Gruppen finden Sie im Gruppenmitgliedschafts -Tutorial.



Um das Basis -Setup zu beenden, müssen wir der Gruppe im Verzeichnis eine vollständige Erlaubnis hinzufügen:

# Chmod 770 /Student_Projects /Rocket_Science

Und damit ist unser grundlegender Setup vollständig. Beide Benutzer können in das Verzeichnis schreiben, und erstellte Dateien befinden sich im Besitz des Benutzer. Wir können das überprüfen
Berechtigungen, mit denen wir festgelegt haben Stat:

# STAT/STUDEN_PROJECTS/Rocket_Science Datei:/student_projects/Rocket_Science Größe: 6 Blöcke: 0 IO-Block: 4096 Verzeichnisgerät: FD00H/64768d Inode: 17789698 Links: 2 Zugriff: (0770/drwxrwx ---) uid: (0/root ) GID: (1003/Rocktengineers) Kontext: confined_u: Object_r: default_t: S0 Zugriff: 2020-10-04 18:29:57.500453785 +0200 Modify: 2020-10-04 18:29:47.650278956 +0200 Änderung: 2020-10-04 18:30:34.809115974 +0200 Geburt: -

Identifikatoren werden höchstwahrscheinlich unterscheiden. Wir können sehen, dass der Eigentümer des Verzeichnisses ist Wurzel, während der Gruppenbesitz zu der gehört Rocktengineers Gruppe. Dies erlaubt beide Mitglieder
der Gruppe zum Lesen und Schreiben aus und in das Verzeichnis.

Zusammenarbeit ohne SetGid

Nehmen wir an, die beiden Benutzer möchten mit diesem Setup einige Notizen teilen. Sarah Erhalten Sie eine Textdatei mit wichtigen Daten in ihrem Heimverzeichnis:

$ id uid = 1002 (Sarah) gid = 1002 (Sarah) Gruppen = 1002 (Sarah), 1003 (Rocktengineers) Kontext = conlined_u: confined_r: confined_t: s0-s0: c0.C1023 $ CAT General_Project.Notizen Text

Zu teilen mit John, Sie kopiert die Datei in das freigegebene Verzeichnis (so gibt es in ihrem Heimverzeichnis, nur für den Fall, noch eine Sicherung):

$ CP General_Project.Notizen/Student_Projects/Rocket_Science/

Durch Überprüfen von Eigentümern können wir sehen, dass der Besitzer tatsächlich ist Sarah, und die Gruppe, die die Datei besitzt Sarah, die primäre Gruppe des Benutzers:

$ STAT/Student_Projects/Rocket_Science/General_Project.Notizen Datei:/student_projects/Rocket_Science/General_Project.Anmerkungen Größe: 5 Blöcke: 8 IO-Block: 4096 Regulares Dateigerät: FD00H/64768d Inode: 18019570 Links: 1 Zugriff: (0664/-RW-RW-R--) UID: (1002/Sarah) GID: (1002/ Sarah) Kontext: confined_u: Object_R: default_t: S0 Zugriff: 2020-10-04 18:31:30.229099624 +0200 Modify: 2020-10-04 18:31:30.229099624 +0200 Änderung: 2020-10-04 18:31:30.229099624 +0200 Geburt: -

Lassen Sie uns zu wechseln zu John. Er hat auch einige Erkenntnisse zum Projekt und möchte sie teilen.

$ id uid = 1001 (John) GID = 1001 (John) Gruppen = 1001 (John), 1003 (Rocktengineers) Kontext = conconfined_u: conlined_r: confined_t: s0-s0: c0.C1023 $ Echo "Mytext"> Rakete.txt $ cp Rakete.TXT/Student_Projects/Rocket_Science/


Dieselben Berechtigungen gelten, die neu kopierte Datei befindet sich im Besitz John:

$ STAT/Student_Projects/Rocket_Science/Rocket.TXT -Datei:/student_projects/Rocket_Science/Rocket.TXT-Größe: 7 Blöcke: 8 IO-Block: 4096 reguläres Dateigerät: FD00H/64768d Inode: 18356857 Links: 1 Zugriff: (0664/-RW-rw-r--) UID: (1001/John) GID: (1001/ John) Kontext: confined_u: Object_r: default_t: S0 Zugriff: 2020-10-04 18:32:24.433075710 +0200 Modify: 2020-10-04 18:32:24.433075710 +0200 Änderung: 2020-10-04 18:32:24.433075710 +0200 Geburt: -

Da sind beide Mitglieder der Rocktengineers Gruppe können sie den Inhalt des Verzeichnisses lesen und da beide Notizen weltweit lesbar sind, können sie beide gegenseitig lesen
Dateien.

$ cat/student_projects/Rocket_Science/General_Project.Notizen Text

Das Problem tritt auf, wenn John möchte ein paar Notizen hinzufügen SarahWichtige Datendatei:

$ echo "Einige Kommentare" >>/student_projects/Rocket_Science/General_Project.Notizen -bash:/student_projects/Rocket_Science/General_Project.Anmerkungen: Erlaubnis abgelehnt

Tatsächlich können sie nicht an den Dateien des anderen arbeiten, lesen Sie sie nur. Jetzt Sarah könnte den Gruppenbesitz ihrer Akte in ihre gemeinsame Gruppe setzen und so das Problem lösen. Aber warum sollte sie brauchen?
Das mit jeder Datei, wenn wir das SetGid bekommen haben, um uns zu helfen?

Festlegen der SetGid -Flagge

Um das SetGid -Flag einzustellen, verwenden wir Chmod:

# Chmod G+S /Student_Projects /Rocket_Science

Beachten Sie die Flagge "S" bei den Grop -Berechtigungen (für die Klarheit als kühn eingestellt):

# STAT/Student_Projects/Rocket_Science -Datei:/student_projects/Rocket_Science Größe: 53 Blöcke: 0 IO Block: 4096 Verzeichnisgerät: FD00H/64768d Inode: 17789698 Links: 2 Zugriff: (2770/drwxrwwwwwwwwwwsS---) UID: (0/ root) gid: (1003/ rocktengineers) Kontext: conlined_u: Object_r: default_t: S0 Zugriff: 2020-10-04 18:32:29.389167450 +0200 Modify: 2020-10-04 18:32:24.433075710 +0200 Änderung: 2020-10-04 18:34:04.449927062 +0200 Geburt: -

Testen und Überprüfung der Ergebnisse

Jetzt Sarah kann ihre neuen Forschungsnotizen teilen:

$ CAT -Erkenntnisse.TXT Rocket braucht Wings $ CP -Ergebnisse.txt/student_projects/Rocket_Science/$ STAT/Student_Projects/Rocket_Science/Ergebnisse.TXT -Datei:/student_projects/Rocket_Science/Ergebnisse.TXT-Größe: 19 Blöcke: 8 IO-Block: 4096 reguläres Dateigerät: FD00H/64768d Inode: 18999000 Links: 1 Zugriff: (0664/-rw-rw-r--) UID: (1002/sarah) gid: (((( 1003/Rocktengineers) Kontext: confined_u: Object_r: default_t: S0 Zugriff: 2020-10-04 18:35:15.195236593 +0200 Modify: 2020-10-04 18:35:15.195236593 +0200 Änderung: 2020-10-04 18:35:15.195236593 +0200 Geburt: -


Der Gruppenbesitz ist aufgrund der Gruppe des übergeordneten Verzeichnisses eingestellt setgid an Ort und Stelle. Das wird verursachen John Um die neuen Forschungsnotizen kommentieren zu können:

$ echo "verifiziert!">>/student_projects/rocket_science/fundings.txt $ cat/student_projects/rocket_science/fundings.TXT Rocket braucht Flügel, die verifiziert werden!

Und damit haben wir unser Ziel abgeschlossen, ein Kollaborationsverzeichnis für eine Gruppe von Benutzern zu errichten. Wir könnten dies für andere Gruppen mit der obigen Methode tun, um die Daten von verschiedenen Projekten zu trennen
Berechtigungen, so dass ein Mitglied einer Gruppe nicht versehentlich Daten eines anderen Projekts löschen kann.

# Videotitel: Arbeiten in einem SetGid -Verzeichnis
# Videobeschreibung: Bearbeiten anderer Benutzerdateien in einem SetGid -Verzeichnis
# Videodateiname: rhcsa_setgid.Webm

Arbeiten in einem SETGID -Verzeichnis - Bearbeitung der Dateien anderer Benutzer in einem SetGid -Verzeichnis

Abschluss

Unter GNU/Linux strenge Berechtigungen und Eigentumsrechte, setgid ist eine einfache Möglichkeit, Benutzern des Systems auf sichere Weise mit den Dateien des anderen zu interagieren und die Gruppenarbeit zu ermöglichen
Ohne die Verwendung einer starken externen Lösung oder durch das Durcheinander der anfänglichen Gruppen und Berechtigungen des Benutzers durcheinander. Im obigen Beispiel mussten wir weder die Benutzer-Heimverzeichnisse noch deren systemweit berühren
Berechtigungen haben wir einfach einen besonderen Ort eingerichtet, an dem sie teilen können, was sie brauchen.

Übungen

  1. Erstellen Sie mehrere Projektverzeichnisse mit verschiedenen Gruppen. Überprüfen Sie, ob die Mitglieder eines Projekts die Dateien eines anderen Projekts lesen können.
  2. Erstellen Sie ein Cross-Project-Verzeichnis, in dem ein Projektmitglied Zugriff hat.
  3. Erstellen Sie ein Querprojekt schreibgeschützt Verzeichnis, wobei nur ein Projekt (Projektmanagement) Mitglieder schreiben kann, aber Mitglieder aller Projekte lesen können.

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 20.04
  • Mastering -Bash -Skriptschleifen beherrschen
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Umgang mit Benutzereingaben in Bash -Skripten
  • Wie oft müssen Sie Ihren Linux -Server neu starten??
  • Linux -Download
  • So erstellen Sie inkrementelle und differentielle Backups mit Teer
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten