Limitar o usuário a executar comandos seletivos (Linux)

14

Como posso limitar meu usuário a executar apenas comandos seletivos. Eu tenho um usuário tomc no grupo tomc. Eu preciso que esse usuário seja usuário sudo e depois tenha um bash restrito. Eu tentei seguir o código no /etc/sudoersarquivo, mas não está funcionando, pois o usuário pode executar outros comandos mkdir, comorm

%tomc ALL=/bin/bash,/usr/bin/vim /*
newbie17
fonte
3
Embora o uso do sudo possa ser restrito a comandos específicos, isso pode ser complicado e requer alguma confiança. Se você não confia no usuário, é uma má ideia dar a ele acesso ao sudo. Isso lhes dará privilégios de root ou um aplicativo focado para atacar para obter privilégios de root. Deixar alguém correr sudo bashé equivalente, em muitos aspectos, a senha de root. A partir de um sudo bashshell eles podem executar qualquer comando admin, instalar ou software de exclusão, os usuários e diretórios excluir, etc.
Paul
@ Paul Você pode me sugerir opções melhores e práticas para isso?
Primeiro, esse tópico não está relacionado ao estouro de pilha. Melhores lugares para perguntar incluem superusuário, askubuntu, linux e unix. Primeiro, descubra exatamente o que você deseja permitir que o tomc faça. tomc deve poder fazer _____, mas não ________. Então pergunte. Sudo é para comandos que requerem root (admin) priv. Ele já pode executar o bash sem executá-lo como root.
Paul

Respostas:

18

Você pode estar indo para o lado errado. Em vez de dar a um usuário um shell bash 'restrito', você deve apenas dar a ele acesso aos comandos que eles precisariam para executar como root. Por exemplo, no seu arquivo sudoers:

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

Tenha cuidado ao permitir que os usuários executem o vim como root. O Vim possui muitos recursos integrados, como escapes para o shell e a capacidade de executar comandos no vim. Dependendo da sua distribuição, você pode estar sudoeditdisponível. Isso funciona da mesma forma que um Vim normal, exceto que ele foi projetado para lidar com fugas de shell e coisas do tipo.

mtak
fonte
7
Nenhuma dessas linhas é segura. Como você mencionou,vimpode executar comandos arbitrários do shell. E a segunda linha provavelmente permitiráless /var/log/myapp/../../../etc/shadow! De acordo com minhas experiências, usar o sudo com segurança é difícil ! Mas se você pode evitar se*usar emsudoeditvez devim, pode estar bem.
Joeytwiddle 17/02
Evitar *não é suficiente! Uma vez lesscomo rootusuário, tente digitar !tail /var/log/secure. Como é isso? Estude a NOEXECetiqueta. Mas leve a mensagem de @ joeytwiddle ao coração: a segurança do sudo é realmente difícil.
Bruno Bronosky
3

Na minha Synology Diskstation executando o DSM 6, somente usuários administrativos podem fazer ssh de maneira consistente (usuários não administrativos têm shell como / sbin / nologin em / etc / passwd - você pode configurá-lo como / bin / sh para permitir temporariamente ssh, mas na reinicialização o arquivo / etc / passwd é redefinido). Por esse motivo, é necessário algum tipo de restrição de sudo para uma conta que, de outra forma, existe apenas para executar, por exemplo, / sbin / poweroff. As seguintes linhas em / etc / sudoers funcionaram para mim:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

Tradução: desautorize todos os comandos e permita apenas o comando desejado (sem pedir senha neste caso).

Com esta configuração, o sudo solicita a senha e depois falha em comandos que não sejam os da lista de permissões:

guestx@ds:~$ sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
robm
fonte