Mengubah izin menulis untuk SFTP yang dipenjara menolak masuk

14

Saya telah memeriksa banyak situs web dan forum tentang cara mengatur pengguna SFTP yang dipenjara ke direktori tertentu menggunakan CHROOT. Berikut adalah langkah-langkah yang telah saya ikuti tetapi sepertinya saya tidak bisa mendapatkan izin menulis untuk bekerja.

Mempersiapkan

sshd_config

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


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

Membuat folder

mkdir /var/www/sites

Buat Pengguna dan Grup

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

Izin dan Kepemilikan

chown root:root /var/www
chmod 755 /var/www/sites

Sekarang dengan pengaturan ini pengunggah pengguna dapat SFTP ke direktori home tetapi tidak dapat menulis ke direktori.

Ada 2 kesalahan khas yang terjadi, saya tidak bisa masuk atau tidak punya izin menulis.

Kesalahan Login

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

Saya akhirnya mencoba untuk mencari tahu ini dan jika ada yang bisa mengarahkan saya ke arah yang benar saya akan sangat menghargainya.

Terima kasih.

onggie
sumber

Jawaban:

16

Temukan solusinya. Pengguna dipenjara /var/www/sites. Saya kemudian membuat folder lain /var/www/sites/site1.

Saya menggunakan:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

Ini memungkinkan direktori home untuk memiliki izin masuk yang benar dan kemudian dapat menulis ke folder berikutnya.

Jika pengguna membutuhkan akses tulis /var/www/sites, maka Anda harus memenjarakan pengguna /var/wwwyang memiliki root:rootkepemilikan dan izin 755. Anda kemudian harus memberikan /var/www/siteskepemilikan root: (grup Anda) dan izin 775.

onggie
sumber
1

Mungkin solusi terbaik adalah:

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

Tambahkan pengguna:

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

Kemudian, untuk setiap pengguna yang Anda buat, tambahkan tag ssh seperti ini: (Anda juga bisa menggunakan arahan "Match Group" seperti pada contoh Anda alih-alih "Cocokkan Pengguna")

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Jadi, Anda dapat mengelola semua pengguna yang Anda butuhkan di lingkungan chroot.

Hth, Fabrizio

fabreg
sumber
Blok ulang kode akhir Anda: Matchmendukung beberapa target dalam daftar yang dipisahkan koma, sehingga kami dapat sangat menyederhanakan / merapikan bahwa dengan memiliki satu set penimpaan untuk kedua pengguna, dengan tajukMatch User dev1,dev2
underscore_d
1
Jadi bagaimana Anda mengaturnya sehingga mereka dikunci ke folder yang telah mereka akses baca / tulis?
Kevin B Burns