Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
admin_grundlagen:symbolische_links [2016/01/12 16:33] ingo_wichmann angelegt |
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 |