Saya dapat mengkonfigurasi sudo (melalui file sudoers) untuk memungkinkan pengguna untuk menjalankan chown
dan chmod
perintah pada file atau direktori dalam sistem. Namun, saya hanya ingin memberikan izin kepada pengguna untuk menjalankan perintah ini pada file yang berada di bawah /var/www/html
direktori.
Bagaimana saya bisa membatasi perintah istimewa sehingga pengguna hanya dapat menjalankannya di direktori yang ditentukan sebelumnya?
Sebagai contoh: Perintah berikut memberikan 777 izin untuk index.html
mengajukan.
sudo chmod 777 /var/www/html/index.html
Sekarang saya ingin melakukan dua tindakan
Batasi
sudo
sedemikian rupa sehingga pengguna hanya dapat berjalanchmod
danchown
dari dalam/var/www/html
Larang pengguna untuk menjalankan perintah ini di tempat lain di sistem (mis. Perintah tidak dapat dijalankan di
/var/www
atau/var/ftp
)
www-data
kelompok yang menghilangkan kebutuhan untukchmod
/chown
apa saja?chown
. Selain itu saya tidak melihat alasan mengapachmod
harus dijalankan sebagai root.Jawaban:
Apa yang Anda tanyakan itu sulit jika bukan tidak mungkin. Bahkan jika Anda memang membatasi aplikasi
chown
danchmod
ke file di bawah direktori tertentu, seseorang masih bisa melewati tautan simbolik dan memengaruhi file di mana pun mereka suka.Untungnya, sangat mungkin bahwa apa yang Anda coba lakukan bukanlah solusi yang tepat untuk masalah Anda yang sebenarnya, dan ada metode lain yang berhasil.
Biasanya, pengguna yang memerlukan izin tambahan untuk membuat dan memodifikasi file di bawah
/var/www
ditambahkan ke grup (seringwww-data
, atau Anda mungkin memiliki grup berbeda untuk bagian situs yang berbeda). Anda dapat menggunakan kepemilikan grup dan direktori setgid:chgrp www-data /var/www/html; chmod g+ws /var/www/html
memungkinkan semua orang diwww-data
grup untuk menulis ke/var/www/html
direktori, dan file yang dibuat di direktori itu akan dimiliki olehwww-data
grup, bukan grup utama pengguna yang membuat file. Namun, ini sangat tidak fleksibel.Yang mungkin harus Anda lakukan adalah mengatur daftar kontrol akses untuk file-file di bawah
/var/www
. Pertama, pastikan ACL diaktifkan: sistem file yang/var/www
aktif harus dipasang denganacl
opsi. Lihat Membuat semua file baru di direktori yang dapat diakses oleh grup untuk bantuan tentang itu. Juga instal utilitas ACL (getfacl
dansetfacl
). Kemudian berikan izin tambahan ke pohon di bawah/var/www/html
kepada pengguna yang seharusnya memilikinya. Anda dapat mengatur ACL per pengguna, tetapi seringkali lebih mudah untuk menempatkan pengguna yang memiliki hak yang sama pada bagian sistem file dalam grup dan mengatur ACL untuk grup itu. Misalnya, jika pengguna dalam gruphtml-writers
harus memiliki akses baca-tulis ke hierarki di bawah/var/www/html
:sumber
Anda dapat membatasi perintah untuk digunakan oleh "pengguna saya" dengan semua argumen dalam
/etc/sudoers
file dengan perintahvisudo
add:aktifkan pencatatan untuk setiap operasi dengan menambahkan:
output sampel:
Saat Anda menggunakan sudo, premisnya adalah bahwa "pengguna saya" adalah orang tepercaya. Hati-hati dengan izin file, tidak ada cara sederhana untuk menghentikan pengguna sudo berbahaya dari menautkan file dari sumber daya eksternal dan mengubahnya.
sumber
su - prashant
atausu prashant
?sudo /bin/chmod 666 /var/www/html/../../../etc/passwd
Dan jika Anda entah bagaimana memperbaikinya,ln -s /etc /var/www/html/foo/etc; sudo /bin/chmod 666 /var/www/html/foo/etc/passwd
Sebenarnya ada cara yang cukup sederhana untuk melakukan ini, dengan membuat skrip Bash (atau shell pilihan Anda) untuk membatasi modifikasi yang dilakukan pada file atau direktori tertentu.
Dalam contoh Anda, akan terlihat seperti ini:
Kemudian Anda akan mengubah file sudoers untuk memungkinkan www-data untuk mengeksekusi / usr / local / bin / mychmod.
Perlu diingat, bahwa mengizinkan input pengguna (misalnya, memungkinkan pengguna untuk mengubah file atau direktori mana yang di-chmodded) ke dalam ruang ini sangat berbahaya, dan Anda perlu tahu cara memfilter serangan injeksi jika Anda ingin melakukan hal seperti bahwa. Seorang penyerang dapat dengan mudah menjalankan perintah apa pun sebagai root dengan cara ini, secara efektif membahayakan keamanan sistem Anda.
sumber