Como o Ubuntu desabilita a conta root por padrão, por que não desativar também o acesso ao shell raiz?

12

Os padrões atuais para a conta raiz em /etc/passwdé root:x:0:0:root:/root:/bin/bash.

Por que não configurá-lo root:x:0:0:root:/root:/usr/sbin/nologin?

loongyh
fonte
7
Para que você possa fazer sudo -i?
AlexP
12
"desativa a conta root" é um pouco de uma descrição solta: o que ele realmente desabilita é autenticação baseada em senha da conta root
steeldriver
1
@ AlexP, na verdade, eu apenas testei, o sudo -i não funciona com o conjunto de raiz em / usr / sbin / nologin.
loongyh

Respostas:

19

Se fosse esse o caso, você só seria capaz de executar comandos com sudoum de cada vez, mas não conseguiria iniciar um shell raiz. Um shell raiz é conveniente em muitos casos, por exemplo, se você planeja executar vários comandos como root em uma linha.

Especificamente, você não pode executar sudo -i, como AlexP observou. De man sudo:

-i, --login    Run the shell specified by the target user's password database entry as a login shell.
Alberto Santini
fonte
7
Não sudo /bin/bashfunciona para fazer isso?
Federico Poloni
5
@FedericoPoloni que seria mais parecido com o que sudo -seu penso (um shell raiz, mas não um shell de login root ). É um bom ponto embora - e na verdade sudo -sparece funcionar mesmo quando shell de root é/usr/sbin/nologin
steeldriver
1
Você pode desativar -i, -s, /bin/bash, e assim por diante por apenas permitindo uma lista branca de comandos, consulte a documentação para o arquivo sudoers. Isso é tão refinado, que é possível, por exemplo, permitir que os usuários executem /etc/init.d/someservice restartcomo root sem permitir que eles executem /etc/init.d/someservice stop. Mas o padrão do ubuntu é apenas definir uma senha roote permitir que os usuários administradores façam tudo com o sudo. Provavelmente, a justificativa é a) mais de um usuário administrador eb) O usuário administrador não precisa se lembrar de uma segunda senha para a conta raiz.
allo
8

Além da resposta sudo de Alberto Santini, há outra (muito melhor) resposta. Se o shell do root estiver definido como algo que não é um shell, a inicialização de um único usuário não funcionará. Há recuperação suloginpara itens como shell não existente ou shell completamente quebrado, mas não funcionará se o shell parecer um shell válido, mas não for realmente um shell.

Você ainda pode sudoobter diretamente um shell especificando-o para sudoque ele não seja uma boa proteção.

Joshua
fonte