pengguna sftp chroot dengan izin tulis ke / var / www

10

Saya bingung tentang pengaturan ini yang saya coba gunakan. Saya harap seseorang dari kalian bisa membantu saya: sangat dihargai.

Info latar belakang

Server adalah Debian 6.0, ext3, dengan Apache2 / SSL dan Nginx di depan sebagai proxy terbalik. Saya perlu memberikan akses sftp ke direktori root Apache (/ var / www), memastikan bahwa pengguna sftp chroot ke jalur itu dengan izin RWX.

Semua ini tanpa mengubah izin default di / var / www.

drwxr-xr-x  9 root root  4096 Nov  4 22:46 www

Di dalam / var / www

-rw-r----- 1 www-data www-data     177 Mar 11  2012 file1
drwxr-x--- 6 www-data www-data    4096 Sep 10  2012 dir1
drwxr-xr-x 7 www-data www-data    4096 Sep 28  2012 dir2
-rw------- 1 root     root          19 Apr  6  2012 file2
-rw------- 1 root     root     3548528 Sep 28  2012 file3
drwxr-x--- 6 www-data www-data    4096 Aug 22 00:11 dir3
drwxr-x--- 5 www-data www-data    4096 Jul 15  2012 dir4
drwxr-x--- 2 www-data www-data  536576 Nov 24  2012 dir5
drwxr-x--- 2 www-data www-data    4096 Nov  5 00:00 dir6
drwxr-x--- 2 www-data www-data    4096 Nov  4 13:24 dir7

Apa yang saya coba

  1. membuat secureftp grup baru
  2. menciptakan pengguna sftp baru, bergabung dengan grup secureftp dan www-data juga dengan nologin shell. Homedir adalah /
  3. sshd_config diedit dengan
Subsystem sftp internal-sftp 
AllowTcpForwarding no 
Match Group <secureftp> 
      ChrootDirectory /var/www 
      ForceCommand internal-sftp

Saya dapat masuk dengan pengguna sftp, mendaftar file tetapi tidak ada tindakan tulis yang diizinkan. Pengguna Sftp berada di grup data-www tetapi izin di / var / www dibaca / dibaca + x untuk bit grup jadi ... Tidak berfungsi.

Saya juga sudah mencoba dengan ACL, tetapi ketika saya menerapkan izin ACL RWX untuk pengguna sftp ke / var / www (direktori dan file secara rekursif), itu akan mengubah izin unix juga yang tidak saya inginkan.

Apa yang bisa saya lakukan di sini?

Saya berpikir saya bisa mengaktifkan pengguna www-data untuk login sebagai sftp, sehingga itu akan dapat memodifikasi file / dirs yang dimiliki www-data di / var / www. Tetapi untuk beberapa alasan saya pikir ini akan menjadi langkah bodoh yang aman secara keamanan.

bashintosh
sumber
Saya rasa itu tidak mungkin tanpa mengubah izin.
Unnikrishnan

Jawaban:

15

Apa yang saya lakukan adalah untuk chroot pengguna saya ke direktori home mereka dan kemudian digunakan mount --binduntuk membuat tautan ke direktori home mereka.

Saya kemudian digunakan setfacluntuk memastikan www-datamaintans menulis izin pada file baru di direktori. Efek ini akan berulang /var/www, yang ingin Anda lakukan.

Dengan mengatur g+spada direktori, semua file dan direktori baru yang dibuat di dalamnya akan mewarisi kepemilikan grup dari induknya.

useradd someuser
mkdir -p /home/someuser/www
mount --bind /var/www /home/someuser/www
chmod g+s /home/someuser/www
chown -R someuser:www-data /home/someuser/www
setfacl -d -m g::rwx /home/someuser/www

Itu harus melakukan trik.

Buat tunggangan Anda gigih

Tentunya Anda ingin tunggangan Anda tetap ada saat Anda me-reboot server. Ini sesederhana menambahkan mount ke blog Anda /etc/fstab. Tidak semua penyedia membiarkan Anda menyentuh file ini, tetapi sebagian besar melakukannya.

Cukup tambahkan baris seperti ini:

/var/www        /home/someuser/www        none        bind        0        0

Anda mungkin ingin memulai ulang untuk memastikannya berhasil.

Steen Schütt
sumber
1
Faktanya adalah ketika Anda chmod g + s / home / someuser / www dan chown someuser: www-data / home / someuser / www itu juga akan mentransfer izin dan pemilik yang sama: grup ke / var / www. Ini disebabkan oleh mount --bind. Terima kasih banyak!
bashintosh
2
Di mana saya dapat membayar Anda bir? Sepertinya semua baik-baik saja, dan Apache sepertinya tidak mengeluh tentang sftp-user sebagai pemilik / var / www. Saya sangat dekat dengan solusi Anda ketika saya menggunakan ACL, tetapi saya meninggalkan bagian suid: Anda ajaib, terima kasih!
bashintosh