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 noch!

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ämt, 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
Recht Buchstabe Oktal
Lesen r 4
Schreiben w 2
Ausführen x 1

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
Recht Buchstabe Oktal
SUID s 4
SGID s 2
Sticky-Bit t 1

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