Usuários de daemon e usuários de carne e osso são listados nos mesmos arquivos. O “arquivo como /etc/passwd
para daemons” é /etc/passwd
.
Não existe uma definição formal de usuários humanos vs. O kernel não se importa (além de conceder muitos privilégios ao usuário com o UID 0). A maioria dos comandos de administração também não se importa. Algumas diferenças típicas são:
- Um usuário humano tem um nome real como "John Doe", enquanto um usuário do sistema tem um nome descritivo como "Nasal daemon" ou nenhum.
- Um usuário humano tem um shell de login real (por exemplo,
/bin/sh
ou/bin/bash
ou/bin/csh
. Alguns usuários do sistema têm um shell (quase sempre/bin/sh
), outros não, dependendo de como eles são a ser usado (por exemplo,su foo
requer quefoo
tenha uma casca). - Um usuário humano geralmente tem uma senha - mas nem sempre é esse o caso, por exemplo, um usuário somente remoto pode ter apenas uma chave SSH. Observe que nos unices modernos, a senha não está em
/etc/passwd
, mas em algum outro arquivo, como/etc/shadow
. - O diretório pessoal de um usuário humano geralmente está em
/home
(ou algum local específico do site), enquanto o diretório inicial de um usuário do sistema geralmente não está em/home
e pode não existir (mas há exceções). - A maioria dos sites designa um intervalo de IDs de usuário para usuários do sistema e um intervalo disjunto para usuários humanos. Reservar 100–65533 ou 500–65533 ou 1000–65533 é típico, e a maioria das distribuições é configurada para começar a alocar IDs de usuários reais de 500 ou 1.000.
Nos sites em que as contas são compartilhadas em várias máquinas, geralmente há um servidor central que contém listas de usuários, acessíveis por NIS ou LDAP . A entrada passwd
em /etc/nsswitch.conf
especifica onde encontrar informações do usuário. É comum ter usuários do sistema no local /etc/passwd
e usuários reais do banco de dados em toda a rede, mas às vezes há usuários do sistema no banco de dados em toda a rede (para impor UIDs consistentes, o que facilita a replicação de dados e servidores) e às vezes, há usuários humanos no arquivo local (para permitir que eles efetuem login mesmo quando a rede é operada).
Uma conta acessível a humanos disfarçada como um usuário do sistema normalmente não teria um nome real, mas teria um shell de login e um conjunto de senhas ou uma chave SSH, ao mesmo tempo em que teria um ID de usuário no intervalo do sistema. Na verdade, seria um disfarce melhor usar uma conta do sistema real cuja remoção faria com que algum serviço parasse de funcionar. Mas você não pode ter regras rígidas para detectar possíveis ataques: por definição, os invasores não seguem as regras.