Eu tenho um site no meu VPS. Eu instalo o Debian 7 nesse VPS. Meu documento http está localizado no diretório /var/www/example.com
em que instalei o Nginx nesse servidor e o diretório /var/www/example.com
pertence ao usuário www-data
e ao grupo www-data
. Quero adicionar um usuário não root (vamos nomeá-lo someone
) para poder fazer download ou upload de documentos nesse diretório por meio de um cliente FTP ou SFTP como o FileZilla.
eu encontreiesseeesseguia explicando isso pode ser feito usando chroot
. Tentei configurá-lo mas não funcionou. Aqui estão alguns comandos que usei até agora.
useradd someone
groupadd sftpusers
usermod -G sftpusers someone
vi /etc/ssh/sshd_config
Eu adicionei este código
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
E no final do arquivo eu adicionei
Match group sftpusers
ChrootDirectory /var/www/example.com
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
service ssh restart
Mas quando me conectei através do FileZilla, ocorreu um erro. Suspeito que esse erro seja de /var/www/example.com
propriedade do usuário www-data
e do grupo www-data
.
Pergunta: Como permitir que usuários não root possam fazer download ou upload de documentos no /var/www/example.com
diretório por meio de um cliente FTP ou SFTP como o FileZilla. Este usuário não root não deve ser capaz de acessar o diretório pai como/var/www/
Responder1
AH, pelo amor de todas as coisas fofas e fofinhas, não defina permissões 777 em NADA que seja acessível ao world+dog (ou seja, diretórios de seu site, pastas FTP anônimas).
O Linux e o BSD modernos possuem ACLs por usuário que você pode definir e funcionam perfeitamente! Você pode usar isso para adicionar rwx para usuários e grupos específicos também. É super fácil de fazer depois que você os entende!
TLDR; use o comando setfacl da seguinte maneira #setfacl -m someuser:rwx /public_html SHAZAM! Agora que algum usuário leu/gravou/executou em seu diretório public_html, eu encorajo você a ler a página de manual do setfacl ou pelo menos um HOWTO para se familiarizar com sua funcionalidade. Aqui está uma introdução simples às ACLs do sistema de arquivos: https://www.redhat.com/sysadmin/linux-access-control-lists
é ótimo para servidores web onde você precisa permitir que desenvolvedores específicos que tenham acesso a suas próprias contas sem conceder rwx ao world+dog.
Responder2
é assim que eu configuro meu sftp para um usuário específico
1] crie um usuário
adduser {USER}
2]editar /etc/ssh/sshd_config
PasswordAuthentication yes
Subsystem sftp
internal-sftp -u 0007 -f AUTH -l VERBOSE
Match Group {USER}
ChrootDirectory {FOLDER}
ForceCommand internal-sftp -u 0007
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
3] definir direitos para o usuário
chmod -R 777 {FOLDER}
4] reinicie o ssh
service ssh restart
substitua {USER} pelo seu usuário e {FOLDER} pela sua pasta e deve funcionar! ;)
Responder3
Tudo bem, depois de tentativa e erro, parece que aqui está a resposta.
adduser someone
vi /etc/ssh/sshd_config
Estou usando a configuração do Froggiz, então meu código fica assim:PasswordAuthentication yes Subsystem sftp internal-sftp -u 0007 -f AUTH -l VERBOSE Match Group someone ChrootDirectory /var/www ForceCommand internal-sftp -u 0007 AllowTcpForwarding no GatewayPorts no X11Forwarding no
service ssh restart
chmod -R 777 /var/www/example.com
. Isso permitirá que alguém carregue/baixe arquivos e permita que o servidor web/php processe arquivos neste diretório.