Verwenden Sie sftp ChrootDirectory, während Sie anderen Benutzern Schreibzugriff auf dasselbe Verzeichnis gewähren

1095
himdel

Ich muss einem nicht vertrauenswürdigen Benutzer SFTP-Zugriff auf ein bestimmtes Verzeichnis unter seinem Webserver-Stamm gewähren. Ich möchte nicht, dass er auf andere Teile des Systems (einschließlich des restlichen Webs) zugreift, also habe ich über die Verwendung von OpenSSH nachgedacht ChrootDirective. Im Wesentlichen so etwas wie der hier beschriebene Ansatz .

Es scheint jedoch keine Möglichkeit zu geben, dies zu tun, während gleichzeitig dem Webserver (oder dem Skript git deploy) das Schreiben in dieses Verzeichnis ermöglicht wird, denn sobald ich das mache, erhalte ich eine fatal: bad ownership or modes for chroot directory component "/srv/www/"Fehlermeldung.

Ich habe darüber nachgedacht, das Verzeichnis an anderer Stelle zu erstellen und mount --bindes zu erstellen, aber die Einschränkung scheint auf das chrootierte Verzeichnis und nicht nur auf seine Eltern zuzutreffen, so dass ich wieder das gleiche Problem bekomme.

Ich verstehe, dass es eine Sicherheitssache ist, aber das ist hier nicht wirklich relevant, da:

  • die anderen Benutzer sind vertrauenswürdig (na ja, relativ, und sie können sowieso keine Suid-Dateien hinzufügen)
  • Der nicht vertrauenswürdige Benutzer hat nur SFTP-Zugriff, nicht SSH, sodass er in der Lage ist, nichts auszuführen

Also alles was ich übersehen habe? Irgendwelche vernünftigen Wege aus diesem Schlamassel? (Ohne zu FTP zu wechseln oder inkron / rsync vorzugsweise zwischen 2 Verzeichnissen einzurichten.)

1

1 Antwort auf die Frage

0
Kenster

Sie können das Home-Verzeichnis des Benutzers als seinen Chroot-Ordner festlegen, wie in dem von Ihnen verlinkten Tutorial beschrieben. Dann mounten Sie /srv/www/in ein Unterverzeichnis des Home-Verzeichnisses des Benutzers:

mkdir /home/jdoe/srv-www mount --bind /srv/www /home/jdoe/srv-www 

Nachdem er sich mit sftp verbunden hat, muss er in das Unterverzeichnis wechseln, um auf den Inhalt von zuzugreifen /srv/www/. Wenn Sie möchten, können Sie Berechtigungen für das Basisverzeichnis des Benutzers und die anderen Dateien dort sperren.

Vielleicht war mir nicht klar, aber der Benutzer muss nur auf ein Unterverzeichnis des Webs zugreifen können, nicht auf das ganze .. z. `/ home / jdoe / srv-www / downloads` .. und gleichzeitig * andere * Benutzer müssen auch auf dieses Verzeichnis zugreifen können. himdel vor 10 Jahren 0