Untuk membuat pengguna SSH yang hanya memiliki izin untuk mengakses folder tertentu

47

Saya menginstal SSH, tetapi saya menemukan jika saya menggunakan akun asli saya untuk login ke Ubuntu, ia memiliki terlalu banyak izin.

Saya ingin membatasi pengguna untuk hanya memiliki izin untuk folder tertentu di Ubuntu. Bagaimana saya bisa mengkonfigurasi pengguna seperti itu?

Bodoh
sumber

Jawaban:

49

Ini sederhana. Cukup buat pengguna baru dengan direktori home-nya disetel ke direktori yang Anda perlukan untuk mengaksesnya (perintah ini harus dijalankan di bawah sudoatau di shell root):

adduser --home /restricted/directory restricted_user

Ini akan membuat pengguna restricted_user, direktori /restricted/directorydan 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 adduserperintah dengan --no-create-homeopsi 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-serverdengan 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.

whitequark
sumber
1
Saya sudah mencoba, tetapi sepertinya saya masih bisa cd .. dan menelusuri direktori atas. dan ketika saya menggunakan vi a.txt di direktori atas, itu menunjukkan: tekan enter atau perintah untuk melanjutkan, dan saya tidak bisa keluar dari vi
Foolish
1
Bisakah saya menggunakan opsi # 2 jika pengguna hanya memiliki akses sshfs?
flickerfly
1
Semuanya berfungsi dengan baik, kecuali bahwa saya tidak memiliki izin menulis. Bagaimana cara menetapkan izin menulis untuk direktori terbatas ini. Jika saya menggunakan chmod 775, pengguna tidak bisa masuk lagi.
My-Name-Is
3
Anda harus menulis Subsystem sftp internal-sftpbaris pada contoh kedua di atas Matchblok. Kalau tidak, ssh akan mencetak kesalahan dan tidak memulai.
Tik0
1
Lansiran spoiler: tidak berfungsi dengan scp
bicycle
5

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:

http://man.he.net/man1/rbash

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

xpt
sumber
saya dapat menemukan file apa saja di sistem file, termasuk direktori / root dan saya dapat membaca file-file ini. Bertanya-tanya bagaimana cara membatasi akses melihat sesuatu di luar folder pengguna atau menangkap paket jaringan atau membaca / var / log konten
16851556