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 comandos sendmailpodem invocar

Veja também

Referências