Bagaimana cara memblokir perintah, misalkan mkdir
untuk pengguna tertentu?
Apa yang saya lakukan hanya membuat fungsi read-only dan menyimpannya di profil pengguna ~/.bashrc
/bin/mkdir() {
echo "mkdir command not allow for you"
}
mkdir() {
echo "mkdir command not allow for you"
}
./mkdir() {
echo "mkdir command not allow for you"
}
readonly -f /bin/mkdir
readonly -f mkdir
readonly -f ./mkdir
Uji:
rahul@ubuntu:~$ cd /bin/
rahul@ubuntu:/bin$ ./mkdir /home/rahul/ggg
mkdir command not allow for you
rahul@ubuntu:/bin$ cd
rahul@ubuntu:~$ mkdir testing
mkdir command not allow for you
rahul@ubuntu:~$ /bin/mkdir testing
mkdir command not allow for you
Jadi pertanyaan saya adalah Apa yang harus menjadi cara untuk mencapai ini? apakah ada alat untuk ini?
Perbarui 1 # Tetapi jika pengguna cerdas, ia bisa menyalin biner mkdir dan mengganti nama dan menggunakannya. Lantas bagaimana cara mencapainya?
linux
security
account-restrictions
restricted-shell
Rahul Patil
sumber
sumber
mkdir
dan mengganti namanya, atau bahkan hanya menyalin dan mengganti nama biner yang ada. Juga, ada shell bawaan untuk mengganti alias dan fungsi.cp /bin/mkdir mkdir2
kemudian menggunakannya :(cp -r /usr/local/lib ggg
akan membuat direktori yang disebutggg
(berisi salinan konten/usr/local/lib
, jika ada, yang kemudian bisa dihapus oleh pengguna). Anda dapat menggunakanfind / -type d -empty
untuk menemukan direktori kosong untuk disalin.Jawaban:
Saya tidak tahu bagaimana cara melakukannya dengan bash, tapi saya tahu shell lain yang membatasi lingkungan pengguna: lshell (shell terbatas) .
Ikhtisar konfigurasi yang cepat
Lshell dikonfigurasi melalui file INI. Secara default, ia memegang daftar putih dari perintah yang diizinkan, tetapi dapat dengan mudah dikonfigurasikan untuk melarang pengguna menggunakan perintah tertentu.
Konfigurasi ini (konfigurasi default
/etc/lshell.conf
) melarang penggunafoo
untuk menggunakanmkdir
:Untuk mengonfigurasi akun pengguna agar menggunakan lshell secara default, Anda harus:
Lshell dapat berbuat lebih banyak, seperti:
|
).Dan lagi.
Perbarui 1 # Ditambahkan Hasil Uji:
sumber
allowed = 'all' - ['mkdir']
, tidak bisakah Anda menjalankanbash
dan tidak dibatasi lagi?dd if=$(which bash) of=my_bash && chmod u+x my_bash && ./my_bash
. Saya pikir masalahnya adalah kurangnya kebijakan default yang membatasi, yaitu, dalam skenario ini Anda memberikan izin secara default, kemudian MENYANGKAL izin berdasarkan daftar, ketika itu harus sebaliknya: MENYANGKAL secara default, kemudian MENYERAHKAN berdasarkan kebijakan .cp
biner ke PATH-nya (root
direktori yang dimiliki,rx
untuk pengguna), danrbash
mencegah dari mengeksekusi./executables
. Apakah itu menjawab pertanyaan Anda?Cara saya biasanya menerapkan pembatasan semacam ini mengharuskan beberapa kondisi terpenuhi, jika tidak, pembatasan dapat dengan mudah dielakkan:
wheel
grup, satu-satunya yang diizinkan untuk menggunakansu
(diberlakukan melalui PAM).Pengguna diberi diamankan
rbash
dengan benar dengan PATH read-only yang menunjuk ke pribadi~/bin
,~/bin/
direktori ini berisi tautan ke utilitas sederhana:pengguna diberikan terbatas, read-only lingkungan (memikirkan hal-hal seperti
LESSSECURE
,TMOUT
,HISTFILE
variabel).staff_u
dan diberikan hak untuk mengeksekusi perintah sebagai pengguna lain sebagaimana disyaratkan melaluisudo
.pengguna
/home
,/tmp
dan mungkin/var/tmp
dipolisi melalui/etc/security/namespace.conf
:Juga,
/etc/security/namespace.init
buat semua file kerangka hanya dibaca untuk pengguna dan dimiliki olehroot
.Dengan cara ini Anda dapat memilih apakah
$USER
dapat mengeksekusimkdir
atas namanya sendiri (melalui tautan di~/bin
direktori pribadi , disediakan melalui/etc/skel
, seperti dijelaskan di atas), atas nama pengguna lain (viasudo
) atau tidak sama sekali.sumber
Tambahkan grup dummy, tambahkan pengguna ke grup itu
chown root:somegroup /bin/mkdir
,,chmod g-x /bin/mkdir
. Perhatikan bahwa ini bergantung pada pengguna yang tidak dapat memodifikasi grup mereka. IIRC ini benar di GNU / Linux tetapi tidak di beberapa Unix lainnya.sumber
Yang terbaik seperti yang telah saya uji adalah dengan menggunakan Profile.d cara terbaik & teraman
Langkah # 1 (Buat File Alias)
Tambahkan baris di bawah ini:
Simpan & keluar
Langkah # 2 (Buat pemuat Profil)
/etc/profile.d/ lokasi ini berisi file untuk penyelesaian bash
Tambahkan baris di bawah ini di bawah file, baris ini akan memblokir perintah yang disebutkan untuk pengguna di bawah ini
Simpan dan keluar
Sekarang Keluar dan masuk kembali
Salam, -Mansur
sumber
/etc/profile.d/
bukan untukbash
penyelesaian , itu tempat untuk menempatkan penyesuaian sesi login untuk pengguna yang menggunakan shell login mirip-POSIX, jadi biasanya bukan tempatbash
alias kustomisasi (yang lebih suka masuk/etc/bash.bashrc
) akan pergi dan itu harus memiliki sintaks shell POSIX (jadi biasanya,.
sebagai gantinya darisource
dan=
bukannya==
).instal sudoers dan coba konfigurasikan di sana pengguna dan perintah apa.
sumber
sudo
.