chrooted sftp user mit schreibberechtigungen nach / var / www

10

Ich bin verwirrt über dieses Setup, das ich bereitstellen möchte. Ich hoffe, jemand von euch kann mir helfen: sehr geschätzt.

Hintergrundinformation

Server ist Debian 6.0, ext3, mit Apache2 / SSL und Nginx an der Vorderseite als Reverse-Proxy. Ich muss SFTP-Zugriff auf das Apache-Stammverzeichnis (/ var / www) gewähren und sicherstellen, dass der SFTP-Benutzer mit RWX-Berechtigungen auf diesen Pfad verwurzelt ist.

All dies, ohne die Standardberechtigung in / var / www zu ändern.

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

Innen / 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

Was ich versucht habe

  1. hat eine neue Gruppe Secureftp erstellt
  2. hat einen neuen SFTP-Benutzer erstellt, der auch mit der Nologin- Shell zu SecureFTP- und WWW -Datengruppen verbunden ist . Homedir ist /
  3. bearbeitet sshd_config mit
Subsystem sftp internal-sftp 
AllowTcpForwarding no 
Match Group <secureftp> 
      ChrootDirectory /var/www 
      ForceCommand internal-sftp

Ich kann mich mit dem SFTP-Benutzer anmelden, Dateien auflisten, aber keine Schreibaktion ist zulässig. Sftp-Benutzer ist in der www-Datengruppe, aber die Berechtigungen in / var / www sind read / read + x für das Gruppenbit, also ... Es funktioniert nicht.

Ich habe es auch mit ACL versucht, aber da ich ACL-RWX-Berechtigungen für den SFTP-Benutzer auf / var / www (Verzeichnisse und Dateien rekursiv) anwende, werden auch die Unix-Berechtigungen geändert, was ich nicht möchte.

Was kann ich hier machen?

Ich dachte, ich könnte dem Benutzer www-data ermöglichen, sich als sftp anzumelden, damit er Dateien / Verzeichnisse ändern kann, die www-data in / var / www besitzt. Aber aus irgendeinem Grund denke ich, dass dies sicherheitshalber ein dummer Schritt wäre.

Bashintosh
quelle
Ich denke nicht, dass es möglich ist, ohne die Erlaubnis zu ändern.
Unnikrishnan

Antworten:

15

Was ich getan habe, ist, meine Benutzer in ihre Home-Verzeichnisse zu chrooten und dann mount --bindeinen Link dazu in ihren Home-Verzeichnissen zu erstellen.

Ich habe dann setfaclsichergestellt, dass www-dataMaintans Schreibberechtigungen für neue Dateien im Verzeichnis haben. Dieser Effekt wird wieder auftreten /var/www, was Sie tun möchten.

Durch Festlegen g+sdes Verzeichnisses erben alle neuen darin erstellten Dateien und Verzeichnisse den Gruppenbesitz von seinem übergeordneten Verzeichnis.

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

Das sollte den Trick machen.

Machen Sie Ihre Reittiere dauerhaft

Natürlich möchten Sie, dass Ihre Mounts beim Neustart des Servers noch vorhanden sind. Es ist so einfach wie das Hinzufügen der Reittiere zu Ihrem /etc/fstab. Nicht bei allen Anbietern können Sie diese Datei berühren, bei den meisten jedoch.

Fügen Sie einfach folgende Zeilen hinzu:

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

Möglicherweise möchten Sie neu starten, um sicherzustellen, dass es funktioniert.

Steen Schütt
quelle
1
Tatsache ist, dass wenn Sie chmod g + s / home / someuser / www und someuser chown: www-data / home / someuser / www, auch die gleichen Berechtigungen und Eigentümer übertragen werden: group: / var / www. Dies liegt an der Mount-Bindung. Vielen Dank!
Bashintosh
2
Wo kann ich dir ein Bier bezahlen? Sieht so aus, als wäre alles gut und Apache scheint sich nicht über SFTP-Benutzer als Eigentümer von / var / www zu beschweren. Ich war Ihrer Lösung sehr nahe, als ich den ACL-Weg ging, aber ich habe den suid-Teil weggelassen: Sie sind magisch, danke!
Bashintosh