Para liberar acesso FTP a apenas uma pasta específica dentro da sua VPS.
Para liberar acesso FTP a apenas uma pasta específica dentro da sua VPS, siga estes passos (assumindo que você está usando um servidor Linux como Ubuntu + vsftpd ou proftpd):
Se ainda não tiver um, o mais comum e seguro é o vsftpd
:
sudo apt update
sudo apt install vsftpd
ftpuser
com acesso somente à pasta /var/www/html
# Crie o diretório, se ainda não existir sudo mkdir -p /var/www/
html
# Crie um novo usuário sem acesso SSH sudo useradd -d /var/www/
html
-s /usr/sbin/nologin ftpuser # Defina a senha sudo passwd ftpuser # Dê permissão à pasta sudo chown ftpuser:ftpuser /var/www/
html
Edite o arquivo de configuração:
sudo nano /etc/vsftpd.conf
Altere ou adicione:
# Impede que o usuário acesse além da pasta dele
chroot_local_user=YES
allow_writeable_chroot=YES
# Habilita o FTP para usuários locais
local_enable=YES
write_enable=YES
# Impede acesso a pastas superiores
user_sub_token=$USER
local_root=/home/$USER
Se você quer que o ftpuser
fique travado na pasta /var/www/html
, use:
user_sub_token=$USER
local_root=/var/www/html
sudo systemctl restart vsftpd
Host: seu IP ou domínio
Usuário: ftpuser
Senha: a que você definiu
Porta: 21
sudo groupadd sftpusers
sudo usermod -aG sftpusers ftpuser
sudo nano /etc/ssh/sshd_config
Match Group sftpusers
ChrootDirectory /var/www
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
?? Isso fará com que qualquer usuário do grupo
sftpusers
:
Use apenas SFTP
Seja preso em /var/www
Não consiga abrir terminal (SSH) nem subir pastas
ChrootDirectory
deve ser do root e sem permissão de escrita para outros usuários:
sudo chown root:root /var/www
sudo chmod 755 /var/www
sudo mkdir -p /var/www
sudo chown ftpuser:ftpuser /var/www
sudo chmod 755 /var/www
sudo systemctl restart ssh
Conecte com FileZilla usando SFTP (porta 22)
Você só deve ver a pasta /uploads
e não conseguir sair dela
Você pode definir o home
do usuário para coincidir com a pasta final acessível:
sudo usermod -d /uploads ftpuser
Mas o importante é o ChrootDirectory
, não o home.
Se quiser que eu verifique a configuração que você tem no sshd_config
, é só colar aqui. Posso te ajudar a ajustar exatamente para o caminho que você precisa.