Setelah bekerja dengan Linux selama bertahun-tahun, dan menemukan diri saya dengan waktu luang, saya memutuskan untuk mengunjungi kembali beberapa dasar. Jadi saya membaca kembali hal-hal tentang izin (tanpa memeriksa kode sumber), dan kasus khusus untuk folder, dan muncul dengan cara berpikir baru (setidaknya untuk saya ...) tentang izin folder (untuk pengguna tertentu / grup / lainnya): Saya membayangkan folder sebagai tabel dengan dua kolom, seperti:
filename | inode
foo | 111
bar | 222
The membaca izin berarti Anda dapat membaca (dan daftar) kolom kiri meja, menulis berkorespondensi izin untuk menambah dan menghapus entri ke meja, dan mengeksekusi berkorespondensi izin untuk mampu menerjemahkan dari nama file inode; yaitu Anda dapat mengakses isi folder.
Saya melakukan beberapa percobaan, dan hasilnya semua konsisten dengan "pandangan dunia" saya ini, tetapi satu kesimpulan tampaknya tidak terhindarkan: bahwa folder dengan izin d-w-------
, sama sekali tidak berguna. Mengelaborasi: Anda tidak dapat membuat daftar isinya, Anda tidak dapat membaca file yang Anda tahu ada di dalam (karena Anda tidak dapat menerjemahkan nama menjadi inode), Anda tidak dapat menghapus atau mengubah nama atau menambahkan file, karena sekali lagi itu akan menyiratkan terjemahan , dan Anda bahkan tidak dapat menambahkan hardlink (karena, saya menduga, itu berarti menambahkan nama serta nomor inode, yang berarti Anda akan mengetahui keduanya, yang pada gilirannya, sekali lagi menduga, melanggar tujuan tidak mengijinkan izin eksekusi yang belum disetel) . Dan tentu saja, jika ada yang file dalam satu folder tersebut, maka Anda tidak dapat menghapus folder yang baik, karena Anda tidak dapat menghapus isinya.
Jadi ... Saya ingin mengajukan dua pertanyaan:
- Apakah analogi saya ini benar, atau itu kesalahan besar?
- Terlepas dari jawaban sebelumnya, apakah ada setiap situasi di mana memiliki folder dengan izin seperti yang dijelaskan sesuai?
sumber
mkdir foo ; chmod 200 foo ; touch foo/bar
saya mengertitouch: cannot touch ‘foo/bar’: Permission denied
. Ini terjadi bahkan jika foo / bar sudah ada. Saya sedang menguji di bash (Arch Linux).Jawaban:
Pemahaman Anda cukup benar. Cara yang lebih baik untuk memikirkan izin eksekusi adalah memungkinkan Anda untuk melakukan sesuatu dengan nama file atau direktori di direktori (selain hanya membaca nama itu sendiri). Sebagian besar dari hal-hal itu melibatkan menerjemahkan nama ke inode, tetapi juga termasuk membuat nama baru dan menghapus nama yang ada.
Izin menulis ke direktori tanpa eksekusi sangat tidak berguna, karena tidak ada yang dapat Anda tulis jika Anda tidak dapat mengakses file di dalamnya.
sumber
Saya pikir itu benar, Anda perlu izin untuk dapat menulis ke folder.
Anda mungkin memiliki proses yang menulis informasi dalam folder dan yang lain mengkonsumsinya tetapi Anda harus mencegah penulis membaca informasi lain yang tersimpan di tempat itu.
Situasi yang dijelaskan sebelumnya berguna dalam unit penegakan kecepatan otomatis. Unit ini harus melalui proses verifikasi di mana pejabat negara harus meminimalkan kemungkinan pemalsuan. Beberapa unit penegakan kecepatan otomatis memiliki kartu memori sd eksternal tempat sistem menyimpan register pelanggaran. Tetapi itu juga bisa menyimpan file konfigurasi "ajaib" yang secara ilegal mengubah perilaku unit yang diverifikasi. Jadi proses yang menulis register pelanggaran harus tidak dapat membaca apa pun dari kartu memori sd.
Ini Ini contoh, pertama dengan hanya menulis, lalu bagaimana membuatnya bekerja dengan wx:
Pasang perangkat
kemudian dengan pengguna penegak mencoba untuk menulis file baru
unmount dan remount dengan wx
coba lagi
Dengan konfigurasi ini Anda sekarang dapat menulis
sumber