[linux-l] rwx wird bei mir nix

Peter Ross Peter.Ross at bogen.in-berlin.de
Fr Mär 22 00:14:17 CET 2013


On Thu, 21 Mar 2013, Boris Kirkorowicz wrote:

> Hallo,
>
> Am 20.03.2013 23:54, schrieb Peter Ross:
>> Wie gesagt, setze die umask - und es ist gut.
>> Das kannst Du auch in den .-filees des Nutzers tun.
>> Wenn Du's nicht machst, geht es natürlich nicht.
>> Die umask für ein Filesystem zu setzen, ist Unsinn. Das ist Holzhammer und
>> macht auch mehr kaputt als das es hilft.
>
> die umask global zu setzen ist noch viel mehr Holzhammerer als nur für
> einen mount.

Das ist falsch, Du kannst es auf Nutzerbasis machen ($HOME/.bashrc z.B.)

Es ist wie gesagt eine Voreinstellung bei Ubuntu, und durch ordentliche 
Defaultgruppen auch absolut unkritisch.

Utilities wie adduser erstellen neue Nutzer mit diesen Defaultgruppen, und 
nur der Admin kann das ändern. Wenn Du da nichts machst (und warum 
solltest Du?) ist das alles sauber.

[Natürlich ist es jedem Admin überlassen, sich selbst in den Fuß zu 
schießen]

Wenn für die Gruppe Schreibrechte gesetzt werden, und ich der einzige bin, 
der dieser Gruppe angehört, ist da in keiner Weise die Sicherheit 
gefährdet.

Das Sticky-Bit ändert die Gruppe, dem die Datei gehört, nur für diesen 
Verzeichnisbaum, und es erlaubt Schreiben für die Gruppenmitglieder.

Das ist genau so definiert, wie Du es möchtest, für die richtige Location. 
nicht für ein ganzes Filesystem.

Vergiß, das umask 0002 für "echte" Nutzer (nicht Systemnutzer) schlecht 
ist - das ist purer Unsinn.

Bei Unix haben sich ein paar Leute Gedanken gemacht, seit 1970. Wenn 
Gruppenschreibrechte und setgid-Flags, und die Möglichkeit, die zu setzen, 
so böse wären, gäbe es sie nicht.

>> Es ist ein Workaround für Systeme, die keine Rechte kennen, wie z.B. ein
>> FAT auf dem USB-Stick, der rechtemäßig normalerweise dem Besitzer der
>> Konsole (dem vor dem Rechner) gehört.
>
> Es geht um ext4.

Das ist richtig. Du hattest mal bemängelt, daß ext4 dieses 
setgid/umask-Optionen nicht hatte. Weil es eben ordentliche Rechte kennt, 
und Du Rechte freingranuliert für Dateien, Verzeichnisse oder 
Verzeichnisbäume setzen kannst.

> Aber lass gut sein, ich habe mich bereits damit abgefunden, dass die
> Dateirechte halbautomatisiert nachträglich gesetzt werden müssen.

Das ist wirklich kaputt. Viel Spaß mit find oder so und I/O-Belastung und 
race conditions.

Was ein System kann, und wenn man es ordentlich anwendet, muß man nicht 
nachbessern.

Ich habe so ein Netzwerk mal ererbt. Das Ausmisten hat richtig Spaß 
gemacht :-o

Mal abgesehen, daß Du damit wirklich die Sicherheitseinstellungen der 
Nutzer überschreibst.

Wenn ich jetzt in Deinen Laden komme und was mit Dir teilen soll, mag ich 
vielleicht eine Datei darein stellen, denke mir, daß ist aber noch nicht 
so, daß jemand anders das sehen sollte.

Dann setze ich es auf 600. Nur ich kann es lesen. Und zehn Minuten später 
gibt Dein Cron das frei und macht es 664.

Das nenne ich Sicherheitslücke.

Das Setzen von Dateirechten ist mit Absicht dem Nutzer überlassen, denn 
nur der kann wirklich wissen, wer denn das lesen oder schreiben soll.

umask und Defaultgruppe sind die Hilfsmittel, die dem Nutzer das Denken 
oft "abnimmt", denn viele wollen sich damit gar nicht auseinandersetzen.

Aber es sollte nicht dazu führen, dem Nutzer ins Handwerk zu pfuschen.

Ein System, das nachträglich Dateirechte ändert, kann nicht als 
vertrauenswürdig bezeichnet werden.

Eine Nebenbemerkung noch zu Verzeichnisrechten, r und x.

# ls -lisa test3
total 44
18481456  4 drwxr-xr-x  2 root   root    4096 Mar 22 09:58 .
18350088 28 drwx------ 64 petros petros 24576 Mar 22 09:58 ..
18481493 12 -rw-rw-r--  1 petros petros    19 Mar 22 09:58 testdatei
# sudo chmod 711 test3
# ls -lisa test3
ls: cannot open directory test3: Permission denied
# sudo ls -lisa test3
total 44
18481456  4 drwx--x--x  2 root   root    4096 Mar 22 09:58 .
18350088 28 drwx------ 64 petros petros 24576 Mar 22 09:58 ..
18481493 12 -rw-rw-r--  1 petros petros    19 Mar 22 09:58 testdatei

Ich (ohne sudo) kann also ohne r-Bit nicht das Verzeichnis lesen.

Aber:
# cat test3/testdatei
Das ist ein Test.
# cd test3
# pwd
/home/petros/test3

Ich kann also reinwechseln und eine Datei darinnen lesen.

Auf die Art und Weise kann man das Durchsuchen von Verzeichnisbäumen 
unmöglich machen, aber trotzdem kann ich eventuell eine bestimmte Datei 
jemand anders zugänglich machen, wenn ich ihm die Existenz mitteile (denn 
finden kann er sie nicht).

Viel Spaß noch
Peter


Mehr Informationen über die Mailingliste linux-l