Como usar o Shell restrito para limitar o que um usuário do Linux pode fazer

Mar 25, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock

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 quais comandos eles têm acesso. Veja como configurar uma concha restrita no Linux.

Conchas restritas

Um shell restrito não é uma concha diferente. É um modo diferente de uma concha padrão . o Bash. , Korn. , Peixe e outras conchas podem ser iniciadas no modo de shell restrito. Nós estaremos usando bash neste artigo, mas os mesmos princípios se aplicam aos outros shells.

Porque as conchas restritas são apenas outra maneira de usar sua concha 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 seja.

As conchas restritas também podem ser aplicadas a scripts. Isso garante que qualquer dano que eles possam causar se forem escritos incorretamente se limitam aos limites de seu mundo restrito e que eles não têm acesso ao seu computador.

Esteja ciente, porém, que as conchas restritas 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 fronteiras seguras em um usuário casual, mas não confie em conchas restritas para qualquer segurança do mundo real em um sistema de produção.

RELACIONADO: Qual a diferença entre Bash, ZSH e outras conchas do Linux?

Bash restrito

Quando você executa o Bash como um shell restrito, o usuário tem alguns recursos removidos deles. Especificamente, o usuário não pode :

  • Usar CD para alterar o diretório de trabalho.
  • Mudar os valores do $ Caminho , $ Shell , $ Bash_env. , ou $ Env variáveis ​​ambientais (mas eles podem ler os valores atuais).
  • Leia ou altere $ Shapeops. opções ambientais de shell.
  • Redirecionar a saída de um comando.
  • Invocar comandos que exigem um caminho para localizá-los. Ou seja, você não pode emitir um comando que tem uma ou mais barras avançadas " / " iniciar.
  • Invocar exec. substituir um processo diferente para a casca.
  • Use qualquer um dos recursos restritos em um script.

Você pode invocar um shell de bash restrito usando o -r. (restrito) opção. Tentando fazer uma tarefa simples como alterar o diretório de trabalho é proibido. Uma mensagem terceira lhe diz que CD é restrito.

 Bash -r 
 Documentos CD 

O shell bash também pode detectar quando foi invocado usando "rbash" em vez de "bash". Isso faz com que ele comece como uma concha restrita 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 Onde é comando no Ubuntu para procurar o rbash. Arquivos, veremos que o executável está no diretório "USR / BIN". A página do homem está no diretório "/ usr / share / man / man1".

Usando o. ls. comando com o. -eu (longa) opção revela que rbash. é Na verdade, um link simbólico para bash .

 Onde Rbash 
 ls -l / usr / bin / rbash 

Em Manjaro e Fedora, o rbash. link simbólico tinha que ser criado. Isso funciona em ambas as distribuições:

 Onde Rbash 
 sudo ln -s / bin / bash / bin / rbash 
 Onde Rbash 

A segunda vez que usamos o Onde é Comando, encontra rbash. no diretório "/ usr / bin".

Restringindo um usuário

Vamos Crie uma nova conta de usuário nomeado "Minnie". Nós vamos definir sua concha para ser o shell restrito usando o -s. (Shell) Opção do useradd. comando. Bem, também Defina a senha da conta usando o. passwd. comando, e criaremos uma pasta em casa para eles.

o -p. (pais) bandeira no mkdir. comando diz mkdir. Para criar o diretório de destino e quaisquer diretórios de pais que precise criar também. Então, criando 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 faz login, ela estará correndo em uma concha restrita.

 CD 

Ela não pode invocar comandos que precisam incluir uma barra virada " / ":

 / USR / bin / ping 

No entanto, ela ainda pode executar comandos que são encontrados no caminho.

 ping 

Esse não é o comportamento que você poderia ter esperado, e certamente não é o que queremos. Para apertar ainda mais as restrições, precisamos mudar o caminho que a Shell de Minnie usará para procurar comandos.

Apertando as restrições

Quando criamos o diretório inicial de Minnie "/ Home / Minnie", também criamos um diretório "/ home / minnie / bin". É aqui que esse diretório entra em jogo.

Vamos editar o arquivo ".bash_profile" de Minnie e definir seu caminho para apontar para esse diretório apenas. Também restringiremos o arquivo ".bash_profile" de Minnie para que apenas raiz possa editá-la. Isso significa que nenhum outro usuário pode editar esse arquivo e alterar seu caminho.

 sudo gedit /home/minnie/.bash_profile

Edite o "caminho =" existente ou adicione a seguinte linha:

 PATH = $ HOME / BIN 

Salve o arquivo. Nós vamos Altere o proprietário do arquivo para enraizar usando o chown. comando e. Altere as permissões do arquivo usando o. chmod. comando. Apenas o usuário root poderá editar o arquivo.

 sudo pown raiz: raiz /home/minnie/.bash_profile
 sudo chmod 755 /home/minnie/.bash_profile
 ls -l /home/minnie/.bash_profile

O próximo usuário do usuário Minnie faz login, seu caminho aponta para uma única pasta.

Nosso usuário restrito Minnie só pode usar comandos internos de bash como eco , alias. , e sair . Ela não pode nem usar ls. !

 ls 

Precisamos afastar nossos estrangulamentos um pouco se quisermos que eles possam fazer algo útil. Vamos criar 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 / tempo de atividade / casa / minnie / bin 
 sudo ln -s / bin / mindinho / home / minnie / bin 

Quando Minnie se troga, ela descobrirá que ela pode usar os comandos internos de bash, além desses comandos que foram vinculados.

 ls 
 Pinky Dave 
 Uptime 

Restringir usuários existentes

Criamos Minnie como um novo usuário. Para mudar a casca de um existente usuário, podemos usar o -s. (Shell) Opção do usermod. comando.

 sudo usermod -s / bin / rbash mary 

Você pode usar o menos Comando no arquivo "/ etc / passwd" para ver rapidamente o que o shell é definido como o shell padrão de um usuário.

 Menos / etc / passwd 

Podemos ver que o usuário Mary usará o invólucro restrito quando ela faz login.

Lembre-se de aplicar as outras alterações para restringir suas $ Caminho Variável de ambiente e definir os comandos que você deseja que o usuário Mary seja capaz de executar.

Restringindo scripts.

Um usuário regular e irrestrito pode iniciar scripts que são executados em uma concha restrita. 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 no shell de bash normal
Echo "## no modo irrestrito! ##"

eco
Echo "Diretório atual:` pwd` "
Echo "Alterar Diretório"
CD / USR / SHARE
echo "agora no diretório:` pwd` "
eco "mudando para o diretório inicial"
CD ~.
echo "agora no diretório:` pwd` "

# Configuração do modo restrito
set -r.

eco
echo "## no modo restrito! ##"

eco
Echo "Diretório atual:` pwd` "
Echo "Alterando o diretório para / home /"
CD / HOME
echo "ainda no diretório:` pwd` "

eco
Echo "tentando iniciar outra concha"
/ bin / bash

eco
eco "tentando redirecionar a saída do comando"
ls -l $ home & gt; my_files.txt.
gato my_files.txt.
eco

Sair 0 

Precisamos usar o chmod. comando com o. + X. (execute) sinalizar para tornar o executável do script.

 chmod + x restrito.sh 

A primeira parte do script é executada em uma concha normal.

 ./ restrito.sh 

A segunda parte do script - o bit após a linha "set -r" em um shell restrito.

Nenhuma das tentativas de ação é bem-sucedida na parte restrita do script.

Um script inteiro pode ser feito para ser executado em um casco restrito adicionando -r. para a primeira linha:

! # / Bin / bash -r 

Lembre-se de Houdini

As conchas restritas são úteis, mas não completamente infalíveis. Um usuário suficientemente qualificado pode ser capaz de escapar deles. Mas quando usado judiciosamente, eles são uma maneira útil de estabelecer um conjunto de limitações para uma determinada conta.


Linux - Artigos mais populares

Como matar processos de zumbis no Linux

Linux Nov 25, 2024

Fatmawati Achmad Zaenuri / Shutterstock Programas que são mal escritos ou realizando mal podem sair processos zumbis espreitando dentro do seu comp..


Como usar strace para monitorar chamadas do sistema Linux

Linux Jun 23, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com Programas Linux pedem ao núcleo para fazer algumas coisas para eles. o strace. O comando r..


O que há de novo no GNOME 40?

Linux Jul 23, 2025

Fundação Gnome. O GNOME 40 tem mais que um novo esquema de numeração. Junto com seu novo visual vem uma nova maneira de trabalhar. As antigas metáforas ..


5 Distribuições Linux especializadas com características únicas

Linux Jul 20, 2025

Lendo através da longa lista desinstalada de distros Linux existentes, os sabores diversos e os brotos de fora-brotos começam a desfocar juntos. Para remediar isso, reunimos algumas dist..


Como reverter o kernel no Linux

Linux Sep 30, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com Se o seu PC do Linux de repente tiver problemas após uma atualização para o seu sistema, é possível um ..


O que é pop! _Os?

Linux Oct 20, 2025

Se você já ouviu falar sobre Pop! _Os. , você pode ter visto as pessoas com frequência referindo-se a ela como a melhor alternativa do Windows ou a distribuição ideal do..


Como desligar um PC do Ubuntu

Linux Oct 12, 2025

Como todos os computadores pessoais, um PC executando o Ubuntu. O sistema operacional de desktop deve ser desligado agora e depois. O desligamento do Ubuntu é fácil, e você t..


5 Recursos do Ubuntu Linux que você deve usar

Linux Dec 6, 2024

O Ubuntu Linux é rico em recursos e vem com uma seleção com curadoria de software pré -instalado. Cavar um pouco mais profundo e você encontrará alguns recursos que deve estar usando. ..


Categorias