SFTP-Benutzer mit Zugriff nur auf bestimmten Ordner – Berechtigung zum Erstellen von Dateien verweigert

SFTP-Benutzer mit Zugriff nur auf bestimmten Ordner – Berechtigung zum Erstellen von Dateien verweigert

Ich versuche also, einen Benutzer zu erstellen, der nur auf einen bestimmten Ordner in meinem public_htmlOrdner zugreifen kann. Ich habe den Benutzer erfolgreich erstellt und kann mich anmelden. Ich hatte anfangs einige Probleme beim Anmelden, da der Ordner root gehören musste, bevor der SFTP-Benutzer SFTP ausführen konnte.

Also habe ich diese Anleitung befolgt:https://serverfault.com/questions/584986/bad-ownership-or-modes-for-chroot-directory-component– weist mich an, den Eigentümer des Ordners auf „Root“ zu ändern.

Nachdem ich dies getan habe, kann ich mich erfolgreich anmelden. Nach der Anmeldung kann ich jedoch keine Dateien hinzufügen oder sonst etwas in diesem Ordner tun, da er dem Root-Benutzer gehört.

Ich habe versucht, eine Gruppe zu erstellen und den Root-Benutzer und den SFTP-Benutzer als Mitglieder dieser Gruppe hinzuzufügen, aber das hat auch nicht funktioniert.

Meine Problemumgehung bestand darin, mit dem Root-Benutzer ein weiteres Verzeichnis innerhalb des SFTP-Ordners zu erstellen und anschließend den Eigentümer auf den SFTP-Benutzer zu ändern. Das scheint mir jedoch zu umständlich und fügt der Baumstruktur zusätzlich einen weiteren Ordner hinzu, wovon ich kein großer Fan bin.

Irgendwelche Ideen, wie man einem SFTP-Benutzer Schreibzugriff auf einen Ordner gewähren kann, während Root der Eigentümer bleibt?

Antwort1

Auf einigen Stack-Exchange-Sites wird viel über diese Art von Dingen geredet. Aber falls dies kein Duplikat ist ...

Wenn Sie in meinem CentOS 7 ChrootDirectory verwenden, um einen Benutzer auf ein Verzeichnis zu beschränken, muss dieses Verzeichnis root gehören und darf keinem anderen Benutzer Schreibzugriff gewähren, weder durch Berechtigungen noch durch FACLs. Sie können einen symbolischen Link einrichten, aber der SFTP-Benutzer kann ihm nicht folgen, wenn er auf ein Verzeichnis beschränkt ist. Sie müssen dies also tun.

Erstellen eines Benutzers

useradd ftp_user

Passwort einrichten

passwd ftp_user

Richten Sie die Berechtigungen ein. Sein Home-Verzeichnis wird sein Gefängnis sein.

chown root:root /home/ftp_user
chmod 0755 /home/ftp_user

Beschränken Sie den Benutzer jetzt auf dieses Jail

vi /etc/ssh/sshd_config

Ändere das:

#Subsystem sftp /usr/lib/openssh/sftp-server

Zu

Subsystem sftp internal-sftp

Hinzufügen

Match User ftp_user
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

Speichern und vi beenden.

Nicht vergessen:

systemctl restart sshd 

Jetzt tricksen wir sie aus. Nehmen wir an, Ihr Kunde hat eine Website, mit der er weiterspielen kann, unter /var/www/corny_website

Stellen Sie sicher, dass er über Berechtigungen für dieses Verzeichnis verfügt

setfacl -m u:ftp_user:rwx /var/www/corny_website
setfacl -d -m u:ftp_user:rwx /var/www/corny_website

Jetzt mounten Sie es, anstatt einen symbolischen Link darauf zu erstellen.

mkdir /home/ftp_user/corny_website
mount --bind /var/www/corny_website /home/ftp_user/

Wenn der Benutzer jetzt SFTP ausführt, wird ihm dieser Pipe-Fehler nicht mehr angezeigt und er kann nur /home/ftp_user sehen. Außerdem kann er nur auf /var/www/corny_website hochladen oder von dort herunterladen, was er als /corny_website sieht.

verwandte Informationen