Jika suatu file memiliki izin -rwx-wx-wx
dapatkah itu dibaca oleh pengguna lain dan grup, atau dapatkah itu hanya dijalankan dan ditulis? Apakah ada cara untuk membaca file yang dapat dieksekusi dengan mengeksekusinya?
linux
permissions
chmod
Tom
sumber
sumber
Jawaban:
File dengan
-rwx-wx-wx
izin telah membaca / menulis / mengeksekusi izin untuk pemilik, dan menulis / mengeksekusi (tetapi tidak membaca) izin untuk semua orang.Jika itu skrip (biasanya file teks dengan a
#!
di baris pertama), maka skrip tidak dapat dieksekusi oleh orang lain, karena mengeksekusi skrip benar-benar mengeksekusi penerjemah, yang harus dapat membaca skrip. (Penerjemah harus berupa biner, bukan skrip lain.) (Sebenarnya, itu tidak benar untuk semua sistem; Ubuntu, dengan kernel Linux 3.2.0, memungkinkan penafsir itu sendiri menjadi skrip yang ditafsirkan. Tampaknya ada batas sekitar 4 level. Itu tidak mungkin relevan dengan pertanyaan ini.)Jika ini adalah biner yang dapat dieksekusi, ia dapat dieksekusi secara langsung, tetapi isinya tidak dapat dibaca. Ini berarti, misalnya, bahwa orang lain selain pemilik dapat menjalankannya sebagai perintah, tetapi tidak dapat mengambil salinan yang dapat dieksekusi.
Tentu saja eksekusi membutuhkan pembacaan, tetapi dibaca oleh kernel, bukan oleh pengguna. Anda mungkin bisa mendapatkan beberapa informasi tentang isi file yang dapat dieksekusi dengan memeriksa memori proses yang sedang berjalan, tetapi saya ragu Anda bisa merekonstruksi file executable biner. Dan jika executable adalah setuid, Anda tidak dapat memeriksa memori proses (kecuali Anda memiliki akses ke akun yang menjalankannya).
Secara kebetulan,
-rwx-wx-wx
adalah seperangkat izin yang sangat aneh; melindungi file agar tidak dibaca oleh siapa pun selain pemiliknya, tetapi memungkinkan siapa pun untuk memodifikasinya. Saya tidak bisa memikirkan kasus di mana itu masuk akal.sumber
chmod 111 hello ; gdb ./hello
mengatakan./hello: Permission denied.
;r
kataNo executable file specified.
Dengan izin itu, hanya pemilik file yang dapat menjalankannya.
Pengguna lain dapat menulis kepadanya, tetapi tidak mengeksekusinya (karena eksekusi dalam kasus ini menyiratkan kemampuan untuk membacanya) tetapi mereka dapat menulis kepadanya sebagai semacam kotak hitam:
sumber
Jawaban sederhananya adalah tidak : hanya
exec
syscall yang dapat membaca file tanpa memerlukan akses baca (walaupun mewajibkan akses eksekusi ). Anopen
denganO_RDONLY
atauO_RDWR
akan gagal.sumber
Tentu saja file apa saja dapat dibaca oleh pengguna root.
Juga, pemuat sistem, manajemen memori, swapper, dll .... akan membaca file dengan izin 'x', jika tidak maka tidak dapat dijalankan.
Kemungkinan lubang dalam pengungkapan konten yang dapat dieksekusi dapat berupa file / proc untuk proses, file inti, atau dengan menggunakan debugger.
sumber
chmod
|chown
telah dilakukan