Linux, come la maggior parte dei sistemi simili a Unix (Apple OS/X è una delle rare eccezioni), ignora le autorizzazioni sui collegamenti simbolici quando si tratta di risolvere i loro obiettivi, ad esempio.
Tuttavia, la proprietà dei collegamenti simbolici, come altri file, è rilevante quando si tratta dell'autorizzazione a rinominare o scollegare le loro voci nelle directory che hanno t
bit impostato, ad esempio /tmp
.
Essere in grado di rimuovere o rinominare un file (collegamento simbolico o meno) in /tmp
, devi essere il proprietario del file. Questo è uno dei motivi per cui si potrebbe voler cambiare la proprietà di un collegamento simbolico (per concedere o rimuovere l'autorizzazione a scollegarlo/rinominarlo).
$ ln -s / /tmp/x
$ rm /tmp/x
# OK removed
$ ln -s / /tmp/x
$ sudo chown -h nobody /tmp/x
$ rm /tmp/x
rm: cannot remove ‘/tmp/x’: Operation not permitted
Inoltre, come menzionato da Mark Plotnick nella sua risposta ora cancellata, le applicazioni di backup e archiviazione richiedono lchown()
per ripristinare i collegamenti simbolici ai loro proprietari originali. Un'altra opzione sarebbe scambiare euid ed egid prima di creare il collegamento simbolico, ma ciò non sarebbe efficiente e complicherebbe la corretta gestione della directory in cui viene estratto il collegamento simbolico.