Permitir que usuário não root faça upload/download no diretório do site

Permitir que usuário não root faça upload/download no diretório do site

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.comem que instalei o Nginx nesse servidor e o diretório /var/www/example.compertence ao usuário www-datae 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.

  1. useradd someone
  2. groupadd sftpusers
  3. usermod -G sftpusers someone
  4. 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
  1. service ssh restart

Mas quando me conectei através do FileZilla, ocorreu um erro. Suspeito que esse erro seja de /var/www/example.compropriedade do usuário www-datae do grupo www-data.

Pergunta: Como permitir que usuários não root possam fazer download ou upload de documentos no /var/www/example.comdiretó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.

  1. adduser someone
  2. 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
    
  3. service ssh restart

  4. 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.

informação relacionada