Symlink geben "Permission denied"... root
Schrieb ich ein einfaches script zu automatisieren, erstellen Sie einen symbolischen link.
#!/pseudo
today = "/tmp/" + date("Y-m-d")
exec("ln -sf " + today + " /tmp/today")
Einfach genug; bekommen Sie das heutige Datum ein und erstellen Sie einen symbolischen Link. Idealerweise führen Sie nach Mitternacht mit -f
so ist es nur updates in-place.
Dieser funktioniert Prima! ...für meine user.
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 ..
Beachten Sie, dass es gut funktioniert, alle Berechtigungen sind world-readable, alles sieht gut aus.
Aber wenn jemand anderes will, um diesen link zu verwenden (sagen wir, root, aber alle anderen Benutzer, die dieses problem hat), etwas sehr merkwürdiges passiert:
root /tmp# cd today
bash: cd: today: Permission denied
Ich bin völlig ratlos, warum das so ist. Ich habe auch versucht zu erstellen, die links mit ln -s -n -f
(nicht, dass "--no-dereferencing
" ist sehr gut erklärt), aber das gleiche Problem erscheint.
- Beachten Sie, dass es funktioniert völlig in Ordnung, wenn ich den link selbst mit root (alle anderen Benutzer Zugriff haben), aber das hat auch nicht wirklich erklären, warum es funktioniert nicht, wenn die von anderen Benutzern erstellt.
- Was bedeutet
#!/pseudo
? - Okay, sehr seltsam. Ich habe versucht, einen link erstellen in der gleichen Art und Weise in einem temporären Ordner irgendwo in
/var/www/
, und es funktioniert wie erwartet, ohne Erlaubnis Fehler. Was in der Welt. - Gibt es eine Referenz dazu? Dies ist das erste mal, dass ich jemals so etwas gehört und Googlen stellt sich nichts. Es geht auch gegen die traditionelle Rolle der Wurzel sowohl in den 40 Jahren Unix-und in der informatik im Allgemeinen...
- Ok ich meinte diesen Unterschied behaivor für /tmp unter anderem, kann aber verwendet die falschen Worte...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da /tmp in der Regel hat das sticky bit gesetzt, wird der Zugriff auf /tmp/heute verweigert wird, weil der
protected_symlinks
.Sie können deaktivieren Sie diesen Schutz durch die Einstellung
Für weitere details schauen Sie diese.
/tmp
).