Se eu sou um servidor web, para quais contas posso desativar shells dentro do arquivo passwd?

1

Estou fazendo um servidor web executando LAMP e quero acessá-lo usando SSH.

Quando abro o arquivo passwd , vejo todas essas contas e quero saber quais eu posso colocar false . Eu tenho as seguintes contas:

root, daemon, bin, sys, sync, games, man, lp, mail, news, uucp, proxy, www-data
backup, list, irc, gnats, nobody, libuuid, syslog, messagebus, whoopsie, 
mandscape, sshd, eric

Exceto root , sshd e eric , quais não devo desativar? Que tal www-data e sshd ?

    
por ericd 19.09.2012 / 04:01

1 resposta

5

Você tem alguns equívocos, tanto sobre como o sistema de login funciona e qual é o propósito dessas contas.

Primeiro, a maioria dessas contas, com exceção de root e eric , são contas do sistema que não são destinadas ao login, mas permitem que serviços diferentes sejam executados como usuários comuns sem todos os privilégios. root conta tem. Por exemplo, o daemon do OpenSSH geralmente é executado como usuário sshd , portanto, se alguém conseguir obter controle sobre o processo sshd , ele somente poderá acessar e modificar os arquivos para os quais o usuário correspondente sshd tem permissões.

Em segundo lugar, a maneira preferida de desabilitar o login de um usuário é desabilitar sua senha e não alterar o shell de login para /bin/false . Nos sistemas Linux modernos, o banco de dados do usuário consiste, na verdade, em duas partes, /etc/passwd e /etc/shadow . A senha é armazenada em /etc/shadow (veja abaixo o motivo) e uma conta é desativada se o campo de senha em /etc/shadow for * .

No exemplo a seguir, o usuário sshd está desativado, enquanto sven tem uma senha criptografada definida. Você não pode fazer o login como usuário sshd , nem pelo console nem por uma sessão ssh, mas o login para sven funcionará.

sshd:*:15533:0:99999:7:::
sven:$6$ckP43saI2$Xjoxh52LLJxz2VXa.:15538:0:99999:7:::

Provavelmente, você descobrirá que todos usuários em seu sistema, com exceção de eric (e talvez root ) estão desativados dessa maneira, o que significa que você deseja realizar já foi feito pelos desenvolvedores. Além disso, você verá que muitas contas também têm seu shell de login definido como /bin/false in /etc/passwd , o que significa que mesmo o root não pode usar 'su' para alternar para essas contas.

Por que a separação de /etc/passwd e /etc/shadow ?

Muitos programas precisam acessar o banco de dados do usuário para várias finalidades, mas conceder acesso de leitura a /etc/passwd permitiu que todos lessem as senhas criptografadas de todos os usuários, o que é altamente inseguro, especialmente porque a criptografia das senhas era bastante fraca muito tempo. Isso foi resolvido colocando as senhas no arquivo separado /etc/shadow , que só pode ser lido pelo root.

    
por 19.09.2012 / 06:11