Zugriffsrechte

chmod

Entferne das Ausführrecht für alle Benutzer für /tmp/foo:

chmod a-x /tmp/foo
cd /tmp/foo
>> bash: cd: /tmp/foo/: Permission denied
touch /tmp/foo/bar
>> touch: cannot touch `/tmp/foo/bar': Permission denied
ls /tmp/too
>> <Funktioniert!>

Verzeichnis ist also ‘festgebacken’ - User können sich den Inhalt anzeigen lassen, sonst aber nichts.

Man kann sich je nach Rechtevergabe relativ interessante Konfigurationen erstellen - Je nach Bedarf

  • Linux beachtet die Rechte in folgender Reihenfolge:

    User vor Gruppe vor Rest
    

Ein Verzeichnis, dass deinem Benutzer keine Rechte einräumt, deiner Gruppe aber alle Rechte, kann von deinem Benuzter nicht verwendet werden, jedoch von einem anderen Nutzer deiner Gruppe.

Schreibrechte im Verzeichnis vorhanden? Jede Datei in dem Verzeichnis kann gelöscht werden, egal wem diese gehört, und wie dessen Rechte sind.

chown

Besitzer (und Gruppe) einer Datei festlegen:

chown Benutzer:Gruppe /Pfad/zur/Datei

chown -R => Rekursiv für alle Unterdateien

chown :Gruppe => Nur die Gruppe festlegen

chgrp

Gruppe einer Datei festlegen:

chgrp Gruppe /Pfad/zur/Datei
AktionBuchstabeOktal
Lesenr4
Schreibenw2
Ausführenx1

Sticky-Bit

  • Auf Verzeichnisse: Nur Besitzer und Root dürfen Dateien löschen (Bsp: /tmp)

  • Auf Dateien: möglich, wird aber i.d.R. ignoriert

ls -ld /tmp/
drwxrwxrwt 15 root root 4096 2011-12-03 12:29 /tmp/

Verzeichnis hat das Sticky-Bit gesetzt.

Ist das t groß, dann ist das Ausführen-Flag (x) nicht gesetzt.

  • SUID

    • Programm wird immer im Kontext des Besitzers ausgeführt (Bsp: passwd)
  • SGID

    • Programm wird immer im Kontext der Gruppe ausgeführt
ls -ld /usr/bin/passwd
-rwsr-xr-x 1 root root 42824 2011-06-24 11:28 /usr/bin/passwd

passwd kann von jedem Ausgeführt werden, läuft aber immer als root!

Ist das S groß, dann ist das Ausführen Flag (x) nicht gesetzt.

AktionBuchstabeOktal
SUIDs4
SGIDs2
Sticky-Bitt1

umask

Legt fest, welche Rechte für neue Dateien gesetzt werden sollen Berechnet sich durch NAND():

666 - 022 = 644

umask 053:

666 - 053 = 613
touch demo
ls -l

>> -rw--w-r-- ~blafasel~ demo

Stimmt nicht ganz

mkdir test
ls -l

>> drwx-wSr-- ~blafasel~ test

Scheint doch zu stimmen

Man kann umask auch mit lustigen Argumenten aufrufen:

  • umask -S u+rw u=rwx,g=,o=
  • umask -p umask 0077
  • umask -S u+rw,g=r u=rwx,g=r,o=
  • umask -p umask 0037