Um shell restrito limita o que uma conta de usuário pode fazer no Linux. Um usuário restrito não pode alterar seu diretório e você controla a quais comandos ele tem acesso. Veja como configurar um shell restrito no Linux.
Índice
Um shell restrito não é um shell diferente. É um modo diferente de um shell padrão . Os shells Bash , Korn , Fish e outros podem ser iniciados no modo shell restrito. Estaremos usando o Bash neste artigo, mas os mesmos princípios se aplicam aos outros shells.
Como os shells restritos são apenas outra maneira de usar o shell padrão, eles são fáceis de configurar. Não há nada para instalar e eles estão disponíveis onde quer que o Linux esteja.
Shells restritos também podem ser aplicados a scripts. Isso garante que qualquer dano que eles possam causar se forem escritos incorretamente seja limitado aos confins de seu mundo restrito e que eles não tenham acesso a todo o seu computador.
Esteja ciente, porém, de que os invólucros restritos não são completamente à prova de fuga. Alguém com conhecimento suficiente pode escapar de uma concha restrita. Eles são ótimos para colocar limites seguros em um usuário casual, mas não confie em shells restritos para qualquer segurança do mundo real em um sistema de produção.
Quando você executa o Bash como um shell restrito, o usuário tem alguns recursos removidos dele. Especificamente, o usuário não pode :
cd
para alterar o diretório de trabalho.$PATH
, $SHELL
, $BASH_ENV
, ou $ENV
variáveis ambientais (mas eles podem ler os valores atuais).$SHELLOPTS
as opções de ambiente do shell./
”.exec
para substituir o shell por um processo diferente.Você pode chamar um shell Bash restrito usando a -r
opção (restrito). Tentar realizar uma tarefa simples, como alterar o diretório de trabalho, é proibido. Uma mensagem concisa informa que isso cd
é restrito.
bash -r
Documentos de CD
O shell Bash também pode detectar quando foi invocado usando “rbash” em vez de “bash”. Isso faz com que ele inicie como um shell restrito também. Isso fornece uma maneira conveniente de definir o shell padrão para um usuário específico, que usaremos em breve.
Se usarmos o whereis
comando do Ubuntu para procurar os rbash
arquivos, veremos que o executável está no diretório “usr / bin”. A página do manual está no diretório “/ usr / share / man / man1”.
Usar o ls
comando com a -l
opção (longo) revela que na verdaderbash
é um link simbólico para bash
.
onde está precipitado
ls -l / usr / bin / rbash
No Manjaro e no Fedora, o rbash
link simbólico teve que ser criado. Isso funciona em ambas as distribuições:
onde está precipitado
sudo ln -s / bin / bash / bin / rbash
onde está precipitado
Na segunda vez que usamos o whereis
comando, ele se encontra rbash
no diretório “/ usr / bin”.
Vamos criar uma nova conta de usuário chamada “Minnie”. Vamos definir seu shell para ser o shell restrito usando a -s
opção (shell) do useradd
comando. Também definiremos a senha da conta usando o passwd
comando e criaremos uma pasta pessoal para eles.
O -p
sinalizador (pais) no mkdir
comando informa mkdir
para criar o diretório de destino e quaisquer diretórios pais que ele precise criar também. Assim, ao criar o diretório “/ home / minnie / bin”, criamos o diretório “/ home / minnie” ao mesmo tempo.
sudo useradd minnie -s / bin / rbash
sudo passwd minnie
sudo mkdir -p / home / minnie / bin
Quando Minnie se conectar, ela estará executando em um shell restrito.
CD
Ela não pode invocar comandos que precisam incluir uma barra “ /
“:
/ usr / bin / ping
No entanto, ela ainda pode executar comandos encontrados no caminho.
ping
Esse não é o comportamento que você esperava e certamente não é o que desejamos. Para apertar ainda mais as restrições, precisamos alterar o caminho que o shell de minnie usará para procurar comandos.
Quando criamos o diretório inicial de minnie “/ home / minnie”, também criamos um diretório “/ home / minnie / bin”. É aqui que o diretório entra em jogo.
Vamos editar o arquivo “.bash_profile” de minnie e definir seu caminho para apontar apenas para esse diretório. Também restringiremos o arquivo “.bash_profile” de minnie para que apenas o root possa editá-lo. Isso significa que nenhum outro usuário pode editar esse arquivo e alterar seu caminho.
sudo gedit /home/minnie/.bash_profile
Edite o “PATH =” existente ou adicione a seguinte linha:
PATH = $ HOME / bin
Salve o arquivo. Vamos mudar o dono do arquivo para root usando o chown
comando e mudar as permissões do arquivo usando o chmod
comando. Apenas o usuário root poderá editar o arquivo.
sudo chown root: root /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile
Na próxima vez que a usuária Minnie efetuar login, seu caminho apontará para uma única pasta.
Nosso usuário restrito minnie só pode usar comandos integrados do Bash echo
, como alias
, e logout
. Ela nem pode usar ls
!
ls
Precisamos afrouxar um pouco nosso estrangulamento se quisermos que eles sejam capazes de fazer alguma coisa útil. Criaremos alguns links simbólicos do diretório “bin” de minnie para os comandos que queremos que minnie seja capaz de usar.
sudo ln -s / bin / ls / home / minnie / bin
sudo ln -s / bin / top / home / minnie / bin
sudo ln -s / bin / uptime / home / minnie / bin
sudo ln -s / bin / pinky / home / minnie / bin
Quando minnie fizer login novamente, ela descobrirá que pode usar os comandos internos do Bash, além dos comandos aos quais foram vinculados.
ls
mindinho dave
tempo de atividade
Criamos minnie como um novo usuário. Para alterar o shell de um usuário existente , podemos usar a -s
opção (shell) do usermod
comando.
sudo usermod -s / bin / rbash mary
Você pode usar o less
comando no arquivo “/ etc / passwd” para ver rapidamente qual shell está definido como o shell padrão do usuário.
menos / etc / passwd
Podemos ver que a usuária mary usará o shell restrito na próxima vez que fizer login.
Lembre-se de aplicar as outras alterações para restringir sua $PATH
variável de ambiente e definir os comandos que você deseja que o usuário mary possa executar.
Um usuário regular e irrestrito pode lançar scripts que são executados em um shell restrito. Copie as seguintes linhas e cole-as em um editor. Salve o arquivo como “restrito.sh” e feche o editor.
#! / bin / bash # script começa em shell Bash normal echo "## No modo irrestrito! ##" eco echo "Diretório atual:` pwd` " echo "Alterando diretório" cd / usr / share echo "Agora no diretório:` pwd` " echo "Mudando para o diretório inicial" cd ~ echo "Agora no diretório:` pwd` " # Configurando o modo restrito set -r eco echo "## Em modo restrito! ##" eco echo "Diretório atual:` pwd` " echo "Mudando o diretório para / home /" cd / home echo "Ainda no diretório:` pwd` " eco echo "Tentando iniciar outro shell" / bin / bash eco echo "Tentando redirecionar a saída do comando" ls -l $ HOME> meus_arquivos.txt cat my_files.txt eco saída 0
Precisamos usar o chmod
comando com o +x
sinalizador (execute) para tornar o script executável.
chmod + x restrito.sh
A primeira parte do script é executada em um shell normal.
./restricted.sh
A segunda parte do script – o bit após a linha “set -r” – é executada em um shell restrito.
Nenhuma das ações tentadas teve êxito na parte restrita do script.
Um script inteiro pode ser executado em um shell restrito adicionando -r
à primeira linha:
! # / bin / bash -r
Os shells restritos são úteis, mas não completamente infalíveis. Um usuário suficientemente experiente pode ser capaz de escapar deles. Mas, quando usados com cautela, são uma maneira útil de estabelecer um conjunto de limitações para uma conta específica.
Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…
Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…
A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…
A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…
O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…
Para ver suas fotos mais de perto ou para uma edição precisa , você pode…