• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Code & Café

Dicas de WordPress, PHP, MySQL e mais!

  • MySQL
  • Nginx
  • WordPress
  • PHP
  • Fail2ban
  • Bash
  • Ubuntu
  • Sobre
  • Show Search
Hide Search

Permitir acesso SFTP apenas para o diretório do site em /var/www/site

Deixe seu Comentário

Recentemente um cliente me pediu para ter acesso SFTP aos arquivos do seu website em /var/www/site. A configuração do acesso FTP na realidade é bastante simples, e restringir o acesso de um usário para o seu próprio home directory também. O fator limitante neste caso é que queremos permitir que este usuário acesse um outro diretório que está fora da sua home (neste caso o /var/www/site). Neste tutorial você irá aprender a fazer essa configuração e garantir que o seu cliente tenha acesso apenas ao diretório do seu próprio site e não de todos os arquivos e diretórios do servidor.

OBS: Solução verificada em Ubuntu 16 + SSH + NGINX

1 – Criando um grupo, um usuário e uma senha para o seu cliente:

Acesse o terminal como root e utilize os seguintes comandos para criar um novo grupo, um novo usuário e senha e adicionar o usuário no grupo criado. Neste caso eu coloquei o nome do grupo com o mesmo nome do usuário:

Comando para criar um grupo:

groupadd codecafe

Comando para criar um usuário:

useradd -s /bin/false -d /var/www/site codecafe

Neste caso deve-se utilizar o /bin/false para negar acesso SSH ao servidor, permitindo SOMENTE acesso SFTP.

Comando para atualizar a senha do usuário:

passwd codecafe

Comando para incluir o usuário codecafe dentro do grupo codecafe:

usermod -G codecafe codecafe

OBS: no comando usermod o primeiro parâmetro é o nome do grupo e o segundo parâmetro é o nome do usuário.

2- Criando um novo diretório na home do usuário e habilitando um vínculo com o diretório em /var/www/site:

Acesse o diretório home do usuário que você acabou de criar e dentro dele crie um novo diretório com o mesmo nome do site que deseja permitir o acesso SFTP:

cd /home/codecafe/
mkdir site

Agora nós vamos montar o diretório /var/www/site dentro desse diretório que acabamos de criar (/home/codecafe/site) utilizando o parâmetro –bind:

mount --bind /var/www/site/ /home/codecafe/site/

A partir deste momento todas as atualizações que são feitas em um diretório serão replicadas para o outro e vice-versa. Ou seja, se eu deletar um arquivo em /var/www/site ele também será deletado em /home/codecafe/site (e vice-versa).

Para fazer com que essa configuração seja permanente, você deve incluir a seguinte linha em /etc/fstab:

/var/www/site /home/codecafe/site none bind 0 0

3 – Permissões

ATENÇÃO: Este é o passo mais importante a ser seguido para que o seu acesso SFTP funcione corretamente!!!

Para que você consiga acessar este diretório via SFTP, você precisa garantir que:

O diretório /home/codecafe DEVE ser de propriedade do root:

chown root: /home/codecafe

O diretório /home/codecafe/site/ DEVE ser de propriedade do usuário/grupo que você acabou de criar:

chown codecafe:codecafe /home/codecafe/site/

OBS: No meu caso, como eu tenho o Pool do PHP configurado dentro do servidor, o diretório em /var/www/site já é de propriedade do usuário/grupo codecafe e não do www-data, que é o padrão do NGINX. Neste caso você talvez precise conceder privilégios de acesso a esse diretório para o usuário recém criado para que a configuração funcione corretamente.

4- Modificando o seu arquivo de configuração SSH:

Agora chegou a hora de atualizar o seu arquivo de configuração SSH para permitir o acesso sftp a partir dele e configurar o diretório Chroot para o grupo codecafe que acabamos de criar. Abra e insira as seguintes linhas ao seu arquivo de configuração SSH em /etc/ssh/sshd_config:

Subsystem sftp internal-sftp
Match Group codecafe
ChrootDirectory /home/codecafe/site/
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no

Reinicie o SSH:

service ssh restart

ATENÇÃO: Antes de prosseguir, abra uma nova janela do terminal (Ctrl+Shift_t) e tente acessar o seu servidor via SSH. Se estiver acessando sem problemas, prossiga para o próximo passo. Caso não esteja conseguindo mais acessar o seu servidor, tenha certeza de que o usuário que você está utilizando para logar no servidor via SSH não está incluso no grupo codecafe que acabamos de criar:

groups seuusuariossh

Se você ver que o grupo codecafe está na lista de grupos do usuário que você mesmo utiliza para acessar o servidor via SSH, você deve remover este grupo do seu usuário com o seguinte comando:
deluser <username> <groupname>

Neste exemplo:

deluser seuusuariossh codecafe

Reinicie o ssh novamente e tente acessar o servidor via SSH:

service ssh restart

Se estiver conseguindo acessar o servidor via ssh com o seu usuário normalmente, siga para o próximo passo. Do contrário, você vai precisar fazer uma avaliação mais detalhada da sua situação. Neste caso comente todas as linhas adicionadas em /etc/ssh/sshd_config e reinicie o ssh até descobrir o que pode estar causando este erro.

5- Hora de testar!

Agora é a hora da verdade! Acesse o servidor via SFTP utilizando o login e senha que você criou no passo 1:

sftp [email protected]

Parabéns, você acabou de configurar um usuário para acesso SFTP!

PS: Caso esteja com dificuldades, reveja detalhadamente a etapa de permissões pois provavelmente é isso o que está te impedindo de acessar o servidor via SFTP.

Categoria(s): Bash, FTP, WordPress

Reader Interactions

Comentários Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Primary Sidebar

< pesquisar >

< posts recentes >

  • Qual é a diferença entre npm e nvm?
  • Criando certificados SSL para as suas instalações WordPress locais com mkcert
  • PHP: Como fazer o autoload de classes usando o Composer?

< tags >

javaScript MySQL nginx node npm Nvidia nvm php Ubuntu WordPress WP-CLI

< categorias >

© 2023 · Code & Café ·