Existe um shell especial que nos será muito útil, é o
rssh! Com ele permitimos apenas que os usuários usem os comandos
scp ou
sftp, mas não tenham acesso shell diretamente pelo ssh. E se preferir, pode definir apenas que eles usem apenas o scp ou apenas o sftp.
Vale lembrar que com o rssh é permitido outros tipos de conexões como rhosts e rsync, mas não será abordado por aqui, pois não vamos utilizá-los.
Baixe o rssh no link abaixo:
Depois de fazer o download, vamos instalá-lo. Copie o arquivo para o seguinte diretório e execute os passos para instalação:
# cp rssh-2.3.2.tar.gz /usr/local/src
# cd /usr/local/src
# tar -zxvf rssh-2.3.2.tar.gz
# cd rssh-2.3.2
# ./configure
# make
# make install
Pronto! Temos agora a solução para parte dos nossos problemas, com isso não vamos mais permitir que certos usuários tenham acesso shell ao nosso sistema. Vale lembrar que o acesso shell que me refiro é o bash!
Vamos agora fazer algumas configurações e por tudo em ordem, comece logo alterando o seu shell pequeno grilo. Edite o arquivo
/etc/passwd e altere a linha do seu usuário, removendo o shell de "/bin/bash" para "/usr/local/bin/rssh", deve ficar parecido com isso:
pequenogrilo:x:1001:104::/home/pequenogrilo:/usr/local/bin/rssh
Vamos então alterar algumas configurações no arquivo "/usr/local/etc/rssh.conf":
logfacility = LOG_USER
allowscp
umask = 022
Descomente ou adicione essas linhas, com isso iremos permitir apenas acesso ao comando scp e não permitiremos o sftp muito menos ssh.
Reinicie o daemon sshd com o seguinte comando:
# /etc/rc.d/rc.sshd restart
E faça um pequeno teste, tente conectar usando o cliente ssh ou sftp e veja o que acontece. Primeiro tente com o usuário mestre e depois com o seu usuário, o pequenogrilo. Lembre-se que alteramos a porta do daemon sshd para 2222 e levando em conta que o IP dessa máquina é 192.168.0.1, testemos:
Caso ele pergunte sobre a chave, digite "yes" e depois entre com a senha normalmente:
# ssh 192.168.0.1 -p 2222 -l mestre
Depois tente usando o sftp:
# sftp -oPort=2222 mestre@192.168.0.1
Agora com o pequenogrilo:
# ssh 192.168.0.1 -p 2222 -l pequenogrilo
E depois:
# sftp -oPort=2222 pequenogrilo@192.168.0.1
Veja os resultados, com o mestre você consegue acesso normalmente, mas com o pequenogrilo, ou a conexão falha, ou exibe uma mensagem do rssh dizendo que esse usuário não está autorizado a estabelecer esse tipo de conexão.
Com isso resolvemos o nosso problema de não permitir acesso ao shell pelo nosso usuário de backup, mas ainda nos deparamos com outro problema. Veremos...