Ir para o conteúdo
TURNKEYGNU / LINUX
AplicativosDocumentaçãoBlogCapturas de telaGitHubTurnKey Hub
文Português
EnglishEspañol中文日本語PortuguêsDeutsch
Principal/Como criar um usuário SFTP preso (caixa de raiz)

Documentação

Como criar um usuário SFTP preso (caixa de raiz)

Nota importante para usuários do AWS Marketplace:

Se você não ativou a conta root no seu servidor Marketplace, então você precisará executar os comandos abaixo com sudo. A maneira mais fácil de fazer isso é dentro de uma shell sudo e sair quando você estiver terminado. Por exemplo, comece com o seguinte comando:

sudo su

E quando terminar:

exit

Aqui vamos nós...

Todos os TurnKey appliances vêm com SFTP pré-configurados e habilitados. No entanto, por padrão, todos os usuários têm acesso lido para todo o sistema de arquivos. Desde que você não se importe com eles lendo arquivos, isso pode não ser um problema, pois por padrão novos usuários não privilegiados não têm acesso de escrita em qualquer lugar, exceto seu diretório home (normalmente /home/USERNAME), mais em qualquer lugar que você explicitamente lhes dê acesso de gravação. Adicionalmente, como SFTP é fornecido pelo SSH, por padrão, eles também podem entrar em uma shell SSH. O que eles podem fazer será novamente limitado, mas isso ainda não é desejável.

Então, em um cenário onde você só quer usuários SFTP para se conectar via SFTP (e não SSH) e você quer que eles sejam bloqueados em seu próprio diretório (ou seja, conhecido como "chroot caril") então você pode configurar SSH/SFTP para fazer isso.

Abaixo dei os comandos necessários. Eles estão em forma de script, então pode ser copiado/passado para a linha de comando. Por favor, note, eu tentei fazer os comandos idempotent (i.e. não quebrará as coisas se você executá-los várias vezes) mas eu não testá-lo extensivamente. Então, se você refazer partes dele, há uma chance de que você pode ter resultados inesperados. Os comandos relacionados ao usuário podem ser re-executados para um novo usuário (alterando o valor de NEW_USER), mas adicionar o grupo sftp_users e a configuração SSH, só deve ser feito uma vez. Se você precisar ajustar as configurações de configuração do SSH, eu recomendo que você edite o arquivo de configuração manualmente.

Executar uma vez

Criar o grupo necessário:

groupadd sftp_users

Executar uma vez por novo usuário

Adicionar um novo usuário. Estou usando o nome "newuser" aqui, mas você pode usar o nome que quiser, embora eu sugiro fortemente que você use apenas caracteres minúsculas sem espaços ou caracteres especiais. Se você deseja adicionar usuários adicionais, então altere o valor de "NEW_USER" (na primeira linha abaixo):

NEW_USER="newuser"
useradd -G sftp_users -s /sbin/nologin $NEW_USER
passwd $NEW_USER

Depois de ter definido uma senha para o novo usuário e confirmado, então complete a criação da nova conta de usuário:

mkdir -p /home/$NEW_USER/files
chown root:root /home/$NEW_USER
chown $NEW_USER:$NEW_USER /home/$NEW_USER/files
chmod 700 /home/$NEW_USER/files
usermod -d /files $NEW_USER

Corre Só Uma Vez!

Em seguida, precisamos reconfigurar SSH/SFTP. Para fazer isso, precisamos editar o arquivo de configuração SSH (/etc/ssh/sshd_config). Para facilitar, eu o forneci em forma de script. Por favor, note que isto só deve ser feito uma vez.:

CONF=/etc/ssh/sshd_config
SEARCH="Subsystem sftp \/usr\/lib\/openssh\/sftp-server"
NEW_LINE="Subsystem sftp internal-sftp"

sed -i "/^$SEARCH/ s|^|#|" $CONF
sed -i "/$NEW_LINE/d" $CONF
sed -i "/$SEARCH/a\\$NEW_LINE" $CONF
if ! grep "Match Group sftp_users" $CONF >/dev/null; then
    cat >> $CONF <<EOF

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /home/%u
  ForceCommand internal-sftp
EOF
fi

O passo final é reiniciar o SSH:

service ssh restart

Se você precisar ajustar ainda mais as configurações do SSH, por favor edite o arquivo de configuração manualmente usando um editor de texto como o nano. Por exemplo:

nano /etc/ssh/sshd_config

O usuário irá automaticamente entrar na sua casa chroot (/home/user/files). Eles serão capazes de cd para o diretório pai (/home/user), mas não terá nada além de ler o acesso lá (e não pode navegar mais alto).

Notas adicionais: Se você deseja permitir ao seu usuário SFTP chrooted um pouco mais de flexibilidade (por exemplo, permitir scp e/ou rsync), então em vez de dar-lhes uma shell /sbin/nologin, instale rssh (apt-get instalar rssh) e dar-lhes uma shell /usr/bin/rssh.

TURNKEYGNU / LINUX

Controle sua infraestrutura sem começar do zero.

Explorar o TurnKey
SobreDocumentaçãoPerguntas frequentesBlogGitHub
Livre e de código abertoSeguro por padrãoPronto para implantar