Symbolischer Link und Filezilla über SFTP

15

Ich bin ziemlich neu in Debian und versuche, einen Server einzurichten.

Ich habe einen Benutzer erstellt, der nur auf seinen Ordner /home/username(und sein Unterverzeichnis) zugreifen kann .

Jetzt möchte ich diesen Benutzer für den von mir eingerichteten Webserver verwenden und habe ihm Zugriff gewährt , /var/wwwaber ich kann nicht /var/wwwdurch sftp sehen und habe einen symbolischen Link wie diesen erstellt:

root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *

Jetzt kann ich mit filezilla den folgenden www-Ordner sehen:

Filezilla

Aber wenn ich versuche, es zu öffnen, bekomme ich Folgendes:

Öffnen

Was mache ich falsch?

Doc
quelle

Antworten:

21

Es ist wahrscheinlich, dass das SFTP chrootet wird, sodass das Verzeichnis / var / www dem Benutzer im chroot-Gefängnis nicht zur Verfügung steht.

Schau /etc/ssh/sshd_configrein und untersuche die sftp-Direktiven. Sehen Sie etwas wie:

Match group sftp
  ChrootDirectory /home/%u
  AllowTcpForwarding no
  ForceCommand internal-sftp

Die Manpage sshd_config ist hier .

Sobald sich der Benutzer /home/usernamein SFTP befindet, wird dieses Verzeichnis im Grunde genommen /und Verweise außerhalb von /home/usernamesind nicht verfügbar. Tatsächlich ln -s /var/www /home/username/wwwsieht ein Symlink wie der aus, den Sie erreichen möchten /home/username/var/www(dh /home/usernameist jetzt /jeder Link, bei dem Verweise /var/wwwauch ein Unterverzeichnis /home/usernameim Kontext der Chroot sein müssen).

Als Lösung können Sie die Chroot deaktivieren (dies hat jedoch andere Auswirkungen auf die Sicherheit, vor allem wenn SFTP-Benutzer Ihr Dateisystem voll im Griff haben). Sie können ein Loop-Mount von / var / www in / home / username / www durchführen (etwas wie mount --bind /var/www /home/username/www(überprüfen Sie Ihre Dokumentation mount), das wie erwartet unter chroot funktionieren sollte). Sie können auch mit der Datei sshd_config mucken, um diesen einen bestimmten Benutzer von chroot auszuschließen (allerdings wiederum mit Auswirkungen auf die Sicherheit).

Ich würde zuerst das Binden Mount versuchen.

cjc
quelle
2
+1 für den Mount - Bind Trick!
Helge Klein
1
Wenn Sie möchten, dass es über Neustarts hinweg persistent bleibt, bearbeiten Sie es /etc/fstabmit einer Zeile wie/home/username/www /var/www none bind 0 0
pzkpfw
0

Ich habe beschlossen, die Verknüpfung des von mir erstellten Symlinks zu lösen

root@server:/home/username# mkdir www
root@server:/home/username# mount --bind /home/username/www /var/www

(auch wenn ich alles verloren habe war in / var / www, aber es ist mir egal)

Vielen Dank an alle!

Doc
quelle
Du hast nichts verloren. Hängen Sie Ihre Dateien einfach aus und kopieren Sie sie, bevor Sie sie erneut einhängen.
Zoredache
uuuhhh danke! Ich hatte nichts als 1 Datei mit einem Link, nichts Wichtiges, aber ich konnte nicht herausfinden, um es wiederherzustellen: D
Doc