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?

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.


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!


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.