Zugriffsrechte & Users     [1.3]

Teil 3

Nachdem man sich durch die Rechte der Benutzer (User) gekämpft hat, fehlt eigentlich nur noch die Rechte für die Gruppe.

In einem Mehrbenutzersystem vergibt man eigentlich keine Recht auf Dateien an einen bestimmten User, außer der Ersteller oder Owner oder Besitzer eine Datei.

Es sollten ich der Verwaltung der Rechtevergabe eigentlich nur noch von Gruppen die Rede sein. Deshalb hat die sekundäre Gruppe eines Users  den Usernamen (Anmeldenamen) des Hauptbenutzers im OS Debian/GNU erhalten ( siehe Teil 2).

1. Verzeichnis - Datei - User/Gruppen

1.3 Datei - Rechte  - User/Gruppen

Wie erzeugt man Gruppen, die nicht mit einem User direkt in Verbindung stehen.

Das geschieht mit dem Befehl "sudo addgroup verwaltung" . Diese Gruppen kann man später als organisatorische Gruppen für die Rechtevergabe verwenden.

Daraufhin sieht man sich die Datei /etc/group an und sieht sich das Ergebnis :

uvr:x:1000:

ub:x:1001:

verwaltung:x:1002:

mitarbeiter-1:x:1003:

          |              |     └──      GID Gruppen Identifikation

          |             └──────  Passwort verschlüsselt

         └──────────      Gruppen-Name

Die Datei /etc/passwd zeigt folgendes an:

uvr:x:1000:1000:Uwe von Royen,,,:/home/uvr:/bin/bash

ub:x:1001:1001:Uwe Brentano,,,:/home/ub:/bin/bash

mitarbeiter-1:x:1002:1003:Mit,,,:/home/mitarbeiter-1:/bin/bash

 

Die Gruppe "verwaltung" hat wie geplant keine Abhängigkeit zu einem Benutzer .

Die User-Identifikation (UID)1002 kann quasi nicht mehr automatisch mit der GID 1002 verbunden werden. Es ist also nicht mehr möglich den User mit der UID 1002 mit der GID 1002 unter dem Namen "mitarbeiter-1" als Sekundäre-Gruppe zu verknüpfen.

Die Primäre-Gruppe zu "mitarbeiter-1" hat die GID 1003, daraus kann man folgendes rückschießen (Der Beweis für Rückschluß ist noch nicht erbracht, ich kann also hier komplett falsch liegen!) :

Es gibt 2 Zähler im System. Der eine ist nur für die UID der andere unabhängig davon nur für die GID zuständig. Beide Zähler müssen nicht können aber synchron laufen.

 

 Account der Benutzers "mitarbeiter-1" ergibt im Terminalfenster mit Befehl:

mitarbeiter-1@uvr-HP-Pavilion-17-Notebook-PC:~$ id

uid=1002(mitarbeiter-1) gid=1003(mitarbeiter-1) Gruppen=1003(mitarbeiter-1), 1002(verwaltung)

oder

uvr@uvr-HP-Pavilion-17-Notebook-PC:~$  groups mitarbeiter-1

mitarbeiter-1 : mitarbeiter-1 verwaltung


Aber Achtung es gibt mit "usermod" doch die Möglichkeit eine Verknüpfung von UID-1002 mit einer GID-1002 herzustellen, so das es doch eine Sekundäre-Gruppe von UID-1002 ist.

 

1. Test

Wie geht man vor:

root@uvr-HP-Pavilion-17-Notebook-PC:/home/uvr# usermod -g verwaltung mitarbeiter-1

root@uvr-HP-Pavilion-17-Notebook-PC:/home/uvr# groups mitarbeiter-1

mitarbeiter-1 : verwaltung

root@uvr-HP-Pavilion-17-Notebook-PC:/home/uvr# id mitarbeiter-1

uid=1002(mitarbeiter-1) gid=1002(verwaltung) Gruppen=1002(verwaltung)


Was steht jetzt in der /etc/passwd und /etc/group?

/etc/passwd :      mitarbeiter-1:x:1002:1002:Mit,,,:/home/mitarbeiter-1:/bin/bash 

/etc/group    :      verwaltung:x:1002:mitarbeiter-1

                               mitarbeiter-1:x:1003:


Wir machen das ganze einmal rückgängig in dem wir folgenden Befehl absetzen:

root@uvr-HP-Pavilion-17-Notebook-PC:/home/uvr# usermod -g mitarbeiter-1 mitarbeiter-1

root@uvr-HP-Pavilion-17-Notebook-PC:/home/uvr# deluser mitarbeiter-1 verwaltung

Entferne Benutzer »mitarbeiter-1« aus Gruppe »verwaltung« ...

Fertig.

Zustand jetzt wieder wie am Anfang von 1.3!

/etc/passwd :      mitarbeiter-1:x:1002:1002:Mit,,,:/home/mitarbeiter-1:/bin/bash 

/etc/group    :      verwaltung:x:1002:

                               mitarbeiter-1:x:1003:

 

2. Test

Am Terminal machen wir folgende Schritte:

1. Schritt

    2 Benutzer (User) neu anlegen.

    adduser mitarbeiter-2

    adduser mitarbeiter-3

    cat /etc/passwd

   ...

   mitarbeiter-1:x:1002:1003:Mit-1,,,:/home/mitarbeiter-1:/bin/bash

   mitarbeiter-2:x:1003:1004:Mit-2,,,:/home/mitarbeiter-2:/bin/bash

   mitarbeiter-3:x:1004:1005:Mit-3,,,:/home/mitarbeiter-3:/bin/bash

 

2.Schritt 

   Mit2, Mit-3 zur Gruppe "verwaltung"  hinzunehmen.

   root@uvr-HP-Pavilion-17-Notebook-PC:/home/uvr# tail -n 6 /etc/group

    uvr:x:1000:

    ub:x:1001:

    verwaltung:x:1002:mitarbeiter-2,mitarbeiter-3  <---- hier zur Gruppe hinzugefügt

    mitarbeiter-1:x:1003:

    mitarbeiter-2:x:1004:

    mitarbeiter-3:x:1005:

 

3.Schritt

   Im Verzeichnis /tmp/ legen wir ein Unterverzeichnis /test-mit-x an.

   Haben also folgendes Konstrukt: /tmp/test-mit-x mit "root" angelegt.

   Rechtevergabe: drwxr-xr-x 2 root root 4096 Jan  5 18:57 test-mit-x

   

4.Schritt

    Weisen dem Verzeichnis /tmp/test-mit-x eine andere Gruppe zu:

    chgrp verwaltung /tmp/test-mit-x

    ls -l

    drwxr-xr-x 2 root verwaltung 4096 Jan  5 18:57 test-mit-x

 

5.Schritt

   Geben der Gruppe noch Schreibrechte auf das Verzeichnis:

   chmod g+w /tmp/test-mit-x

   ls -l

   drwxrwxr-x 2 root verwaltung 4096 Jan  5 18:57 test-mit-x


6.Schritt

   Lege in dem Verzeichnis folgende Dateien an:

   Als "root"

   root@uvr-HP-Pavilion-17-Notebook-PC:/tmp/test-mit-x# nano root-text.txt

  Als "mit-2"

  mit-2@uvr-HP-Pavilion-17-Notebook-PC:/tmp/test-mit-x# nano mit-2-text.txt

  ls -l

  -rw-rw-r-- 1 mitarbeiter-2 mitarbeiter-2   66 Jan  5 19:31 mit-2-text.txt

  -rw-r--r-- 1 root          root            29 Jan  5 19:25 root-text.txt


 Welche Rechte hat der Benutzer 'uvr' ?

 "uvr" kann:

  • Verzeichnis wechsel
  • mit-2-text.txt und root-text.txt lesen
  • kein Änderungen an der Originaldatei mit-2-text.txt oder root-text.txt vornehmen
  • mit-2-text.txt und root-text.txt nicht löschen
  • aber Achtung: kann mit-2-text.txt und root-text.txt kopieren und in seinem eigenem Verzeichnis speichern und dann Veränderungen vornehmen

 Damit auch kopieren möglich ist, muß der Gruppe "Andere oder other" auch die Lese-Rechte  genommen werden. 

 chmod o-r test-mit-x --> drwxrwx--x 3 root verwaltung 4096 Jan  5 19:38 test-mit-x

Der User kann jetzt noch in das Verzeichnis wechsel, da das Recht "x" noch die Gruppe "Andere" besitzt.

Also ist wäre der Befehl: chmod o= bessere Lösung, da dann alle Rechte der Gruppe "Andere" genommen abgefangen werden.

drwxrwx--- 3 root verwaltung 4096 Jan  5 19:38 test-mit-x

 

Achtung:

Es ist eigentlich hier sinnvoller das Recht des Lesens auf der Verzeichnis-Ebene zu nehmen, als wenn man für jede Datei das Recht einzeln wegnimmt.

 

3. Test

3.1

Wir wollen jetzt die Funktion der Sekundär-Gruppe ausprobieren.

Dazu melden wir uns als "mitarbeiter-2" an

Wir fügen der Benutzer "uvr" int die Sekundäre-Gruppe "mitabeiter-2" hinzu und wollen überprüfen welche Rechte der Benutzer "uvr" hinsichtlich des Verzeichnisses "test-text-x" der der darin enthaltenen Dateien hat.

/etc/group     -->  mitarbeiter-2:x:1004:uvr  --> keinen Zugriff aufs Verzeichnis und auf Dateien!

                              verwaltung:x:1002:mitarbeiter-2,mitarbeiter-3

 

Das Verhalten ist absolut korrekt!

Ich versuche es mal zu begründen. 

Bei der Gruppe "verwaltung" handelt es sich um eine Organisatorische Gruppe, deren einziger Zweck ist als Sammelcontainer für diejenigen Personen zudienen, die auf das Verzeichnis "test-text-x" zugreifen sollen. Dieses Zugriffs-Recht kann nur an die Benutzer direkt weitergegeben werden, das bedeutet, das der Benutzer namentlich in der Liste des Sammelcontainer eingetragen sein muss.

/etc/group     -->  mitarbeiter-2:x:1004:uvr  

                              verwaltung:x:1002:mitarbeiter-2,mitarbeiter-3


Rechte können aber nicht nach dem Prinzip von Kaskaden/Staffellauf weiter gegeben werden.


Wie schon im Teil 2 erwähnt ist, erhält die Organisatorische Gruppe ihre Rechte als Sekundär-Gruppe vom File-Verzeichnis "test-text-x".

drwxrwx--- 3 root verwaltung 4096 Jan  6 16:19 test-mit-x

 

Damit haben alle eingetragenen Benutzer in der Gruppe "verwaltung" ihre Zugriffsrechte im Verzeichnis "test-mit-x"erhalten, ohne namentlich nochmal genannt werden zu müssen.


Was hat das aber für Auswirkungen auf die einzelnen Dateien im Verzeichnis "test-text-x"?

Wir müssen unterscheiden zwischen schon bestehenden Dateien und neu erzeugten Dateien der einzelnen Mitgliedern der Gruppe "verwaltung".


3.2

Die Benutzer  "mitarbeiter-2" und "mitarbeiter-3" legen jeweils eine Datei und ein Verzeichnis an.

Im Terminal:

drwxrwxr-x 2 mitarbeiter-2 mitarbeiter-2 4096 Jan  8 16:17 mit-2-test-ordner

-rw-rw-r-- 1 mitarbeiter-2 mitarbeiter-2   31 Jan  8 11:40 mit-2-test.txt

drwxrwxr-x 2 mitarbeiter-3 mitarbeiter-3 4096 Jan  8 11:48 mit-3-test-ordner

-rw-rw-r-- 1 mitarbeiter-3 mitarbeiter-3   31 Jan  8 11:49 mit-3-test.txt


Die Mitarbeiter können die Dateien des anderen jeweils umbenennen, editieren, löschen aber nicht verändern( speichern), da ihnen die jeweiligen Rechte der Sekundäre-Gruppe des anderen fehlen.

Merkwürdig ist zu einem das sie die Dateien und Verzeichnissen des anderen  löschen dürfen und zum anderen die Sekundär-Gruppe nicht "verwaltung" ist, obwohl den Mitarbeitern über die Rechte des übergeordneten Verzeichnis "test-mit-x" der Zugang und die Erlaubnis für "rwx" gewährt wurde.

 

Im Moment habe ich für das Verhalten keine Erklärung ! 

Wenn jemand eine Erklärung dafür hat, bitte mir mitteilen, ich werde die Lösung dann hier veröffentliche!


Es gibt zwei Lösungen für das Speicherproblem bzw. die vollständige Rechtevergabe.

3.2.1

Die erste Lösung ist die etwas aufwendigere:

Jeder Benutzer wird Mitglied der sekundären Gruppe des anderen Benutzers. (Kreuzreferenz)

adduser mitarbeiter-2 mitarbeiter-3

adduser mitarbeiter-3 mitarbeiter-2


cat /etc/group

mitarbeiter-2:x:1004:uvr,mitarbeiter-3

mitarbeiter-3:x:1005:mitarbeiter-2

Die "mitarbeiter-(2/3)" haben jetzt vollen Zugriff auf alle Dateien und Verzeichnisse.

Man kann diese Lösung mal eben  für ein oder zwei Benutzer an einem gemeinsam genutzten verwenden, aber für mehrere Benutzer ist das ganz zu aufwendig und zu fehleranfällig. 


3.2.2

Es gibt eine viel elegantere Lösung.

Dafür habe ich zuerst einmal die Lösung von 3.2.1 rückgängig gemacht.

Im Terminal:

deluser mitarbeiter-3 mitarbeiter-2

deluser mitarbeiter-2 mitarbeiter-3


Die Benutzung des SGID-Bit bittet hier eine sehr gute Lösung des Problems.

Im Terminal:

ls -l

drwxrwxrwx 4 root verwaltung 4096 Jan  8 18:19 test-mit-x

 

chmod g+s 

drwxrwsrwx 4 root verwaltung 4096 Jan  8 18:19 test-mit-x

 

cd test-mit-x

ls -l

drwxrwxr-x 2 mitarbeiter-2 mitarbeiter-2 4096 Jan  8 18:13 mit-2-test-ordner

-rw-rw-r-- 1 mitarbeiter-2 mitarbeiter-2   21 Jan  8 18:17 mit-2-test.txt

drwxrwxr-x 2 mitarbeiter-3 mitarbeiter-3 4096 Jan  8 18:18 mit-3-test-ordner

-rw-rw-r-- 1 mitarbeiter-3 mitarbeiter-3   21 Jan  8 18:19 mit-3-test.txt

 

Dies sind die alten Dateien, da hat sich leider nichts sichtbares an den Rechten verändert. Es herrschen die Rechte wie in 3.2.1.  

Dagegen ergibt sich bei der Neuanlage von Dateien und Verzeichnissen folgendes Bild:

drwxrwsr-x 2 mitarbeiter-2 verwaltung    4096 Jan  8 18:34 mit-2-ordner-sgid

drwxrwxr-x 2 mitarbeiter-2 mitarbeiter-2 4096 Jan  8 18:13 mit-2-test-ordner

-rw-rw-r-- 1 mitarbeiter-2 mitarbeiter-2   21 Jan  8 18:17 mit-2-test.txt

-rw-rw-r-- 1 mitarbeiter-2 verwaltung       0 Jan  8 18:34 mit-2-text-sgid.txt

drwxrwxr-x 2 mitarbeiter-3 mitarbeiter-3 4096 Jan  8 18:18 mit-3-test-ordner

-rw-rw-r-- 1 mitarbeiter-3 mitarbeiter-3   21 Jan  8 18:19 mit-3-test.txt


Auf die neue Datei und das neue Verzeichnis (blau) vom Benutzer "mitarbeiter-2" können jetzt ohne Probleme alle Mitglieder der organisatorischen Gruppe "verwaltung" zugreifen.

Dasselbe Verhalten bei der Erstellung neuer Daten gilt natürlich auch für den Benutzer "mitarbeiter-3".

 

Die schon bestehenden Dateien aus 3.2.1 gibt es nur die Möglichkeit die Dateien aus dem Verzeichnis heraus zu kopieren und dann wieder hinein zu kopieren. Der "Move" befehlt zeigt leider keine Auswirkung auf das SGID-Bit. Nur ein Befehl der das tatsächliche "neuschreiben" bewirkt hat die gewünschte Wirkung durch das SGD-Bit.

"mitarbeiter-3" alte Datei "mit-3-test.txt" mit <strg>+<c>  oder <strg>+<x>   kopiert und mit <strg>+<v>  wieder eingefügt, was eine Schreibvorgang ist! 

Zusammenfassung:

Es gibt viele Diskussionen über den Einsatz von SGID / SUID wegen Bedenken hinsichtlich des Schutzes. Aber .... der falsche Gebrauch, der leichtfertige Einsatz von  Rechtevergabe egal ob es sich um Grundprinzipien oder  NIS oder ADS oder ACL handelt, machen eine vernünftige Planung von Rechten keineswegs überflüssig.

Um sich eine kleine Arbeitsumgebung mit 2 oder 3 Personen zu teilen muss man nicht immer "große Geschütze" einsetzen, denn diese System (NIS,ACL) sind nur von oben dem Linux aufgepfropft worden, sind dort Fehler wird die Sicherheit nicht besser.

Die Basis muss stimmen und damit einigermaßen die Sicherheit!

Auf die Systeme NIS und ACL werde ich in einem anderen Artikel noch eingehen!

Wichtige Links:

Benutzer und Gruppen:  http://wiki.ubuntuusers.de/Benutzer_und_Gruppen

                                           http://wiki.ubuntuusers.de/usermod

SGID und SUID                http://de.wikipedia.org/wiki/Setgid      

                                           http://de.wikipedia.org/wiki/Setuid

                                           http://de.wikipedia.org/wiki/Sticky_Bit

Gruppenverwaltung     :  http://troubadix.dn.fh-koeln.de/unix/gruppen.html

                                           http://docs.oracle.com/cd/E24841_01/html/E23287/secfile-60.html