Falscher Besitz oder Modi für die Chroot-Verzeichniskomponente

57

Ich habe den Benutzer MY_USER erstellt. Legen Sie sein Ausgangsverzeichnis auf / var / www / RESTRICTED_DIR fest. Dies ist der Pfad, auf den er beschränkt werden sollte. Dann habe ich sshd_config bearbeitet und Folgendes eingestellt:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR

Dann habe ich ssh neu gestartet. MY_USER-Besitzer (und Gruppenbesitzer) von RESTRICTED_DIR gemacht und auf 755 geändert

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER

Wenn ich die 2 Zeilen aus sshd_config entfernt habe, kann sich der Benutzer erfolgreich anmelden. Natürlich kann es auf alle Server zugreifen. Was ist das Problem? Ich habe sogar versucht, RESTRICTED_DIR als root zu speichern (als ich irgendwo las, dass jemand das gleiche Problem gelöst hat). Kein Glück..

MultiformeIngegno
quelle

Antworten:

73

Von der manSeite :

ChrootDirectory
Gibt den Pfadnamen eines Verzeichnisses an, zu dem chroot (2) nach der Authentifizierung wechseln soll . Alle Komponenten des Pfadnamens müssen Stammverzeichnisse sein, die von keinem anderen Benutzer oder keiner anderen Gruppe beschrieben werden können . Nach der Chroot ändert sshd (8) das Arbeitsverzeichnis in das Ausgangsverzeichnis des Benutzers.

Ich vermute, dass eines oder mehrere der Verzeichnisse auf dem Pfad diese Anforderungen nicht erfüllen (mein Verdacht ist, dass wwwIhr Webbenutzer Eigentümer oder Beschreiber ist, nicht root).
Gehen Sie zurück und befolgen Sie die Anweisungen, um sicherzustellen, dass die oben in Fettdruck und Kursivschrift angegebenen Anforderungen erfüllt sind.

voretaq7
quelle
Das macht mich verrückt. Ich habe "chown root: root -R / var / www"; "chmod 775 -R / var / www /"; "usermod -a -G root www-data". Ich kann mich aber immer noch nicht mit MY_USER anmelden
MultiformeIngegno
1
Die Anforderung ist auf dem Weg Komponenten ( /, /var, /var/www, und /var/www/RESTRICTED_DIRmüssen alle erfüllen die Sicherheitsanforderungen oben). Es ist eine echte Chroot (siehe Manpage) - das Home-Verzeichnis Ihres Benutzers muss in der Chroot vorhanden sein , ebenso wie /binalle anderen Dinge, die Ihr Benutzer benötigt ...
voretaq7
2
Okay! Gelöst Ich habe das chrooted dir ein Level höher gesetzt. Dann habe ich dem ursprünglichen chrooted_dir 777 Perms gegeben. Es funktioniert :)
MultiformeIngegno
1
Ungeachtet dessen, was die Manpage sagt und obwohl die Gruppe auf 'root' gesetzt war, musste ich die gw-Berechtigung setzen, bevor es funktionieren würde (Ubuntu 14.04). Die Manpage sollte lauten : Alle Komponenten des Pfadnamens müssen Root-Verzeichnisse sein, die von keinem anderen Benutzer oder keiner Gruppe beschreibbar sindsudo chown root:root -R /path/to/home; sudo chmod 755 -R /path/to/home
am
3
Ich weiß, dass dies ziemlich alt ist, aber anstatt die Berechtigungen für den /var/wwwPfad direkt zu ändern, was Apache beschädigen könnte, ist es weitaus besser, Ihr SFTP-Verzeichnis in einen anderen Pfad zu verschieben, als die URL-Zuordnung in Apache zu verwenden, um auf das andere Verzeichnis zu verweisen . Überprüfen Sie die Dokumentation hier httpd.apache.org/docs/2.4/urlmapping.html unterFiles Outside DocumentRoot
Daniel
32

Das ChrootDirectory-Verzeichnis muss sich im Besitz von root befinden und über den 755-Modus verfügen:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR

Ok, jetzt müssen alle Dateien in /var/www/RESTRICTED_DIRBesitz von sein MY_USER, die zur www-dataGruppe gehören müssen , und den 775-Modus haben, um Gruppenberechtigungen zuzulassen, wie folgt:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*

HINWEIS: Denken Sie daran, dass Sie den Zugriff auf einen htdocs-Ordner nur dann zulassen sollten, wenn Sie Apache konfigurieren.

JG.
quelle
3
Ziemlich sicher, dass es so sein sollte, sudo usermod -a -G www-data MY_USERwie es die Gruppe -G
tun
Dies funktioniert, aber ich kann keine neuen Dateien in das Verzeichnis hochladen. Ich kann nur Dateien ändern, die zuvor mit dem Root-Konto und mit dem Besitz des Benutzers erstellt wurden.
Dlopezgonzalez
3

Nachdem ich heute einige Fehler behoben hatte, wurde mir klar, dass root auch in die Verzeichnisse schreiben kann .

Folgendes hat nicht funktioniert:

$ ls -ld /mnt/synology03/files/
dr-xr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
$ ls -ld /mnt/synology03
drwxr-xr-x 7 root root 4096 Oct  1 21:26 /mnt/synology03
$ ls -ld /mnt
drwxr-xr-x 6 root root 4096 Feb  8 10:01 /mnt
$ ls -ld /
drwxr-xr-x 24 root root 4096 Jan 14 09:22 /

Sobald ich das behoben hatte, fing meine Chroot an zu arbeiten.

$ sudo chmod 755 /mnt/synology03/files/
$ ls -ld /mnt/synology03/files/
drwxr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
Magnus
quelle