Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
lpi1:dateirechte [2014/11/26 10:37] ingo_wichmann [Beispiel: Weniger Rechte für Eigentümer und Gruppe] |
lpi1:dateirechte [2017/11/22 11:20] ingo_wichmann [Übung: finde die minimal nötigen Berechtigungen] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Befehle Dateirechte ====== | + | ====== Übung: finde die minimal nötigen Berechtigungen ====== |
- | === Benutzer anlegen === | + | |
- | useradd -m benutzer | + | |
- | === Benutzer löschen === | + | |
- | userdel -r benutzer | + | |
- | === Dateizugriffsrechte betrachten === | + | mkdir -m 000 /tmp/dir1 /tmp/dir2 |
+ | echo geheim > file1 | ||
+ | chmod 000 file1 | ||
+ | |||
+ | Welche Berechtigungen müssen jeweils bei ''/tmp/dir1'', ''/tmp/dir2'' und ''file1'' hinzugefügt werden, damit ''file1'' mit | ||
+ | cp file1 /tmp/dir1/ | ||
+ | ins Verzeichnis ''/tmp/dir1'' kopiert werden kann? | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Welche Berechtigungen müssen jeweils bei ''/tmp/dir1'', ''/tmp/dir2'' und ''file1'' hinzugefügt werden, damit ''file1'' mit | ||
+ | mv /tmp/dir1/file1 /tmp/dir2/ | ||
+ | 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 ====== | ||
+ | ^ Dateizugriffsrechte betrachten | | ||
ls -l datei | ls -l datei | ||
- | === Verzeichnisrechte betrachten === | + | | |
+ | ^ Verzeichnisrechte betrachten | | ||
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 {} + |
- | oder schneller | + | | |
- | 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 82: | Zeile 94: | ||
</file> | </file> | ||
- | ====== Beispiel: Weniger Rechte für Eigentümer und Gruppe ====== | + | ====== Übung: Weniger Rechte für Eigentümer und Gruppe ====== |
- | ''/tmp/datei256'' : | + | ''/tmp/datei356'' : |
<file> | <file> | ||
#!/bin/bash | #!/bin/bash | ||
echo executable | echo executable | ||
</file> | </file> | ||
- | chmod 256 /tmp/datei256 | + | chmod 356 /tmp/datei356 |
- | ====== Beispiel: Gruppenzugehörigkeiten leben länger als man denkt ====== | + | Wer darf was? |
+ | |||
+ | | ''r'' ''w'' ''x'' ^Mitglied der Gruppe ^nicht Mitglied der Gruppe^ | ||
+ | ^ Besitzer| ''_'' ''_'' ''_'' | ''_'' ''_'' ''_'' | | ||
+ | ^ nicht Besitzer| ''_'' ''_'' ''_'' | ''_'' ''_'' ''_'' | | ||
+ | ====== Beispiel: Gruppenzugehörigkeiten kleben am Prozess länger als man denkt ====== | ||
groupadd projekt | groupadd projekt | ||
useradd -m -G projekt iw | useradd -m -G projekt iw | ||
Zeile 106: | Zeile 123: | ||
echo test1 >> /tmp/datei | echo test1 >> /tmp/datei | ||
- | ====== Beispiel: Ungewollte Reinkarnation unter Linux ====== | + | ====== Beispiel: Ungewollter Eigentümerwechsel nach dem Löschen eines Nutzers ====== |
useradd -m chef | useradd -m chef | ||
userdel chef | userdel chef | ||
Zeile 113: | Zeile 130: | ||
====== Beispiel: Auswirkung von mount-Optionen ====== | ====== Beispiel: Auswirkung von mount-Optionen ====== | ||
- | mkdir /mnt/hda2 | + | mkdir /mnt/sda2 |
- | mount -o ro /dev/hda2 /mnt/hda2 | + | mount -o ro /dev/sda2 /mnt/sda2 |
- | touch /mnt/hda2/test | + | touch /mnt/sda2/test |
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 | | ||
|nosuid | S-BIT wird ignoriert | | |nosuid | S-BIT wird ignoriert | | ||
- | |noatime|Keine Aktualisierung der atime | | ||
- | |relatime|atime wird nur aktualisiert, wenn ein Schreibzugriff in der inode erfolgt | | ||
|ro | Dateien sind nicht veränderbar | | |ro | Dateien sind nicht veränderbar | | ||
+ | ====== Beispiel: Ungewollter Eigentümerwechsel bei Backup und Restore ====== | ||
+ | === Server A === | ||
+ | |||
+ | useradd -u 2000 nutzer_a | ||
+ | useradd -u 2001 nutzer_b | ||
+ | useradd -u 2002 nutzer_c | ||
+ | useradd -u 2003 nutzer_d | ||
+ | |||
+ | === Server B === | ||
+ | useradd -u 2000 nutzer_a | ||
+ | useradd -u 2003 nutzer_b | ||
+ | useradd -u 2001 nutzer_e | ||
+ | |||
+ | mkdir /tmp/backup | ||
+ | |||
+ | === Server A === | ||
+ | mkdir /tmp/workdir | ||
+ | touch /tmp/workdir/file_{a,b,c,d} | ||
+ | chown nutzer_a /tmp/workdir/file_a | ||
+ | chown nutzer_b /tmp/workdir/file_b | ||
+ | chown nutzer_c /tmp/workdir/file_c | ||
+ | chown nutzer_d /tmp/workdir/file_d | ||
- | ====== Einstellung zum Erzeugen neuer Dateien ====== | + | rsync -a /tmp/workdir/file_* server_b:/tmp/backup |
- | umask 007 z.B. Für Gruppenarbeit | + | |
- | umask 077 z.B. Für Singles, Einzelarbeiter | + | |
- | /etc/profile Systemweite Einstellen der umask | + | === Server B === |
+ | ls -l /tmp/backup | ||
+ | === Server A === | ||
- | + | mkdir /tmp/restore | |
+ | rsync -a server_b:/tmp/backup/file_* /tmp/restore | ||
+ | ls -l /tmp/restore | ||
====== Links ====== | ====== Links ====== |