Hanya baca izin untuk sftp pengguna di direktori tertentu

10

Saya ingin membuat pengguna SFTP tertentu yang akan memiliki izin untuk hanya membaca semua folder dan subfolder di /var/www/vhosts. Ada bantuan untuk ini?

Igauan
sumber

Jawaban:

11

Sistem Unix menyediakan chrootperintah yang memungkinkan Anda untuk mengatur ulang /pengguna ke beberapa direktori dalam hierarki sistem file, di mana mereka tidak dapat mengakses file dan direktori "yang lebih tinggi".

Namun dalam kasus Anda, sebaiknya sediakan chroot virtual yang diterapkan oleh layanan shell jarak jauh. sftp dapat dengan mudah dikonfigurasi untuk membatasi pengguna lokal ke bagian tertentu dari sistem file.

maka dalam kasus Anda, Anda ingin chrootmengatakan, pengguna foopengguna ke /var/www/vhosts/direktori.

Anda dapat mengatur direktori chroot untuk pengguna Anda untuk membatasi mereka ke subdirektori /var/www/vhosts/seperti di /etc/ssh/sshd_config;

Buat pengguna foodengan kata sandi

sudo useradd foo
sudo passwd foo

Buat untuk grup hanya SFTP

$ sudo groupadd sftp_users 

Tambahkan ke pengguna foountuk grup hanya SFTP

$ sudo usermod -G sftp_users foo 

Ganti pemilik, karena izin baca / tulis

sudo chown root.root /var/www/vhosts/

Tambahkan izin

sudo chmod 755 /var/www/vhosts/

Edit /etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

Beri komentar dan tambahkan baris seperti di bawah ini

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Tambahkan yang terakhir

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /var/www/vhosts/
  ForceCommand internal-sftp

(Catatan: Matchblok harus di END dari sshd_configberkas.)

Mulai kembali sshlayanan

sudo service ssh restart

Dengan konfigurasi ini Anda dapat masuk ke folder ubuntudan mendapatkan file. Tidak bisa putataudelete

Untuk sftp di edit folder kanan /etc/passwd. Ubah baris agar pengguna footerlihat seperti ini

$ sudo vi /etc/passwd

..
foo:x:1001:1001::/var/www/vhosts/:
..

Ini akan mengubah foofolder rumah pengguna ke folder server sftp Anda.

Rahul
sumber
Jadi saya menambahkan Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no In sshd_config dan membuat pengguna dan grup seperti yang Anda lakukan tetapi pengguna foomemiliki hak untuk semua folder :(
Delirium
@Delirium lihat jawaban saya yang diperbarui
Rahul
Terima kasih banyak atas bantuan Anda. Tapi pasti ada kesalahan .. Saya menambahkan Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftptetapi ada kesalahan ketika saya ingin me-restart ssh/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Delirium
2
@Delirium Saya telah jelas menyebutkan untuk meletakkan Match.....bagian di AKHIR file. Letakkan kode itu di akhir file dan mulai ulang.
Rahul
1
Maaf untuk mata saya yang buta, tetapi berhasil, jadi terima kasih banyak.
Delirium