Apa tujuan dari izin Linux seperti 111 atau 333 (yaitu pengguna dapat mengeksekusi , tetapi tidak dapat membaca file), jika kemampuan untuk mengeksekusi tidak secara otomatis menyiratkan kemampuan untuk membaca?
permissions
chmod
troli813
sumber
sumber
Jawaban:
Saya bermain dengannya dan ternyata, izin exec tidak menyiratkan izin baca. Binari dapat dieksekusi tanpa dapat dibaca:
Saya tidak bisa mengeksekusi skrip, kecuali mereka memiliki bit izin baca dan exec pada:
sumber
/bin/bash hw.sh
, dan kemudian bash mencoba membukahw.sh
untuk membaca (dan gagal).masuk akal untuk direktori, misalnya jika Anda menyimpan (rahasia) executable di direktori tertentu dan kemudian memungkinkan pengguna memanggil file-file itu tanpa dapat melihat konten direktori (tetapi mengetahui bahwa ada file tertentu setelah Anda memberi tahu mereka!). 333 dibandingkan dengan 111 memungkinkan menulis / menghapus file ke / dari direktori tersebut tanpa dapat melihat isi direktori.
sumber
Jelas tidak semua kombinasi bermanfaat, tetapi untuk mengambil kombinasi yang Anda sebutkan secara spesifik ... Anda sebenarnya tidak perlu
read
izin untuk mengeksekusi file - hanyaexecute
izin - kecuali file yang dimaksud adalah skrip (mis. Skrip shell (.sh
), perl-script (.pl
) dan sebagainya). Binari normal dapat dijalankan hanya denganexecute
izin. Pada * BSD-systmes, beberapa executable memberikanexecute
izin tanparead
permisson, terutama pada perintah "keamanan-penting" - missu
.Jadi mengapa tidak memberikan pengguna
read
-permission (dan hanyaexecute
-permisson)? Karena file yang tidak dapat dibaca oleh pengguna, juga tidak dapat disalin oleh pengguna itu! Menghapusread
izin, mencegah pengguna membuat salinan executable "pribadi" mereka sendiri - yang nantinya bisa disalahgunakan (misalnya didapatSUID=root on
).Dan tidak memiliki
write
-permission, mencegah file agar tidak dihapus dengan benar.Pikiran Anda, tidak memberikan
read
-tidakwrite
-permintaan kepada pemilik agak jarang, tetapi kadang-kadang mungkin ide yang baik untuk mencegah bahkanowner
dari hanya menghapus file. Tentu sajaowner
- belum lagiroot
- mungkin selalu menghindari langkah-langkah seperti itu, jika tidak dengan cara lain, maka cukup denganchmod
izin pada file tersebut.sumber
owner
dari hanya menghapus file." - kecuali bahwa Anda tidak memerlukan izin apa pun pada file (baca, tulis, atau jalankan) untuk menghapusnya./proc/${PID}/maps
dan kemudian membaca bagian memori yang relevan dari/proc/${PID}/mem
? Atau apakah membatasi izin pada file yang dapat dieksekusi juga membatasi izin baca pada bagian yang relevan di memori selama eksekusi? (Yang terakhir tampaknya tidak mungkin, IMO.)