GNU/Linux >> Linux Esercitazione >  >> Linux

Perché Linux/POSIX ha lchown ma non lchmod?

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.


Linux
  1. Come systemd-tmpfiles pulisce /tmp/ o /var/tmp (sostituzione di tmpwatch) in CentOS/RHEL 7

  2. Perché find -exec mv {} ./target/ + non funziona?

  3. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  4. Perché le directory /home, /usr, /var, ecc. hanno tutte lo stesso numero di inode (2)?

  5. Perché sono necessari < o > per usare /dev/tcp

Come ripristinare la directory /tmp eliminata in Linux

Directory Linux tmp:tutto ciò che devi sapere

Linux – Perché usiamo Su – e non solo Su?

Linux:perché Locale Es_mx funziona ma non Es?

Linux – /sbin/init non esiste?

Perché wine può eseguire programmi a 64 bit su Linux ma non su Mac?