Saya mencoba menyalin seluruh /
direktori ke beberapa lokasi lain. Saat melakukan cp secara rekursif, itu gagal pada beberapa file seperti:-
/ # ls -lrt /sys/module/nf_conntrack_ipv4/uevent
--w------- 1 root root 4096 Mar 7 06:29 /sys/module/nf_conntrack_ipv4/uevent
/ #
/ # cat /sys/module/nf_conntrack_ipv4/uevent
cat: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied
/ # cp /sys/module/nf_conntrack_ipv4/uevent /tmp
cp: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied
Jika saya membuat beberapa file hanya dengan w
izin dan coba salin/cat itu, saya tidak melihat ada masalah di sana. Namun, untuk beberapa file seperti yang disebutkan di atas, saya tidak dapat menyalinnya atau mengecatnya meskipun saya mencoba sebagai pengguna root. Juga, hal yang aneh adalah bahwa ukuran file yang disebutkan di atas disebutkan sebagai 4096 yang mirip dengan yang kita miliki untuk direktori. Apakah ini file yang spesial?
Saya kira saya kehilangan sesuatu di sini dan perlu beberapa masukan untuk mengetahui lebih banyak tentang file atau perilaku semacam itu. Mohon bantu saya untuk memahami mengapa saya tidak diizinkan untuk mengecat konten file semacam itu.
Jawaban yang Diterima:
Dalam sistem file biasa mis. ext4
, jika Anda hanya memiliki w
izin dalam file, Anda tidak akan dapat membaca (cat
) itu, Anda perlu membaca (r
) sedikit untuk itu. Perhatikan bahwa, root
dapat membaca file apa pun terlepas dari bit izin.
Sekarang, /sys
adalah titik pemasangan sysfs
special khusus disediakan oleh kernel Linux yang sebenarnya merupakan sistem file virtual dan bekerja secara berbeda dari sistem file biasa. /sys
berisi info sistem terkait perangkat.
Memodifikasi sesuatu di /sys
akan secara langsung mengubah struktur data internal kernel sehingga tergantung pada kernel apa yang akan diizinkan atau ditolak.
Untuk /sys/module/nf_conntrack_ipv4/uevent
, Anda hanya memiliki w
bit disetel untuk pemilik (root
), bahkan jika Anda menambahkan r
bit untuk root
(itu ide yang sangat buruk ), saat membaca file Anda akan mendapatkan kesalahan I/O karena dengan desain kernel tidak mengizinkan siapa pun untuk membaca uevents untuk nf_conntrack_ipv4
modul.