GNU/Linux >> Belajar Linux >  >> Linux

Mengapa Linux/POSIX memiliki lchown tetapi bukan lchmod?

Linux, seperti kebanyakan sistem mirip-Unix (Apple OS/X menjadi salah satu pengecualian langka), mengabaikan izin pada symlink ketika harus menyelesaikan target mereka misalnya.

Namun, kepemilikan symlink, seperti file lainnya, relevan jika dikaitkan dengan izin untuk mengganti nama atau memutuskan tautan entri mereka di direktori yang memiliki t set bit, seperti /tmp .

Untuk dapat menghapus atau mengganti nama file (symlink atau tidak) di /tmp , Anda harus menjadi pemilik file. Itulah salah satu alasan seseorang mungkin ingin mengubah kepemilikan symlink (untuk memberikan atau menghapus izin untuk membatalkan tautan/mengganti namanya).

$ 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

Juga, seperti yang disebutkan oleh Mark Plotnick dalam jawabannya yang sekarang dihapus, aplikasi pencadangan dan pengarsipan memerlukan lchown() untuk mengembalikan symlink ke pemilik aslinya. Opsi lain adalah mengganti euid dan egid sebelum membuat symlink, tetapi itu tidak akan efisien dan mempersulit manajemen yang tepat pada direktori tempat symlink diekstraksi.


Linux
  1. Cara Mengembalikan Direktori /tmp yang Dihapus di Linux

  2. Bagaimana systemd-tmpfiles membersihkan /tmp/ atau /var/tmp (pengganti tmpwatch) di CentOS / RHEL 7

  3. UNIX / Linux :Apa izin yang benar dari direktori /tmp dan /var/tmp?

  1. Linux – Mengapa Kami Menggunakan Su – Dan Bukan Hanya Su?

  2. Linux – Mengapa Es_mx Lokal Bekerja Tapi Tidak Es?

  3. Linux – Menggabungkan /usr/bin Dan /usr/sbin Ke /bin (gnu/linux)?

  1. Linux:salin dan buat dir tujuan jika tidak ada

  2. Mengapa find -exec mv {} ./target/ + tidak berfungsi?

  3. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?