Editando arquivo sudoers para restringir os comandos de um usuário


8

É possível editar o arquivo sudoers para que um usuário possa usar o sudo para qualquer comando, exceto um especificado? Eu acredito que é verdade que o arquivo sudoers pode ser configurado para que um usuário possa executar apenas uma determinada lista de comandos.

EDIT: os comandos que realmente quero remover são parar e reiniciar ... isso me faz pensar que há chamadas especiais do sistema para parar e reiniciar. Você pode tirar chamadas do sistema de um usuário? Caso contrário, é porque o sistema de permissão unix abstrai as chamadas do sistema negligenciando isso?

Respostas:


5

Outra maneira de analisar é que, se os usuários têm acesso root irrestrito, eles podem facilmente obter acesso root completo.

Embora você possa resolver algo, isso seria facilmente contornado.

Embora o SElinux seja uma maneira possível, ainda é preciso muito para aprender.


3

Para fazer o que você deseja (mantenha o formulário do usuário em execução, interrompa, reinicie e encerre), você terá que procurar nas coisas do SElinux para impedir que o usuário faça essas chamadas. Caso contrário, o usuário executará primeiro / bin / sh primeiro e depois executará / bin / halt sem passar pelo sudo.


2
Ou qualquer um dos zilhões de programas dos quais você pode obter um shell ou seu próprio script.
Ronald Pottol 07/07/2009

3

Registre tudo o que eles fazem via sudo, presumivelmente, você tem uma maneira de passar o ponto para não fazê-lo novamente.

Defaults logfile=/var/log/sudolog 

registrará todos os comandos que executarem, pesquise no google um pouco para obter mais informações.


Você precisará de log centralizado e precisará gritar com eles se eles executarem um shell. Um shell pode ser obtido de um editor, por exemplo. ou homem homem etc. #
James

3

Sim e não ... Você pode impedir que um usuário execute um arquivo específico precedendo o arquivo com um estrondo (!); No entanto, você não pode impedir que um usuário copie o arquivo para outro local e execute-o a partir daí.

User_Alias    ADMINS = peter, bob, bunny, %operator

ADMINS        ALL    = !/usr/bin/su, !SHELLS

Concedendo acesso a arquivos específicos como outro usuário


Exemplo de como definir os "SHELLS" acima: Cmnd_Alias ​​SHELLS = / bin / sh, / bin / ksh, / bin / bash, / bin / zsh, \ / bin / csh, / bin / tcsh, \ / usr / bin / login, / usr / bin / su
pulcher

Vários utilitários permitem executar comandos como root (tar, links e nmap), por isso, sinceramente, acho que a solução real é: a) comandos da lista de permissões que você deseja executar como root ou b) apenas contratar alguém que você confia
Alguns Linux Nerd

2

Se o usuário realmente deseja reiniciar, ele encontrará uma maneira. sudo -s, sudo -i, sudo $EDITOR /etc/sudoers... pode ser usado para remover suas restrições.

E em sistemas tipo Unix, você pode reiniciar o sistema desde que seja root (uid 0). Se você encontrar uma maneira de restringir essas chamadas do sistema, poderá fazer o seguinte:

usuário $ echo b | sudo tee / proc / sysrq-trigger

ou uma variação dos mesmos. Ou reinicie causando um pânico no kernel. Ou...

Por fim, ter acesso root geralmente permite remover as restrições existentes.


É uma pena que o Linux não tenha mais níveis de segurança. Eles não eram perfeitos, mas os homens eram fáceis de montar. Eles não impediram a reinicialização, mas impediram muitas outras coisas. E, como eram tão fáceis, você poderia usá-los em todos os sistemas. Nenhum ajuste e tal necessário.
Thomas

Eles não estavam no BSD, não no Linux?
User1686 07/07/2009

1

com certeza, como chamada de raiz visudo e impeça 'user' de executar / sbin / halt:

user ALL=(ALL) NOPASSWD: !/sbin/halt

Eu acredito que o pedido foi para uma lista de comandos que o usuário não tem permissão para executar
Wayne

1

Existe um risco de se fazer dessa maneira: muitas vezes existem maneiras de se fazer a mesma ação. Por exemplo, o telnit 6 ou o init 6 também reinicia. Pode haver uma maneira de forçar o kernel a despejar o núcleo e a reinicializar também.


1

A linha a seguir deve permitir que o usuário "jim" execute tudo, exceto / usr / bin / kill e / usr / bin / su.

jim          ALL= !/usr/bin/kill,!/usr/bin/su

0

Isso não foi testado e o YMMV, mas que tal configurar uma cmd_list dos comandos que você não deseja executar e, em seguida, usar! Cmd_list para o grupo / usuário especificado?

Eu não tenho acesso para testar isso e apenas olhei a página do manual on-line em Manual do Sudoers, para que alguns especialistas me corrijam aqui se eu estiver errado

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.