Come creare un utente FTP con specifico / dir / access solo su un'installazione Centos / linux


44

Quindi sono su un'installazione VPS - CentOS Linux. Ho vsFTPd sul server. Attualmente ho accesso SFTP al server tramite il mio utente root, ma ora sto provando a creare un nuovo utente con accesso FTP a una directory specifica solo sul server, ho fatto quanto segue:

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

Quello che faccio fatica a fare è creare l'utente a cui SOLO ha accesso /var/www/mydomain.com - ho osservato che l'utente accede correttamente alla cartella giusta, tuttavia l'utente può quindi navigare "indietro" in altre directory. Voglio che l'utente si attacchi alla cartella specifica e non riesca a "navigare" indietro .

Qualche idea?

Ho trovato diversi articoli sul chrooting, ma semplicemente non ho capito come usarlo nei passaggi inclusi sopra.


digitalocean.com/community/tutorials/… Puoi seguire questo per risolvere il tuo problema
Jack

per coloro che sono su Ubuntu 18 ecco la versione specifica digitalocean.com/community/tutorials/…
Dung

Risposte:


39

È abbastanza semplice.

Devi aggiungere la seguente opzione sul file vsftpd.conf

chroot_local_user=YES

La documentazione all'interno del file di configurazione si spiega da sé:

# 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().

Ciò significa che l'utente avrà solo accesso alla cartella configurata come HOME dell'utente. Di seguito, ho un esempio di una voce passwd utente:

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

Impostare la home directory dell'utente con il seguente comando

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

Nota: Nel mio esempio, questo utente è anche un utente valido per alcune attività pianificate all'interno di Linux. Se non hai questa necessità, ti preghiamo di cambiare la shell dell'utente /sbin/nologininvece di bash.


Ciao nwildner! Grazie mille per il tempo dedicato a rispondermi su questo. Quindi nel mio file vsftpd.conf ho aggiunto la seguente riga "chroot_local_user = YES" - allora come ho capito devo aggiungere una riga simile a quella che mostri per il mio utente? Devo ammettere che non sono del tutto sicuro di cosa scrivere lì con l'esempio fornito. il "1001" ecc. cos'è? Supponiamo che il mio utente sia chiamato: "im_a_linux_noob" e la directory per quell'utente è: "/var/www/mydomain.com" - come sarebbe?
user1231561

E sarei in grado di farlo senza ulteriori passaggi di ciò che ho fatto nel mio post? Quindi fare 1-8 e poi aggiungere quello che descrivi dovrebbe fare il trucco?
user1231561

Ciao. L'esempio sopra è solo una riga (modificata, ovviamente) del /etc/passwdfile, che rappresenta un utente chiamato upload_ftp, 1001: 1001 è il suo ID utente e ID gruppo, / var / www / sites è la home directory dell'utente (e il parametro da cui vsftpd legge) e / bin / bash, la shell. Probabilmente ciò che manca sul vostro caso è una home directory per l'utente, e potrebbe essere risolto con il seguente comando: usermod -d /var/www/mydomain.com <username>. Saluti :)

3
Grazie mille. Un problema però. Funziona bene accedendo tramite FTP normale, tuttavia quando accedo come SFTP - quindi posso tornare indietro - qualche idea?
user1231561

1
Certamente perché sftp è gestito dal tuo server ssh, non dal tuo server ftp. In modo "rozzo": SFTP = SSH + FTP; FTPS = FTP + SSL. C'è un thread su sftp qui, e lo citerò per la duplicazione del soggetto aviod ok? ;) unix.stackexchange.com/a/64541/34720

6

Dopo aver modificato la configurazione per includerla chroot_local_user=YES

È possibile modificare la shell dell'utente in /usr/sbin/nologinmodo tale che se la password perde, è possibile mitigare alcuni rischi (impostare anche la directory home). Anche la shell deve essere elencata /etc/shellso l'autenticazione fallirà.

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

-d, --home HOME_DIR La nuova directory di accesso dell'utente. Se viene fornita l'opzione -m, il contenuto della home directory corrente verrà spostato nella nuova home directory, che viene creata se non esiste già.

-s, --shell SHELL Il nome della nuova shell di accesso dell'utente. Se si imposta questo campo su vuoto, il sistema seleziona la shell di accesso predefinita.

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


4

Ecco i passaggi per configurare un utente e consentire all'utente l'accesso solo tramite FTP (cioè senza SSH) e anche limitare l'accesso a una directory specifica (home utente) su proftpd :

  1. Aggiungi nuovo utente: adduser newusername

  2. Impostare la password: passwd newusername

  3. Modifica la home directory dell'utente per impostazione predefinita in una nuova cartella:

    usermod -d /target/directory username

  4. Modifica shellsfile: vi /etc/shellse aggiungi /dev/nullalla fine

  5. Modifica la newusernamevoce nel passwdfile: vi /etc/passwdda aggiungere /./prima newusernameche la voce assomigli a questa:

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

    Dettagli per i passaggi 4 e 5 qui:

  6. Modifica il /etc/proftpd/proftpd.conffile e decommenta la rigaDefaultRoot ~


-4

Impostare le autorizzazioni per la cartella principale su 711 con l'account root.


-4

Esegui questo comando:

useradd -d ftp_user:chown 711 /etc/init.d/

2
Dovresti considerare di espandere il tuo post per avere almeno qualche spiegazione o documentazione utile.
HalosGhost,

Questa è una risposta terribile. In sostanza stai dando all'utente ftp pieno accesso alla directory /etc/init.d/ - follia completa. 711 ha spiegato - autorizzazioni-calculator.org/decode/0711
Tisch
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.