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
CDpara alterar o diretório de trabalho. -
Mudar os valores do
$ Caminho,$ Shell,$ Bash_env., ou$ Envvariá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.