GNU/Linux >> Belajar Linux >  >> Cent OS

Centos – Perilaku Izin Tautan Keras Berbeda Antara Centos 6 Dan Centos 7?

Saya mendapatkan kesalahan izin di CentOS 7 ketika saya mencoba membuat tautan keras. Dengan izin yang sama yang diatur di CentOS 6 saya tidak mendapatkan kesalahan. Masalah ini berpusat pada izin grup. Saya tidak yakin versi OS mana yang benar dan mana yang salah.

Biarkan saya mengilustrasikan apa yang terjadi. Di direktori kerja saya saat ini, saya memiliki dua direktori:sumber dan tujuan. Di awal, tujuan kosong; sumber berisi file teks.

[[email protected] cwd]# ls -l
total 0
drwxrwxrwx. 2 root root  6 Jun 12 14:33 destination
drwxrwxrwx. 2 root root 21 Jun 12 14:33 source
[[email protected] cwd]# ls -l destination/
total 0
[[email protected] cwd]# ls -l source/
total 4
-rw-r--r--. 1 root root 8 Jun 12 14:20 test.txt
[[email protected] cwd]# 

Seperti yang Anda lihat, mengenai izin, kedua direktori tersebut adalah 777, dengan pemilik dan grup disetel ke root. Pemilik dan grup file teks juga disetel ke root. Namun, izin file teks adalah baca-tulis untuk pemilik tetapi hanya-baca untuk grup.

Saat saya masuk sebagai root, saya tidak kesulitan membuat tautan keras di direktori tujuan yang menunjuk ke file teks (di direktori sumber).

[[email protected] cwd]# ln source/test.txt destination/
[[email protected] cwd]# ls destination/
test.txt

Namun, jika saya masuk sebagai pengguna lain, dalam hal ini, admin, saya tidak dapat membuat tautan. Saya mendapatkan:“Operasi tidak diizinkan.”

[[email protected] cwd]# rm -f destination/test.txt 
[[email protected] cwd]# su admin
bash-4.2$ pwd
/root/cwd
bash-4.2$ ln source/test.txt destination/
ln: failed to create hard link ‘destination/test.txt’ => ‘source/test.txt’: Operation not permitted

Apa yang terjadi sebenarnya masuk akal bagi saya, tetapi karena hal di atas diizinkan di CentOS 6, saya ingin memeriksa apakah saya salah memahami sesuatu. Bagi saya, sepertinya bug di CentOS 6 telah diperbaiki di CentOS 7.

Ada yang tahu apa yang memberi? Apakah saya benar percaya bahwa perilaku di atas adalah perilaku yang benar? Apakah CentOS 6 yang benar? Atau, apakah keduanya benar dan mungkin ada beberapa masalah izin grup halus yang saya lewatkan? Terima kasih.

Sunting: Saya mencoba tes yang sama sekarang pada VM Debian v7 yang saya miliki. Debian setuju dengan CentOS 7:“Operasi tidak diizinkan.”

Edit #2: Saya baru saja mencoba hal yang sama di Mac OS X (Yosemite). Itu bekerja seperti yang dilakukan CentOS 6. Dengan kata lain, itu memungkinkan tautan dibuat. (Catatan:Pada OS X, grup root disebut "roda." Itulah satu-satunya perbedaan, sejauh yang saya tahu.)

Jawaban yang Diterima:

Saya memutar beberapa CentOS 6 dan 7 vm baru dan dapat membuat ulang perilaku persis seperti yang Anda tunjukkan. Setelah melakukan beberapa penggalian, ternyata ini sebenarnya adalah perubahan pada kernel mengenai perilaku default sehubungan dengan tautan keras dan lunak demi keamanan. Halaman-halaman berikut mengarahkan saya ke arah yang benar:

Terkait:Ubah warna latar belakang terminal GNOME dengan cepat?

http://kernel.opensuse.org/cgit/kernel/commit/?id=561ec64ae67ef25cac8d72bb9c4bfc955edfd415

http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1

Jika Anda membuat dunia file dapat ditulis, pengguna admin Anda akan dapat membuat tautan keras.

Untuk kembali ke perilaku sistem CentOS 6, parameter kernel baru ditambahkan. Setel yang berikut di /etc/sysctl.conf:

fs.protected_hardlinks = 0
fs.protected_symlinks = 0

lalu jalankan

sysctl -p

Adapun mengapa program Anda memilih untuk menggunakan tautan daripada menyalin file, mengapa membuat salinan persis dari file yang perlu Anda gunakan ketika Anda bisa membuat entri yang menunjuk ke blok asli? Ini menghemat ruang disk dan operasi lebih murah dalam hal CPU dan I/O. Tautan keras baru adalah file yang sama, hanya dengan metadata/inode yang berbeda. Jika Anda menghapus file asli setelah membuat tautan keras, itu tidak akan memengaruhi tautan. File hanya 'dihapus' setelah semua tautan dihapus.


Cent OS
  1. Ulimit:Perbedaan Antara Batas Keras dan Lunak?

  2. Perbedaan Antara Tautan Simbolik dan Tautan Keras?

  3. Centos 4.8 Dan Glibc 2.5?

  1. Perbedaan Antara Pengguna Sudo Dan Pengguna Root?

  2. Centos – “Tautan Simbolik Tidak Diizinkan Atau Target Tautan Tidak Dapat Diakses” / Apache Di Centos 6?

  3. Cara menginstal dan mengkonfigurasi web2py di CentOS 7

  1. CentOS / RHEL 7 :Cara mengekstrak gambar initramfs dan mengedit/melihatnya

  2. RHEL 7 – RHCSA Catatan :Buat tautan keras dan lunak.

  3. Cara mengatur Nilai nproc (Hard and Soft) di CentOS / RHEL 5,6,7