Usando o rssh

Uma das limitações do ssh, shfs e do sftp é que, ao criar uma conta de usuário, ele tem acesso não apenas aos arquivos que deve modificar, mas acesso via shell ao servidor, que pode ser usado para rodar comandos diversos e até mesmo explorar brechas de segurança locais (onde um usuário restrito do sistema pode obter privilégios adicionais).

Você pode dar um espaço de armazenamento para um amigo, onde espera que ele guarde apenas alguns backups e descobrir mais tarde que ele andou saturando a banda do servidor baixando filmes e músicas via bittorrent.

O rssh é uma resposta para esses casos. Ele permite que o usuário tenha acesso ao servidor apenas via sftp ou scp, sem ter como executar comandos adicionais. A página do projeto é http://www.pizzashack.org/rssh/.

Comece instalando o pacote “rssh”, que é encontrado na maioria das distribuições. Você pode também instalar baixando o pacote .tar.gz com os fontes, disponível na página. No Debian ele está disponível via apt-get:

# apt-get install rssh

Abra agora o arquivo “/etc/rssh.conf” (ou “/usr/local/etc/rssh.conf”, ao instalar a partir dos fontes) e descomente as linhas:

allowscp
allowsftp

Elas especificam que os usuários remotos poderão usar o scp e sftp para transferir arquivos, mas nenhum outro comando. Verifique também se o arquivo “/etc/shells” contém a linha “/usr/bin/rssh” e, caso necessário, adicione-a manualmente. Crie agora o usuário que terá acesso, usando os passos de sempre:

# adduser manuel

Originalmente, o usuário criado teria acesso completo, via SSH e SFTP. Para limitá-lo ao SFTP, abra o arquivo “/etc/passwd“, onde vai a configuração dos usuários do sistema, e procure a linha referente ao usuário criado (que normalmente será última). Originalmente você verá algo como:

manuel:x:1005:1005:,,,:/home/manuel:/bin/bash

O “/bin/bash” indica o shell ao qual o usuário terá acesso. O pulo do gato é substituir o “/bin/bash” pelo “/usr/bin/rssh“, fazendo com que ele fique restrito aos comandos scp e sftp que indicamos no arquivo “/etc/rssh.conf”. Depois da alteração, a linha ficará assim:

manuel:x:1005:1005:,,,:/home/manuel:/usr/bin/rssh

Em algumas distribuições (e ao instalar a partir dos fontes), o rssh será instalado dentro da pasta “/usr/local/bin” e não “/usr/bin”. Preste atenção para sempre indicar a localização correta.

Você pode alterar também o “/home/manuel”, colocando o diretório onde ficam os arquivos que o usuário pode alterar. Se ele vai apenas alterar os arquivos de um site colocado na pasta “/var/www/manuel”, por exemplo, você poderia usar:

manuel:x:1005:1005:,,,:/var/www/manuel:/usr/bin/rssh

Desta forma, ao conectar ele cai automaticamente na pasta correta, o que facilita as coisas. Depois de verificar tudo, teste tentando acessar localmente, usando o usuário criado:

$ sftp manuel@127.0.0.1

Você notará que, via SFTP você conseguirá acessar os arquivos normalmente. Mas, ao tentar acessar via SSH, você recebe um erro, como:

This account is restricted by rssh.
Allowed commands: scp sftp

If you believe this is in error, please contact your system administrator.
Connection to 127.0.0.1 closed.

Uma observação é que usando o rssh, você não conseguirá conectar usando o “fish://” do Konqueror, precisará conectar através de algum programa que use o SFTP “puro”. Dois exemplos são o GFTP (no Linux) e o Filezilla (no Windows). Em ambos, procure pela opção que indica o protocolo usado e troque de “FTP” para “SSH2”. Indique também a porta usada pelo servidor, que no SFTP é 22 e não 21.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X