Jawaban:
Ini sederhana. Cukup buat pengguna baru dengan direktori home-nya disetel ke direktori yang Anda perlukan untuk mengaksesnya (perintah ini harus dijalankan di bawah sudo
atau di shell root):
adduser --home /restricted/directory restricted_user
Ini akan membuat pengguna restricted_user
, direktori /restricted/directory
dan kemudian izin pada direktori akan diatur sehingga pengguna dapat menulisnya. Tidak akan memiliki kemampuan untuk menulis ke direktori lain mana pun secara default.
Jika Anda sudah memiliki direktori, Anda dapat menjalankan adduser
perintah dengan --no-create-home
opsi yang ditambahkan dan mengatur izin secara manual (juga dengan hak akses root), seperti:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Jika Anda perlu membuat bahkan direktori yang dapat ditulis oleh dunia tidak dapat diakses oleh pengguna ini, ada dua varian.
1) Jika Anda ingin memberikan sesi shell interaktif kepada pengguna, maka pertimbangkan untuk mengikuti panduan ini tentang cara membuat chroot jail (di Anda /restricted/directory
).
Setelah itu, tambahkan yang berikut ke Anda sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Jika Anda hanya membutuhkannya untuk menyalin file antara titik akhir koneksi dan host Anda, semuanya jauh lebih mudah. Tambahkan baris ini di akhir sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Kemudian komentari Subsystem sftp /usr/lib/openssh/sftp-server
dengan menempatkan tanda hash ( #
) di awal.
Setelah memulai ulang server SSH Anda (itu tidak membunuh sesi interaktif saat restart, jadi aman bahkan jika Anda salah mengonfigurasi sesuatu; juga, tidak menutup sesi lari Anda sebelum Anda memeriksa bahwa Anda masih dapat masuk), semuanya harus bekerja sebagaimana dimaksud.
Subsystem sftp internal-sftp
baris pada contoh kedua di atas Match
blok. Kalau tidak, ssh akan mencetak kesalahan dan tidak memulai.
Cara termudah untuk membuat pengguna terbatas yang tidak dapat menjelajahi direktori yang diberikan (misalnya, ke direktori atas dll), dan memiliki seperangkat perintah terbatas / terpilih untuk digunakan, adalah dengan menggunakan Shell Terbatas. Ref:
Pertama, buat symlink yang disebut rbash
(jalankan sebagai pengguna root).
ln -s /bin/bash /bin/rbash
Kemudian buat saja pengguna normal dengan Shell Terbatas ini, dan setel home dir ke folder yang diinginkan:
useradd -s /bin/rbash -d /home/restricted_folder username
Bahkan tanpa Shell Terbatas, jika Anda secara eksplisit tidak menambahkan pengguna ini ke daftar sudoer, atau grup khusus apa pun, maka itu akan dibatasi secara default.
Dengan Shell yang Dibatasi, hal-hal berikut tidak diizinkan atau tidak dilakukan:
mengubah direktori dengan cd
mengatur atau menghapus nilai SHELL, PATH, ENV, atau BASH_ENV
menentukan nama perintah yang mengandung /
menentukan nama file yang mengandung a / sebagai argumen ke. perintah builtin
Menentukan nama file yang berisi slash sebagai argumen ke opsi -p ke perintah hash builtin
mengimpor definisi fungsi dari lingkungan shell saat startup
parsing nilai SHELLOPTS dari lingkungan shell saat startup
mengarahkan output menggunakan operator pengalihan>,> |, <>,> &, &>, dan >>
menggunakan perintah exec builtin untuk mengganti shell dengan perintah lain
menambah atau menghapus perintah builtin dengan opsi -f dan -d ke perintah enable builtin
Menggunakan perintah enable builtin untuk mengaktifkan shell builtin yang dinonaktifkan
Menentukan opsi -p untuk perintah builtin command
mematikan mode terbatas dengan set + r atau set + o dibatasi.
Pembatasan ini diberlakukan setelah ada file startup
Selain itu / Secara opsional, untuk membatasi pengguna ke serangkaian perintah terbatas / terpilih untuk digunakan, Anda dapat membuat .bash_profile hanya-baca untuk pengguna itu, dengan
PATH=$HOME/bin
dan symlink perintah apa pun yang Anda izinkan ke folder ~ / bin ke pengguna itu:
ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm
dll.
HTH