Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste Überarbeitung Beide Seiten, nächste Überarbeitung | ||
admin_grundlagen:dateirechte [2017/01/13 22:47] ingo_wichmann [Beispiel: Weniger Rechte für Eigentümer und Gruppe] |
admin_grundlagen:dateirechte [2020/12/08 09:26] holger_jakobs [Übung: Weniger Rechte für Eigentümer und Gruppe] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Übung: finde die minimal nötigen Berechtigungen ====== | ====== Übung: finde die minimal nötigen Berechtigungen ====== | ||
- | mkdir -m 000 dir1 dir2 | + | mkdir -m 000 /tmp/dir1 /tmp/dir2 |
echo geheim > file1 | echo geheim > file1 | ||
chmod 000 file1 | chmod 000 file1 | ||
- | Welche Berechtigungen müssen jeweils bei ''dir1'', ''dir2'' und ''file1'' hinzugefügt werden, damit ''file1'' mit | + | Welche (minimalen) Berechtigungen müssen jeweils bei ''/tmp/dir1'', ''/tmp/dir2'' und ''file1'' hinzugefügt werden, damit ''file1'' mit |
- | cp file1 dir1/ | + | cp file1 /tmp/dir1/file2 |
- | ins Verzeichnis ''dir1'' kopiert werden kann? | + | ins Verzeichnis ''/tmp/dir1'' kopiert werden kann? |
- | Welche Berechtigungen müssen danach jeweils bei ''dir1'', ''dir2'' und ''file1'' hinzugefügt werden, damit ''file1'' mit | + | ---- |
- | mv dir1/file1 dir2/ | + | |
+ | Welche (minimalen) Berechtigungen müssen jeweils bei ''/tmp/dir1'', ''/tmp/dir2'' und ''file2'' hinzugefügt werden, damit ''file2'' mit | ||
+ | mv /tmp/dir1/file2 /tmp/dir2/ | ||
ins Verzeichnis ''dir2'' verschoben werden kann? | ins Verzeichnis ''dir2'' verschoben werden kann? | ||
+ | |||
+ | ====== Übung: mit umask Berechtigung setzen ====== | ||
+ | |||
+ | Welche ''umask'' muss man setzen, damit neu angelegte | ||
+ | * Dateien die Berechtigung ''%%rw- r-- -w-%%'' und | ||
+ | * Verzeichnisse die Berechtigung ''rwx r-x -w-'' | ||
+ | bekommen. | ||
====== Befehle Dateirechte ====== | ====== Befehle Dateirechte ====== | ||
- | === Benutzer anlegen === | + | ^ Dateizugriffsrechte betrachten | |
- | useradd -m benutzer | + | |
- | === Benutzer löschen === | + | |
- | userdel -r benutzer | + | |
- | + | ||
- | === Dateizugriffsrechte betrachten === | + | |
ls -l datei | ls -l datei | ||
- | === Verzeichnisrechte betrachten === | + | | |
+ | ^ Dateizugriffsrechte von Dateien im Verzeichnis betrachten | | ||
+ | ls -l verzeichnis | ||
+ | | | ||
+ | ^ Verzeichnisrechte betrachten (nicht der Einträge im Verzeichnis) | | ||
ls -ld verzeichnis | ls -ld verzeichnis | ||
- | + | | | |
- | === Besitzer der Datei ändern === | + | ^ Besitzer der Datei ändern | |
chown benutzer datei | chown benutzer datei | ||
- | === Gruppe der Datei ändern === | + | | |
+ | ^ Gruppe der Datei ändern | | ||
chown :users datei | chown :users datei | ||
chgrp users datei | chgrp users datei | ||
- | + | | | |
- | === SUID Recht der Datei ändern === | + | ^ SUID Recht für die Datei ''/bin/cat'' setzen | Programm starten und real bzw. effective UID ansehen: |
- | chmod u+s programm | + | |
- | + | ||
- | programm starten und real bzw. effective UID prüfen: | + | |
- | ps -eo cmd,ruser,euser | + | |
chmod u+s /bin/cat | chmod u+s /bin/cat | ||
+ | Als Nutzer: | ||
cat & | cat & | ||
- | ps -eo cmd,ruser,euser -C cat | + | ps -C cat -o cmd,ruser,euser |
- | + | | | |
- | === GUID Recht der Datei ändern === | + | ^ Wo darf ich schreiben? | |
- | chmod g+s datei | + | find / /dev -xdev -writable -ls |
- | + | | | |
- | === Gruppen eines Benutzers anzeigen === | + | ^ Was darf eine Gruppe? | |
- | id benutzer | + | |
- | + | ||
- | === Was darf eine Gruppe? === | + | |
find / /dev -xdev -group users -ls | find / /dev -xdev -group users -ls | ||
- | + | | | |
- | === Alle SUID-root Dateien finden === | + | ^ Alle SUID-root Dateien finden | |
find / -xdev -type f -user root -perm /4000 -ls 2>/dev/null | find / -xdev -type f -user root -perm /4000 -ls 2>/dev/null | ||
find / -xdev -type f -perm -u=s -ls | find / -xdev -type f -perm -u=s -ls | ||
- | + | | | |
- | === Allen Programmen das Ausführungsrecht nehmen === | + | ^ Allen Programmen das Ausführungsrecht nehmen | |
- | find verzeichnis/ -type f -perm /0111 -exec chmod a-x {} + | + | find verzeichnis/ -type f -perm /0111 -exec chmod a-x {} \; |
+ | find verzeichnis/ -type f -perm /0111 -print0 | xargs -0 chmod a-x | ||
+ | | | ||
====== Beispiel: Schreibrechte im Verzeichnis - mehr als man denkt ====== | ====== Beispiel: Schreibrechte im Verzeichnis - mehr als man denkt ====== | ||
Zeile 95: | Zeile 99: | ||
====== Übung: Weniger Rechte für Eigentümer und Gruppe ====== | ====== Übung: Weniger Rechte für Eigentümer und Gruppe ====== | ||
- | ''/tmp/datei356'' : | + | Erzeuge eine Datei ''/tmp/datei356'' mit folgendem Inhalt: |
- | <file> | + | <file txt /tmp/datei356> |
#!/bin/bash | #!/bin/bash | ||
echo executable | echo executable | ||
</file> | </file> | ||
+ | |||
+ | Setze die Berechtigungen zu ''356'': | ||
chmod 356 /tmp/datei356 | chmod 356 /tmp/datei356 | ||
Zeile 107: | Zeile 113: | ||
^ Besitzer| ''_'' ''_'' ''_'' | ''_'' ''_'' ''_'' | | ^ Besitzer| ''_'' ''_'' ''_'' | ''_'' ''_'' ''_'' | | ||
^ nicht Besitzer| ''_'' ''_'' ''_'' | ''_'' ''_'' ''_'' | | ^ nicht Besitzer| ''_'' ''_'' ''_'' | ''_'' ''_'' ''_'' | | ||
+ | |||
+ | Tip: | ||
+ | Das Schreiben von Dateien kann man zerstörungsfrei mit | ||
+ | >> /tmp/datei356 | ||
+ | testen. | ||
+ | Das Lesen von Dateien kann man mit | ||
+ | tail /tmp/datei356 | ||
+ | head -0 /tmp/datei356 | ||
+ | testen. ''head -0'' zeigt die ersten 0 Zeilen, also nichts, aber öffnet die Datei. Im Fehlerfall erscheint allerdings eine Meldung, die man ggf. umlenken muss, wenn einem der Exit Status genügt. | ||
+ | (( | ||
+ | sysctl fs.protected_regular | ||
+ | <file> | ||
+ | fs.protected_regular = 2 | ||
+ | </file> | ||
+ | |||
+ | https://www.kernel.org/doc/Documentation/sysctl/fs.txt: | ||
+ | //This protection is similar to protected_fifos, but it | ||
+ | avoids writes to an attacker-controlled regular file, where a program | ||
+ | expected to create one. | ||
+ | |||
+ | When set to "0", writing to regular files is unrestricted. | ||
+ | |||
+ | When set to "1" don't allow O_CREAT open on regular files that we | ||
+ | don't own in world writable sticky directories, unless they are | ||
+ | owned by the owner of the directory. | ||
+ | |||
+ | When set to "2" it also applies to group writable sticky directories.// | ||
+ | |||
+ | )) | ||
+ | |||
====== Beispiel: Gruppenzugehörigkeiten kleben am Prozess länger als man denkt ====== | ====== Beispiel: Gruppenzugehörigkeiten kleben am Prozess länger als man denkt ====== | ||
groupadd projekt | groupadd projekt | ||
Zeile 128: | Zeile 164: | ||
useradd -m raumpflege | useradd -m raumpflege | ||
ls -l /home | ls -l /home | ||
+ | |||
+ | Daher sollte man nach dem Löschen einer Benutzerkennung sämtliche Dateien, die diesem Benutzer gehörten, als ''root'' übernehmen oder einem anderen, für diesen Zweck erstellten technischen Benutzer übereignen. | ||
+ | ====== Beispiel: SUID-Bit Dateien finden und SUID-Bit dauerhaft entfernen ====== | ||
+ | SUID-Bit Dateien finden (als root): | ||
+ | |||
+ | find / /boot -xdev -perm /u+s -type f -user root -ls | ||
+ | |||
+ | SUID-Bit dauerhaft entfernen: | ||
+ | Ubuntu / Debian: | ||
+ | dpkg-statoverride --update --add root root 0755 /bin/ping | ||
====== Beispiel: Auswirkung von mount-Optionen ====== | ====== Beispiel: Auswirkung von mount-Optionen ====== | ||
Zeile 135: | Zeile 181: | ||
Weitere Mount-Optionen mit Auswirkungen auf Dateirechte: | Weitere Mount-Optionen mit Auswirkungen auf Dateirechte: | ||
- | |Option |Bedeutung| | + | ^Option ^Bedeutung| |
|nodev |Gerätedateien sind nicht erlaubt| | |nodev |Gerätedateien sind nicht erlaubt| | ||
|noexec | Ausführbare Dateien sind nicht erlaubt | | |noexec | Ausführbare Dateien sind nicht erlaubt | | ||
Zeile 176: | Zeile 222: | ||
ls -l /tmp/restore | ls -l /tmp/restore | ||
- | ====== Links ====== | + | |
- | * [[ http://www.heise.de/security/news/meldung/69292 | Sind ACLs unter Windows "besser"? ]] | + | |
- | * [[ http://www.matthiess.de/freie-software/linux/posix-acl-erste-schritte | Erste Schritte mit posix-acls ]] | + | |
- | * [[ http://www.suse.de/~agruen/acl/linux-acls/online | Detailierte Beschreibung Linux ACLs ]] | + | |