Cara Menggunakan Shell Terbatas untuk Membatasi Apa yang Dapat Dilakukan Pengguna Linux

Diterbitkan: 2022-01-29
Jendela terminal pada sistem Linux.
Fatmawati Achmad Zaenuri/Shutterstock

Shell terbatas membatasi apa yang dapat dilakukan akun pengguna di Linux. Pengguna yang dibatasi tidak dapat mengubah direktori mereka, dan Anda mengontrol perintah mana yang dapat mereka akses. Berikut cara mengatur shell terbatas di Linux.

Kerang Terbatas

Cangkang yang dibatasi bukanlah cangkang yang berbeda. Ini adalah mode berbeda dari shell standar. Bash, Korn, Fish, dan cangkang lainnya semuanya dapat dimulai dalam mode cangkang terbatas. Kami akan menggunakan Bash dalam artikel ini, tetapi prinsip yang sama berlaku untuk shell lainnya.

Karena shell terbatas hanyalah cara lain untuk menggunakan shell standar Anda, shell tersebut mudah diatur. Tidak ada yang perlu diinstal, dan mereka tersedia di mana pun Linux berada.

Cangkang terbatas dapat diterapkan ke skrip juga. Itu memastikan bahwa kerusakan apa pun yang mungkin mereka timbulkan jika mereka salah menulis terbatas pada batas-batas dunia terbatas mereka dan bahwa mereka tidak memiliki akses ke seluruh komputer Anda.

Namun, perlu diketahui bahwa cangkang yang dibatasi tidak sepenuhnya antipeluru. Seseorang dengan pengetahuan yang cukup dapat lolos dari cangkang terbatas. Mereka bagus untuk menempatkan batas aman pada pengguna biasa, tetapi tidak bergantung pada shell terbatas untuk keamanan dunia nyata pada sistem produksi.

TERKAIT: Apa Perbedaan Antara Bash, Zsh, dan Shell Linux Lainnya?

Bash Terbatas

Saat Anda menjalankan Bash sebagai shell terbatas, pengguna memiliki beberapa kemampuan yang dihapus dari mereka. Secara khusus, pengguna tidak dapat :

  • Gunakan cd untuk mengubah direktori kerja.
  • Ubah nilai variabel lingkungan $PATH , $SHELL , $BASH_ENV , atau $ENV (tetapi mereka dapat membaca nilai saat ini).
  • Baca atau ubah opsi lingkungan shell $SHELLOPTS .
  • Arahkan ulang output dari sebuah perintah.
  • Panggil perintah yang memerlukan jalur untuk menemukannya. Artinya, Anda tidak dapat mengeluarkan perintah yang memiliki satu atau lebih garis miring “ / ” di dalamnya.
  • Panggil exec untuk mengganti proses yang berbeda untuk Shell.
  • Gunakan salah satu fitur terbatas dalam skrip.
Iklan

Anda dapat memanggil shell Bash terbatas dengan menggunakan opsi -r (terbatas). Mencoba melakukan tugas sederhana seperti mengubah direktori kerja dilarang. Sebuah pesan singkat memberitahu Anda bahwa cd dibatasi.

 bash -r
 cd dokumen 

Shell Bash juga dapat mendeteksi ketika telah dipanggil menggunakan "rbash" alih-alih "bash." Ini menyebabkannya dimulai sebagai shell terbatas juga. Ini memberikan cara yang nyaman untuk menyetel shell default untuk pengguna tertentu, yang akan segera kita gunakan.

Jika kita menggunakan perintah whereis di Ubuntu untuk mencari file rbash , kita akan melihat bahwa file yang dapat dieksekusi ada di direktori “usr/bin”. Halaman manual ada di direktori “/usr/share/man/man1”.

Menggunakan perintah ls dengan opsi -l (panjang) mengungkapkan bahwa rbash sebenarnya adalah tautan simbolis ke bash .

 dimana rbash
 ls -l /usr/bin/rbash 

Di Manjaro dan Fedora, tautan simbolis rbash harus dibuat. Ini berfungsi pada kedua distribusi:

 dimana rbash
 sudo ln -s /bin/bash /bin/rbash
 dimana rbash 

Iklan

Kedua kalinya kita menggunakan perintah whereis , ia menemukan rbash di direktori “/usr/bin”.

Membatasi Pengguna

Mari buat akun pengguna baru bernama "Minnie." Kami akan mengatur shell mereka menjadi shell terbatas menggunakan opsi -s (shell) dari perintah useradd . Kami juga akan mengatur kata sandi akun menggunakan perintah passwd , dan kami akan membuat folder rumah untuk mereka.

Bendera -p (parents) dalam perintah mkdir memberitahu mkdir untuk membuat direktori target dan direktori induk yang perlu dibuat juga. Jadi dengan membuat direktori “/home/minnie/bin”, kita membuat direktori “/home/minnie” secara bersamaan.

 sudo useradd minnie -s /bin/rbash
 sudo passwd minnie
 sudo mkdir -p /home/minnie/bin 

Saat minnie masuk, dia akan berjalan di shell terbatas.

 CD 

Dia tidak dapat menjalankan perintah yang perlu menyertakan garis miring “ / “:

 /usr/bin/ping 

Namun, dia masih bisa menjalankan perintah yang ditemukan di jalan.

 ping 

Iklan

Itu bukan perilaku yang mungkin Anda harapkan, dan tentu saja bukan itu yang kami inginkan. Untuk memperketat batasan lebih lanjut, kita perlu mengubah jalur yang akan digunakan shell minnie untuk mencari perintah.

Memperketat Batasan

Saat kita membuat direktori home minnie “/home/minnie”, kita juga membuat direktori “/home/minnie/bin”. Di sinilah direktori itu berperan.

Kita akan mengedit file “.bash_profile” minnie dan mengatur jalurnya untuk menunjuk ke direktori itu saja. Kami juga akan membatasi file “.bash_profile” minnie sehingga hanya root yang dapat mengeditnya. Itu berarti tidak ada pengguna lain yang dapat mengedit file itu dan mengubah jalurnya.

 sudo gedit /home/minnie/.bash_profile 

Edit “PATH=" yang ada atau tambahkan baris berikut:

 PATH=$HOME/bin 

Simpan file. Kami akan mengubah pemilik file menjadi root menggunakan perintah chown dan mengubah izin file menggunakan perintah chmod . Hanya pengguna root yang dapat mengedit file.

 sudo chown root:root /home/minnie/.bash_profile
 sudo chmod 755 /home/minnie/.bash_profile
 ls -l /home/minnie/.bash_profile 

Lain kali pengguna minnie masuk, jalurnya menunjuk ke satu folder.

Iklan

Minnie pengguna terbatas kami hanya dapat menggunakan perintah bawaan Bash seperti echo , alias , dan logout . Dia bahkan tidak bisa menggunakan ls !

 ls 

Kita perlu sedikit mengendurkan cengkeraman kita jika kita ingin mereka dapat melakukan sesuatu yang berguna sama sekali. Kami akan membuat beberapa tautan simbolik dari direktori "bin" minnie ke perintah yang kami ingin agar minnie dapat menggunakannya.

 sudo ln -s /bin/ls /home/minnie/bin
 sudo ln -s /bin/top /home/minnie/bin
 sudo ln -s /bin/uptime /home/minnie/bin
 sudo ln -s /bin/pinky /home/minnie/bin 

Ketika minnie selanjutnya masuk, dia akan menemukan bahwa dia dapat menggunakan perintah bawaan Bash, ditambah perintah-perintah yang telah ditautkan.

 ls
 kelingking dave
 waktu aktif 

Membatasi Pengguna yang Ada

Kami membuat minnie sebagai pengguna baru. Untuk mengubah shell dari pengguna yang ada, kita dapat menggunakan opsi -s (shell) dari perintah usermod .

 sudo usermod -s /bin/rbash mary 

Anda dapat menggunakan perintah less pada file “/etc/passwd” untuk melihat dengan cepat shell apa yang ditetapkan sebagai shell default pengguna.

 kurang /etc/passwd 

Kita dapat melihat bahwa pengguna mary akan menggunakan shell yang dibatasi ketika dia login berikutnya.

Iklan

Ingatlah untuk menerapkan perubahan lain untuk membatasi variabel lingkungan $PATH mereka dan untuk mengatur perintah yang Anda inginkan agar dapat dijalankan oleh pengguna.

Membatasi Script

Pengguna biasa yang tidak dibatasi dapat meluncurkan skrip yang dijalankan di shell terbatas. Salin baris berikut dan tempel ke editor. Simpan file sebagai "restricted.sh" dan tutup editor.

 #!/bin/bash

# skrip dimulai di shell Bash normal
echo "## Dalam mode tidak terbatas! ##"

gema
echo "Direktori saat ini: `pwd`"
echo "Mengubah direktori"
cd /usr/bagikan
echo "Sekarang di direktori: `pwd`"
echo "Mengubah ke direktori home"
cd ~
echo "Sekarang di direktori: `pwd`"

# Mengatur mode terbatas
set -r

gema
echo "## Dalam mode terbatas! ##"

gema
echo "Direktori saat ini: `pwd`"
echo "Mengubah direktori ke /home/"
cd /rumah
echo "Masih dalam direktori: `pwd`"

gema
echo "Mencoba memulai shell lain"
/bin/bash

gema
echo "Mencoba mengarahkan output perintah"
ls -l $HOME > file_saya.txt
cat my_files.txt
gema

keluar 0

Kita perlu menggunakan perintah chmod dengan tanda +x (eksekusi) untuk membuat skrip dapat dieksekusi.

 chmod +x dibatasi.sh 

Bagian pertama skrip berjalan di shell normal.

 ./restricted.sh 

Bagian kedua skrip—bit setelah baris "set -r"—berjalan di shell terbatas.

Tak satu pun dari tindakan yang dicoba berhasil di bagian skrip yang dibatasi.

Iklan

Seluruh skrip dapat dijalankan di shell terbatas dengan menambahkan -r ke baris pertama:

 !#/bin/bash -r

Ingat Houdini

Cangkang terbatas berguna, tetapi tidak sepenuhnya sempurna. Pengguna yang cukup terampil mungkin dapat menghindarinya. Tetapi ketika digunakan dengan bijaksana, mereka adalah cara yang berguna untuk menetapkan serangkaian batasan untuk akun tertentu.