Pada sistem Linux, saat mengubah kepemilikan tautan simbolis menggunakan chown
, secara default mengubah target dari tautan simbolik (yaitu, apa pun yang ditunjuk oleh tautan simbolis ).
Jika Anda ingin mengubah kepemilikan tautan itu sendiri, Anda perlu menggunakan -h
opsi untuk chown
:
-h, --no-dereference memengaruhi setiap tautan simbolis alih-alih file yang direferensikan (berguna hanya pada sistem yang dapat mengubah kepemilikan symlink)
Misalnya:
$ 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
Perhatikan bahwa target tautan sekarang dimiliki oleh 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
Dan lagi, tautan test1
masih dimiliki oleh root, meskipun test
telah berubah.
$ 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
Dan terakhir kita ubah kepemilikan link tersebut menggunakan -h
opsi.
Saat bertindak pada symlink, Anda harus memberi tahu sebagian besar alat (chown, chmod, ls...) untuk tidak melakukan dereferensi tautan:Anda harus menambahkan -h
parameter, seperti yang dinyatakan dalam halaman manual :
-h, --no-dereference
affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink)
Jadi cobalah :sudo chown -h askar.admin /etc/init.d/jboss1
Perhatikan juga kesalahan yang Anda berikan di atas
ln: creating symbolic link `/etc/init.d/jboss1': Permission denied
bukan karena pemilik symlink adalah orang lain selain pemilik file asli. Ini (kemungkinan besar) disebabkan oleh pengguna askar tidak memiliki akses tulis ke direktori /etc/init.d
.