GNU/Linux >> Linux Esercitazione >  >> Linux

Come cambiare la proprietà dai collegamenti simbolici?

Su un sistema Linux, quando si modifica la proprietà di un collegamento simbolico utilizzando chown , per impostazione predefinita cambia il target del collegamento simbolico (ovvero, qualunque cosa il collegamento simbolico stia puntando ).

Se desideri cambiare la proprietà del link stesso, devi utilizzare il -h opzione a chown :

-h, --no-dereference influenzare ogni collegamento simbolico invece di qualsiasi file di riferimento (utile solo su sistemi che possono modificare la proprietà di un collegamento simbolico)

Ad esempio:

$ touch test
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
$ sudo ln -s test test1
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
$ sudo chown root:root test1
$ ls -l test*
-rw-r--r-- 1 root root 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test

Tieni presente che il target del collegamento è ora di proprietà di root.

$ sudo chown mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test

E ancora, il collegamento test1 è ancora di proprietà di root, anche se test è cambiato.

$ sudo chown -h mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 mj mj 4 Jul 27 08:47 test1 -> test

E infine cambiamo la proprietà del link usando il -h opzione.


Quando si agisce sui collegamenti simbolici, è necessario dire alla maggior parte degli strumenti (chown, chmod, ls...) di non dereferenziare il collegamento:è necessario aggiungere il -h parametro, come indicato nella manpage :

-h, --no-dereference
          affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink)

Quindi prova :sudo chown -h askar.admin /etc/init.d/jboss1


Nota anche che l'errore che hai dato sopra

ln: creating symbolic link `/etc/init.d/jboss1': Permission denied

non è dovuto al fatto che il proprietario del collegamento simbolico sia qualcun altro rispetto al proprietario del file originale. È (molto probabilmente) causato dall'utente askar che non ha accesso in scrittura alla directory /etc/init.d .


Linux
  1. Come creare collegamenti rigidi e simbolici in Linux

  2. Come utilizzare il comando chown per modificare la proprietà in Linux

  3. Modifica la proprietà di gruppo dei collegamenti simbolici in Unix o Linux

  4. Come testare la connettività della porta [TCP/UDP] da un server Linux

  5. Come posso eseguire una funzione da uno script nella riga di comando?

Come rimuovere i collegamenti simbolici su Linux

Come creare collegamenti simbolici su Linux

Come modificare la versione PHP da cPanel?

Che cosa sono i collegamenti simbolici in Linux? Come creare collegamenti simbolici?

Come modificare l'URL del sito Magento da phpMyAdmin?

Come ottenere un elenco di collegamenti simbolici su Linux