Shell restrito - Restricted shell
O shell restrito é um shell Unix que restringe alguns dos recursos disponíveis para uma sessão de usuário interativa ou para um script de shell executado dentro dele. Destina-se a fornecer uma camada adicional de segurança, mas é insuficiente para permitir a execução de software totalmente não confiável. Uma operação de modo restrito é encontrada no shell Bourne original e em sua contraparte posterior, Bash , e no KornShell . Em alguns casos, um shell restrito é usado em conjunto com uma jaula chroot , em uma tentativa posterior de limitar o acesso ao sistema como um todo.
Invocação
O modo restrito do shell Bourne sh , e seus semelhantes POSIX, é usado quando o interpretador é chamado de uma das seguintes maneiras:
- sh -r note que isso está em conflito com a opção "ler" em algumas variantes sh
- rsh note que isso pode entrar em conflito com o comando shell remoto , que também é chamado de rsh em alguns sistemas
O modo restrito do Bash é usado quando o Bash é invocado de uma das seguintes maneiras:
- rbash
- bash -r
- bash --restricted
Da mesma forma, o modo restrito de KornShell é produzido invocando-o assim:
- rksh
- ksh -r
Configurando rbash
Para alguns sistemas (por exemplo, CentOS ), a invocação por meio de rbash não é habilitada por padrão, e o usuário obtém umcomando não encontradoerro se chamado diretamente ou falha de login se o arquivo / etc / passwd indicar / bin / rbash como o shell do usuário.
É suficiente criar um link chamado rbash apontando diretamente para o bash . Embora isso invoque o Bash diretamente, sem as opções -rou --restricted, o Bash reconhece que foi invocado por meio de rbash e surge como um shell restrito.
Isso pode ser feito com os seguintes comandos simples (executados como root, logado como usuário root ou usando sudo ):
root@host:~# cd /bin
root@host:/bin# ln bash rbash
Operações limitadas
As seguintes operações não são permitidas em um shell restrito:
- mudança de diretório
- especificando caminhos de acesso absolutos ou nomes contendo uma barra
- definir a variável PATH ou SHELL
- redirecionamento de saída
O Bash adiciona outras restrições, incluindo:
- limitações nas definições de função
- limitações sobre o uso de nomes de arquivo com barras em builtins do Bash
As restrições no KornShell restrito são praticamente as mesmas que no shell Bourne restrito.
Fraquezas de uma casca restrita
O shell restrito não é seguro. Um usuário pode sair do ambiente restrito executando um programa que apresenta uma função shell. A seguir está um exemplo da função shell no vi sendo usada para escapar do shell restrito:
user@host:~$ vi
:set shell=/bin/sh
:shell
Ou simplesmente iniciando um novo shell irrestrito, se estiver no PATH , conforme demonstrado aqui:
user@host:~$ rbash
user@host:~$ cd /
rbash: cd: restricted
user@host:~$ bash
user@host:~$ cd /
user@host:/$
Lista de programas
Além dos modos restritos de shells usuais, os programas de shell restritos especializados incluem:
-
rssh
- usado com OpenSSH , permitindo apenas alguns programas de cópia de arquivos, a saber , scp , sftp , rsync , cvs e rdist -
smrsh
, que limita os comandossendmail
podem invocar