Dowiązanie symboliczne dające „Odmowa uprawnień” ... do katalogu głównego


Napisałem prosty skrypt, aby zautomatyzować tworzenie dowiązania symbolicznego.
#!/pseudo
today = "/tmp/" + date("Y-m-d")
exec("ln -sf " + today + "/tmp/today")

Wystarczająco proste: uzyskaj dzisiejszą datę i zrób symboliczne łącze. Najlepiej zacząć po północy od
-f
, aby po prostu zaktualizował go na miejscu.
Działa dobrze! ... dla mojego użytkownika.
xkeeper/tmp$ ls -ltr
drwxrwxrwx xkeeper xkeeper 2014-10-21
lrwxrwxrwx xkeeper xkeeper today ->/tmp/2014-10-21/xkeeper/tmp$ cd today
xkeeper/tmp/today$ cd ..

Pamiętaj, że działa dobrze, wszystkie uprawnienia można odczytać na całym świecie, wszystko wygląda dobrze.
Ale jeśli ktoś inny chce użyć tego linku (powiedzmy root, ale każdy inny użytkownik ma ten problem), dzieje się coś bardzo dziwnego:
root/tmp# cd today
bash: cd: today: Permission denied

Nie wiem, dlaczego tak jest. Próbowałem również utworzyć linki za pomocą
ln -s -n -f
(nie to, że „
--no-dereferencing
” jest bardzo dobrze wyjaśnione), ale ten sam problem pojawia się.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ponieważ/tmp zwykle ma zestaw lepkich bitów, dostęp do/tmp/dzisiaj jest zabroniony z powodu
protected_symlinks
.
Możesz wyłączyć tę ochronę, ustawiając
sysctl -w fs.protected_symlinks=0
protected_symlinks
https://patchwork.kernel.org/patch/1147961/
:
Od dawna istniejącą klasą problemów związanych z bezpieczeństwem jest łącze symboliczne oparte na
wyścig time-of-check-time-use najczęściej spotykany w
światowe katalogi z możliwością zapisu, takie jak/tmp. powszechna metoda wykorzystania tej wady
polega na przekroczeniu granic uprawnień podczas podążania za danym dowiązaniem symbolicznym (tj.
proces root podąża za dowiązaniem symbolicznym, którego właścicielem jest inny użytkownik). Prawdopodobnie
niepełna lista setek przykładów na przestrzeni lat, patrz tutaj:

http://cve.mitre.org/cgi-bin/ cvekey.cgi?keyword=/tmp
http://cve.mitre.org/cgi-bin/c ... D/tmp
Jeśli ustawione na „0”, to zachowanie po dowiązaniu symbolicznym nie jest ograniczone.
Po ustawieniu na „1” dowiązania symboliczne są dozwolone tylko wtedy, gdy znajdują się poza
lepki katalog z możliwością zapisu na świecie lub gdy uid dowiązania symbolicznego i
subskrybent pasuje lub gdy właściciel katalogu jest taki sam jak właściciel dowiązania symbolicznego.
Ta ochrona jest oparta na ograniczeniach w Openwall i grsecurity.

Po więcej szczegółów sprawdź

to jest
http://nerdbynature.de/s9y/?319
.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się