La comanda usermod -c -g -d -s a Linux: convertir un usuari en un compte només per a fitxers
Aquesta línia fa servir usermod per convertir un usuari normal en un compte només per a transferència de fitxers: li canvia la descripció, el grup primari, el directori personal i li treu la possibilitat d’obrir una sessió al terminal.
sudo usermod -c "Usuari de FTP" -g system -d /ftp/usuari1 -s /sbin/nologin usuari1 Peça a peça
| Part | Què fa |
|---|---|
sudo | Executa la comanda com a administrador |
usermod | Modifica un compte que ja existeix |
-c "Usuari de FTP" | Canvia el comentari (camp GECOS) de /etc/passwd |
-g system | Canvia el grup primari de l’usuari al grup system |
-d /ftp/usuari1 | Canvia la ruta del directori personal |
-s /sbin/nologin | Canvia el shell d’inici per nologin, que no deixa obrir sessió |
usuari1 | L’usuari que es modifica |
Resultat
La línia de l’usuari a /etc/passwd quedarà així:
$ getent passwd usuari1
usuari1:x:1002:2001:Usuari de FTP:/ftp/usuari1:/sbin/nologin Si l’usuari intenta entrar per consola o per SSH, veurà aquest missatge i la connexió es tancarà:
This account is currently not available. Coses a tenir en compte
El grup system ha d’existir
Linux no té cap grup system de sèrie. Si no l’has creat abans, usermod s’atura amb un error i no aplica cap canvi:
usermod: group 'system' does not exist Crea’l primer (millor amb un nom que digui per a què serveix):
sudo groupadd ftpusuaris -d no crea ni mou el directori
-d només canvia la ruta que hi ha a /etc/passwd. Si /ftp/usuari1 no existeix, no es crea; i els fitxers de l’antic directori personal es queden on eren. Tens dues opcions:
# Moure-hi el contingut de l'antic directori personal
sudo mkdir -p /ftp
sudo usermod -d /ftp/usuari1 -m usuari1
# O crear-lo a mà, buit
sudo mkdir -p /ftp/usuari1
sudo chown usuari1:ftpusuaris /ftp/usuari1 Amb -m, el directori pare (/ftp) ha d’existir. Si no hi és, usermod mostra cannot rename directory /home/usuari1 to /ftp/usuari1, però sí que canvia la ruta a /etc/passwd: tornar a executar la comanda ja no mourà res, així que hauràs de moure el directori a mà (sudo mv /home/usuari1 /ftp/usuari1).
/sbin/nologin o /usr/sbin/nologin
A les distribucions actuals (Debian 12 i 13, Ubuntu, RHEL 9, Fedora) /sbin és un enllaç a /usr/sbin, de manera que totes dues rutes funcionen. La ruta «oficial» és /usr/sbin/nologin.
Alguns servidors FTP comproven el shell
Molts servidors FTP fan servir PAM, i si la seva configuració inclou el mòdul pam_shells, només deixen entrar els usuaris que tenen un shell llistat a /etc/shells. nologin no hi sol ser, de manera que l’usuari tampoc podria entrar per FTP. Revisa la configuració PAM del teu servidor (/etc/pam.d/vsftpd, per exemple) abans de donar-ho per bo.
La versió completa i corregida
sudo groupadd ftpusuaris
sudo mkdir -p /ftp
sudo usermod -c "Usuari de FTP" -g ftpusuaris -d /ftp/usuari1 -m -s /usr/sbin/nologin usuari1 I per comprovar-ho:
getent passwd usuari1
id usuari1
ls -ld /ftp/usuari1 I avui, millor SFTP
FTP envia les contrasenyes i les dades sense xifrar. Si l’objectiu és donar accés per pujar i baixar fitxers, avui és més recomanable SFTP, que funciona sobre SSH i no necessita cap servidor addicional. Amb OpenSSH pots restringir un grup d’usuaris a només SFTP i tancar-los dins del seu directori, afegint al final de /etc/ssh/sshd_config:
Match Group ftpusuaris
ChrootDirectory /ftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no Amb ForceCommand internal-sftp aquests usuaris no poden obrir un terminal encara que tinguin Bash com a shell. Compte: OpenSSH exigeix que el directori del ChrootDirectory (i tots els de sobre) sigui propietat de root i que no hi puguin escriure ni el grup ni la resta d’usuaris; l’usuari ha d’escriure en un subdirectori seu. Després reinicia el servei amb sudo systemctl restart ssh (a RHEL i Fedora, sshd).
Comandes relacionades
usermod: totes les opcions.useradd -c … -g … -d … -s …: la mateixa idea en crear un usuari.groupadd: crear el grup abans.- Guia completa de SFTP
- Guia del fitxer
sshd_config
Esta web usa cookies.