Bisakah saya membuat pengguna SSH yang hanya bisa mengakses direktori tertentu?

45

Saya memiliki Virtual Private Server yang dapat saya sambungkan menggunakan SSH dengan akun root saya, dapat menjalankan perintah linux dan mengakses semua area disk, jelas.

Saya ingin membuat akun pengguna lain, yang akan dapat mengakses server ini menggunakan SSH juga, tetapi hanya ke direktori tertentu, misalnya /var/www/example.com/

Misalnya, bayangkan pengguna ini memiliki file error.log BESAR (500 MB) yang terletak di /var/www/example.com/logs/error.log Ketika mengakses file ini menggunakan FTP, pengguna ini perlu mengunduh 500 MB untuk melihat baris terakhir log, tetapi saya ingin dia menjadi dapat menjalankan sesuatu seperti ini:

tail error.log

Oleh karena itu saya membutuhkannya untuk dapat mengakses server menggunakan SSH, tetapi saya tidak ingin memberinya akses ke semua area server.

Bagaimana saya bisa melakukan ini?

Richard Rodriguez
sumber

Jawaban:

29

chroot pengguna.


Memperbarui:

The TechRepublic artikel oleh Vincent Danen mengatakan:

Dengan rilis OpenSSH 4.9p1, Anda tidak lagi harus bergantung pada peretasan pihak ketiga atau pengaturan chroot yang rumit untuk membatasi pengguna ke direktori home mereka atau memberi mereka akses ke layanan SFTP.

sunting / etc / ssh / sshd_config (/ etc / sshd_config pada beberapa distribusi) dan setel opsi-opsi berikut:

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Pastikan arahan “Match” ada di akhir file. Ini memberitahu OpenSSH bahwa semua pengguna dalam grup sftp harus chroot ke direktori home mereka (yang% h wakili dalam perintah ChrootDirectory

Untuk setiap pengguna yang ingin Anda chroot, tambahkan mereka ke grup sftp dengan menggunakan:

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

Perintah usermod di atas akan menambahkan user joe ke grup sftp dan mengatur shell mereka ke / bin / false sehingga mereka benar-benar tidak pernah mendapatkan akses shell. Perintah chown dan chmod akan mengatur izin yang diperlukan untuk direktori. Dengan izin ini ditetapkan, pengguna akan diizinkan untuk mengunggah dan mengunduh file, tetapi tidak dapat membuat direktori atau file di direktori root

Chroot akun shell sedikit lebih rumit karena mengharuskan file perangkat tertentu dan shell tersedia di direktori home pengguna. Perintah-perintah berikut ini akan mengatur sistem chroot yang sangat mendasar di Mandriva Linux:

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

Dengan hal di atas, pengguna joe dapat ssh in dan akan dibatasi untuk chroot. Sayangnya, ini tidak banyak membantu, tetapi memberi Anda gambaran bagaimana hal itu dapat diatur. Bergantung pada apa yang ingin Anda berikan, Anda perlu menginstal perpustakaan dan binari tambahan.


Situs Komunitas Ubuntu mengatakan

Membuat chroot

  1. Instal paket dchroot dan debootstrap.

  2. Sebagai administrator (mis. Menggunakan sudo), buat direktori baru untuk chroot. Dalam prosedur ini, direktori /var/chrootakan digunakan. Untuk melakukannya, ketikkan sudo mkdir /var/chroot ke dalam baris perintah.

  3. Sebagai administrator, buka /etc/schroot/schroot.confdi editor teks. Ketik cd /etc/schroot, diikuti oleh gksu gedit schroot.conf. Ini akan memungkinkan Anda untuk mengedit file.

  4. Tambahkan baris berikut ke dalam schroot.confdan kemudian simpan dan tutup file. Ganti your_usernamedengan nama pengguna Anda.

    [lucid] description = Ubuntu Lucid location = / var / chroot priority = 3 pengguna = your_username groups = sbuild root-groups = root

Buka terminal dan ketik:

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

Ini akan membuat 'instalasi' dasar Ubuntu 10.04 (Lucid Lynx) di chroot. Mungkin perlu beberapa saat untuk mengunduh paket. Catatan: Anda dapat mengganti jernih dengan versi Ubuntu pilihan Anda. Catatan: Anda harus mengubah yang di atas mirror.url.comdengan URL cermin arsip yang valid untuk Anda. Seharusnya chroot dasar telah dibuat. Ketik sudo chroot /var/chroot untuk mengubah ke shell root di dalam chroot.

Menyiapkan chroot

Ada beberapa langkah dasar yang dapat Anda ambil untuk mengatur chroot, menyediakan fasilitas seperti resolusi DNS dan akses /proc.

Catatan: Ketik perintah-perintah ini di shell yang berada di luar chroot.

Ketik yang berikut untuk memasang sistem /proc file di chroot (diperlukan untuk mengelola proses):

sudo mount -o bind /proc /var/chroot/proc  

Ketik yang berikut untuk mengizinkan resolusi DNS dari dalam chroot (diperlukan untuk akses Internet):

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

Sangat sedikit paket diinstal secara default di chroot (bahkan sudo tidak diinstal). Gunakan apt-get install package_nameuntuk menginstal paket.

RedGrittyBrick
sumber
16

Taruhan terbaik Anda, IMHO, adalah untuk mengatur jail chroot ssh, yaitu lingkungan bash minimum pada /var/www/example.com/dir. Untuk melakukannya, Anda dapat mengikuti:

celebdor
sumber