Warum funktioniert mein neuer SFTP-Benutzer nicht in einem anderen Verzeichnis?

Warum funktioniert mein neuer SFTP-Benutzer nicht in einem anderen Verzeichnis?

Ich versuche, ein neues SFTP-Konto für meinen Server zu erstellen. Wenn ich diese Anweisungen befolgegenau, dann funktioniert alles einwandfrei:https://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Ich kann mich über mit dem guestuserBenutzer verbinden sftp, mein Home-Verzeichnis durchsuchen und von eine Ebene höher incomingin gehen /sftp/guestuser.

ChrootDirectoryIch kann den Wert sogar so ändern , /etc/ssh/sshd_configdass er speziell lautet /sftp/guestuser, anstatt den %uParameter zu implementieren. Fest codierte Verzeichnisnamen funktionieren daher einwandfrei.

ChrootDirectoryWenn ich ab diesem Punkt jedoch nur den Namen meiner sftpusersGruppe in das Verzeichnis meiner tatsächlichen Website ändere /var/www/www.example.com, kann ich mich über den Befehl mit diesem Benutzer nicht mehr verbinden sftp. Die Shell gibt Folgendes aus:

Verbindung zu www.example.com vom Remote-Host geschlossen. Paket konnte nicht gelesen werden: Verbindung vom Peer zurückgesetzt

Das habe ich auf jeden Fall getan:

  1. Stellen Sie sicher, dass sich der incomingOrdner in meinem /var/www/www.example.comVerzeichnis befindet
  2. Legen Sie den Besitz von /var/www/www.example.combeiden /var/www/www.example.com/incomingaufguestuser:sftpusers
  3. Habe versucht, das Home-Verzeichnis des Benutzers wie /folgt festzulegen:usermod guestuser -d /

Das /sftp/guestuserVerzeichnis (das, mit dem es funktioniert hat) ist im Besitz von root:root, daher sollte die Tatsache, dass die Berechtigungen von /var/wwwaktiviert sind, root:rootkeine Rolle spielen(?)

Warum kann ich das Home-Verzeichnis meines neuen SFTP-Benutzers nicht ändern?

AKTUALISIEREN

Ich kann das Verzeichnis ändern in:

  • /sftp
  • /
  • /var
  • /var/www

Das funktioniert alles. Aber sobald ich noch einen Schritt weiter gehe /var/www, also etwa /var/www/test, funktioniert es nicht. Ich habe versucht, die Punkte aus dem ursprünglichen Verzeichnisnamen zu entfernen, der war www.example.com, aber es hat keinen Unterschied gemacht.

Es geht auch nicht um eine Beschränkung der Anzahl der Unterverzeichnisebenen, denn das /sftp/guestuser/incominghat auch funktioniert. Beim Testen mit einem neuen Verzeichnis /web/www.example.comhat es nicht funktioniert.

Antwort1

Okay, ich habe also die Ursache ermittelt. Das Verzeichnis, das ich als ChrootDirectoryfür den Benutzer definiere, muss Eigentum von sein root.

Wenn ich möchte, dass mein Benutzer Dinge hochladen kann (was bei einem Root-Benutzer offensichtlich nicht möglich ist), muss ich dort ein Unterverzeichnis erstellen und dieses Verzeichnis beim -dErstellen oder Bearbeiten des Benutzers über den Parameter als sein Home-Verzeichnis festlegen.

Wenn der Besitz zu irgendeinem Zeitpunkt geändert wird, sodass der ChrootDirectoryBenutzer Eigentümer der Datei ist, der per FTP darauf zugreifen möchte, broken pipewird die Meldung erneut angezeigt. Wenn Sie den Besitz wieder auf ändern root, kann der Benutzer erneut eine Verbindung herstellen.

verwandte Informationen