Há duas coisas que você deve fazer para evitar que as pessoas usem essa conta de usuário como uma "conta de usuário humana real".
Como ninguém precisa fazer login como conta para nenhuma finalidade, a primeira e mais importante coisa a fazer é garantir que a autenticação de senha nunca seja bem-sucedida. A excelente resposta do guntbert explica isso em detalhes. Em resumo, você pode executar:
sudo passwd -l user
Separadamente, também é uma boa idéia configurar o login shell do usuário para algo que não executa nenhuma operação e sai imediatamente:
sudo chsh -s /bin/false user
Dessa forma:
-
Efetuando login como o usuário usando um mecanismo diferente da autenticação por senha (como autenticação baseada em chave) para obter um shell normalmente falhará. No entanto, ainda pode ser possível que algumas funcionalidades relacionadas ao SSH funcionem.
Por exemplo, se a autenticação baseada em chave estiver habilitada para o usuário, alguém ainda poderá usá-la para autenticar e abrir uma conexão SSH para scp ou sftp ou para criar um túnel criptografado e possivelmente acessar outras funcionalidades.
-
As tentativas de simular um shell de login normalmente falharão. No entanto, alguém que possa executar programas como root ou que tenha alguma forma não baseada em senha para autenticar como o usuário ainda pode executar um shell de não-login, que fornece os mesmos recursos que um shell de login.
Por exemplo, a configuração do shell de
user
como/bin/false
impedirá quesu - user
esudo -i -u user
(entre outros) funcionem, mesmo que seja executado comoroot
. Mas eles não impedirão quesu user
,sudo -s -u user
ousudo -u user bash
(entre outros) trabalhem quando forem executados comoroot
.
Evidentemente, desabilitar o shell de login de um usuário que já não pode efetuar login por meio de autenticação de senha e que ainda não tem autenticação baseada em chave configurada não confere um grande benefício de segurança . Então, por que isso? Porque:
-
É possível ajudar a lembrar os usuários que fazem poderes de administrador para pensar duas vezes antes de fazer login (ou simular um login) como
user
. -
Definir o shell de um usuário como algo não funcional é uma maneira conveniente e geralmente eficaz de mostrar a qualquer pessoa que esteja lendo
/etc/passwd
que o usuário não representa um ser humano e não deve ser representado de forma interativa.(No Ubuntu e em outros sistemas modernos semelhantes ao Unix
/etc/passwd
armazena informações de conta, mas não os hashes de senha reais - os que estão em/etc/shadow
./etc/passwd
podem ser visualizados por todos ou a maioria dos usuários humanos no sistema, incluindo não administradores.) -
Se, por algum motivo, a autenticação por senha for reativada para o usuário, o shell de login do usuário não sendo funcional normalmente proporcionará um benefício de segurança substancial.