====== Symbolische Links ====== ===== Grundlegende Beispiele ===== cp /etc/passwd . ln -s passwd passwd-symlink ls -li passwd* ls -liH passwd* Übungen 6.22 - 6.24 === Übung: cp -a vs. cp -r === cp -r /usr/share/doc doc-r find doc-r -printf '%y\n' | sort | uniq -c cp -a /usr/share/doc doc-a find doc-a -printf '%y\n' | sort | uniq -c Unterschiede? ===== 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 ==== 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