Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:symbolische_links [2016/01/14 11:09] ingo_wichmann [verwaiste Symlinks finden] |
admin_grundlagen:symbolische_links [2022/07/19 12:29] (aktuell) |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ===== Symbolische Links ===== | + | ====== Symbolische Links ====== |
| + | ===== Grundlegende Beispiele ===== | ||
| + | cp /etc/passwd . | ||
| ln -s passwd passwd-symlink | ln -s passwd passwd-symlink | ||
| ls -li passwd* | ls -li passwd* | ||
| Zeile 6: | Zeile 8: | ||
| Übungen 6.22 - 6.24 | Übungen 6.22 - 6.24 | ||
| - | cp -r /usr/share/doc . | + | === Übung: cp -a vs. cp -r === |
| - | find doc -printf '%y\n' | sort | uniq -c | + | cp -r /usr/share/doc doc-r |
| - | rm -r doc | + | find doc-r -printf '%y\n' | sort | uniq -c |
| - | cp -a /usr/share/doc . | + | cp -a /usr/share/doc doc-a |
| - | find doc -printf '%y\n' | sort | uniq -c | + | find doc-a -printf '%y\n' | sort | uniq -c |
| - | Übrig gebliebene Userfiles nach dem Löschen des Users dem Benutzer root übergeben: | + | Unterschiede? |
| - | find / -xdev -uid 1002 -print0 | xargs -0 chown --no-dereference root | + | |
| + | ===== Wo befinden sich auf meinem System Symlinks? ==== | ||
| + | find / -xdev -type l -ls | ||
| + | find / -xdev -type l -printf '%h\n' | uniq -c | ||
| + | |||
| + | ===== Probleme mit Symlinks ===== | ||
| + | |||
| + | Symlinks werden von machen Entwicklern als problematisch gesehen: https://lwn.net/Articles/899543/ | ||
| + | |||
| + | ==== Übrig gebliebene Dateien eines Users nach dem Löschen des Users dem Benutzer root übergeben ==== | ||
| + | find / -xdev -uid 1002 -exec chown --no-dereference root {} + | ||
| ==== verwaiste Symlinks finden ==== | ==== verwaiste Symlinks finden ==== | ||
| - | find . -L -type l -ls | + | find -L . -type l -ls |
| + | |||
| + | ==== Link-Schleife ==== | ||
| + | ln -s a b | ||
| + | ln -s b a | ||
| + | # Es geht noch kürzer: ln -s a a | ||
| + | |||
| + | cat a | ||
| + | ==== Beispiel: Symlink-Attacke ==== | ||
| + | Funktioniert nur, wenn ''fs.protected_symlinks'' **aus**geschaltet ist: | ||
| + | sysctl fs.protected_symlinks | ||
| + | -> ''fs.protected_symlinks = 0'' | ||
| + | |||
| + | Als root: | ||
| + | echo 'please save me' > /etc/save-me | ||
| + | echo '* * * * * echo "you are lost" > /tmp/date-$(date +\%H:\%M)' | crontab - | ||
| + | |||
| + | Als nutzer: | ||
| + | ln -s /etc/save-me /tmp/date-09:58 | ||
| + | |||
| + | Um 9:58 wird root per cron die Datei ''/etc/save-me'' überschreiben | ||
| + | |||
| + | ==== Beispiel: protected_symlinks ==== | ||
| + | Funktioniert nur, wenn ''fs.protected_symlinks'' **ein**geschaltet ist: | ||
| + | sysctl fs.protected_symlinks | ||
| + | -> ''fs.protected_symlinks = 1'' | ||
| + | mkdir -m 1777 offen.d/ | ||
| + | cd offen.d/ | ||
| + | touch datei | ||
| + | ln -s datei symlink | ||
| + | sudo chown --no-dereference nobody symlink | ||
| + | cat symlink | ||
| + | -> ''Keine Berechtigung'' bzw. ''Permission denied'' | ||
| + | ==== Dokus und Links ==== | ||
| + | * https://www.kernel.org/doc/Documentation/sysctl/fs.txt | ||
| + | * https://de.wikipedia.org/wiki/Symlink-Schwachstelle | ||