So erstellen Sie einen FTP-Benutzer mit einem bestimmten / dir / -Zugriff nur bei einer Centos / Linux-Installation

44

Also bin ich auf einer VPS - CentOS Linux Installation. Ich habe vsFTPd auf dem Server. Ich habe momentan SFTP-Zugriff auf den Server über meinen Root-Benutzer, versuche aber jetzt, einen neuen Benutzer mit FTP-Zugriff auf ein bestimmtes Verzeichnis nur auf dem Server zu erstellen. Ich habe Folgendes ausgeführt:

1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com

Ich habe Mühe, den Benutzer so zu erstellen, dass er NUR Zugriff darauf hat. /var/www/mydomain.com Ich habe festgestellt, dass der Benutzer sich korrekt im richtigen Ordner anmeldet. Der Benutzer kann dann jedoch "zurück" zu anderen Verzeichnissen navigieren. Ich möchte, dass der Benutzer in dem bestimmten Ordner bleibt und nicht zurück "browsen" kann .

Irgendwelche Ideen?

Ich habe verschiedene Artikel zum Thema Chrooting gefunden, habe es aber einfach nicht herausgefunden, um es in den oben beschriebenen Schritten zu verwenden.

user1231561
quelle
digitalocean.com/community/tutorials/… Sie können dies befolgen, um Ihr Problem zu lösen
Jack
Für diejenigen, die mit Ubuntu 18 arbeiten, ist hier die versionsspezifische
Dung

Antworten:

39

Es ist ganz einfach.

Sie müssen der Datei vsftpd.conf die folgende Option hinzufügen

chroot_local_user=YES

Die Dokumentation in der Konfigurationsdatei ist selbsterklärend:

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

Dies bedeutet, dass der Benutzer nur Zugriff auf den Ordner hat, den Sie als STARTSEITE des Benutzers konfiguriert haben. Im Folgenden ist ein Beispiel für einen Benutzerpassworteintrag aufgeführt:

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

Legen Sie das Basisverzeichnis des Benutzers mit dem folgenden Befehl fest

usermod -d /var/www/my.domain.example/ exampleuser

Hinweis: In meinem Beispiel ist dieser Benutzer auch ein gültiger Benutzer für einige geplante Aufgaben in Linux. Wenn Sie nicht dieses Bedürfnis haben, können Sie die Shell des Benutzers ändern , /sbin/nologinstatt bash.

Jeff Schaller
quelle
Hi nwildner! Vielen Dank, dass Sie sich die Zeit genommen haben, mir diesbezüglich zu antworten. Also habe ich in meiner vsftpd.conf-Datei die folgende Zeile "chroot_local_user = YES" hinzugefügt. Wenn ich das verstehe, muss ich dann eine Zeile hinzufügen, die der von Ihnen für meinen Benutzer angezeigten ähnelt? Ich muss zugeben, dass ich nicht ganz sicher bin, was ich dort mit dem von Ihnen bereitgestellten Beispiel schreiben soll. die "1001" etc was ist das? Nehmen wir an, mein Benutzer heißt "im_a_linux_noob" und das Verzeichnis für diesen Benutzer lautet: "/var/www/mydomain.com" - wie würde das aussehen?
user1231561
Und wäre ich in der Lage, dies zu tun, ohne zusätzliche Schritte von dem, was ich in meinem Beitrag getan habe? Tun Sie also 1-8 und fügen Sie dann hinzu, was Sie beschreiben, um den Trick zu machen?
User1231561
Hallo. Das obige Beispiel ist nur eine Zeile (natürlich geändert) der /etc/passwdDatei, die einen Benutzer mit dem Namen upload_ftp darstellt, 1001: 1001 ist seine Benutzer-ID und Gruppen-ID, / var / www / sites ist das Ausgangsverzeichnis des Benutzers (und der Parameter, aus dem vsftpd liest) und / bin / bash, die Shell. Wahrscheinlich , was auf Ihrem Fall fehlt , ist ein Home - Verzeichnis für den Benutzer, und es könnte mit dem folgenden Befehl gelöst werden: usermod -d /var/www/mydomain.com <username>. Prost :)
3
Ja, vielen Dank. Ein Problem. Es funktioniert einwandfrei, wenn ich mich über normales FTP anmelde. Wenn ich mich jedoch als SFTP anmelde, kann ich dann wieder zurückblättern. Irgendwelche Ideen?
user1231561
1
Sicherlich, weil SFTP von Ihrem SSH-Server und nicht von Ihrem FTP-Server verarbeitet wird. In einer "groben" Weise: SFTP = SSH + FTP; FTPS = FTP + SSL. Es gibt hier einen Thread über SFTP, und ich zitiere ihn, um die Duplizierung von Themen zu vermeiden. ;) unix.stackexchange.com/a/64541/34720
6

Nachdem Sie Ihre Konfiguration geändert haben, um einzuschließen chroot_local_user=YES

Sie können die Shell des Benutzers /usr/sbin/nologinso ändern, dass bei einem Verlust des Kennworts das Risiko gemindert wird (legen Sie auch das Basisverzeichnis fest). Die Shell muss ebenfalls aufgeführt sein, sonst schlägt die /etc/shellsAuthentifizierung fehl.

usermod -d /var/www/my.domain.example -s / usr / sbin / nologin exampleuser

-d, --home HOME_DIR Das neue Anmeldeverzeichnis des Benutzers. Wenn die Option -m angegeben wird, wird der Inhalt des aktuellen Basisverzeichnisses in das neue Basisverzeichnis verschoben, das erstellt wird, falls es noch nicht vorhanden ist.

-s, --shell SHELL Der Name der neuen Anmeldeshell des Benutzers. Wenn Sie dieses Feld leer lassen, wählt das System die Standardanmeldeshell aus.

https://security.appspot.com/vsftpd/FAQ.txt

Gestaltwandler
quelle
4

Hier sind die Schritte zum Einrichten eines Benutzers und zum Zulassen des Benutzerzugriffs nur über FTP (dh ohne SSH) sowie zum Einschränken des Zugriffs auf ein bestimmtes Verzeichnis (Benutzerhome) auf proftpd :

  1. Neuen Benutzer hinzufügen: adduser newusername

  2. Passwort festlegen: passwd newusername

  3. Ändern Sie das Benutzer-Ausgangsverzeichnis vom Standard in einen neuen Ordner:

    usermod -d /target/directory username

  4. shellsDatei bearbeiten : vi /etc/shellsund /dev/nullam Ende hinzufügen

  5. Ändern Sie den newusernameEintrag in der passwdDatei: vi /etc/passwdum ihn /./vor dem hinzuzufügen, newusernameso dass der Eintrag wie folgt aussieht:

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    Details zu den Schritten 4 & 5 hier:

  6. Bearbeiten Sie die /etc/proftpd/proftpd.confDatei und kommentieren Sie die Zeile ausDefaultRoot ~

pTeJa
quelle
-4

Setzen Sie die Stammordnerberechtigungen mit Ihrem Stammkonto auf 711 .

Leping Zou
quelle
-4

Führen Sie diesen Befehl aus:

useradd -d ftp_user:chown 711 /etc/init.d/
Lunix Pro
quelle
2
Sie sollten erwägen, Ihren Beitrag zu erweitern, um zumindest eine hilfreiche Erklärung oder Dokumentation zu erhalten.
HalosGhost
Das ist eine schreckliche Antwort. Sie gewähren dem FTP-Benutzer im Grunde genommen vollen Zugriff auf das Verzeichnis /etc/init.d/ - völliger Wahnsinn. 711 erklärt - permissions-calculator.org/decode/0711
Tisch