![É possível "ocultar" uma conta de/etc/passwd?](https://rvso.com/image/31663/%C3%89%20poss%C3%ADvel%20%22ocultar%22%20uma%20conta%20de%2Fetc%2Fpasswd%3F.png)
Um sistema Linux típico não possui apenas contas para os usuários reais do sistema, mas também várias contas do sistema.
Existe algum arquivo como /etc/passwd
para daemons ou outros recursos onde uma conta pode ser definida?
Ouvi dizer que é possível camuflar uma conta como conta de serviço, estou tentando encontrar contas como essas em um computador.
Responder1
Usuários daemon e usuários de carne e osso estã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 versus usuários do sistema. O kernel não se importa (além de conceder muitos privilégios ao usuário com 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 possui um shell de login real (por exemplo,
/bin/sh
ou/bin/bash
ou/bin/csh
. Alguns usuários do sistema possuem um shell (quase sempre/bin/sh
), outros não, dependendo de como devem ser usados (por exemplo,su foo
requeremfoo
um shell). - Um usuário humano geralmente tem uma senha – mas nem sempre é o caso, por exemplo, um usuário remoto pode ter apenas uma chave SSH. Observe que em unidades modernas, a senha não está
/etc/passwd
em algum outro arquivo, como/etc/shadow
. - O diretório inicial de um usuário humano geralmente está em
/home
(ou em 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 separado 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ário reais de 500 ou 1000.
Em sites onde as contas são compartilhadas entre várias máquinas, normalmente existe um servidor central que contém listas de usuários, acessíveis viaNEIouLDAP. A passwd
entrada em/etc/nsswitch.conf
especifica onde encontrar informações do usuário. É comum ter usuários do sistema no /etc/passwd
banco de dados local e usuários reais do banco de dados de toda a rede, mas às vezes há usuários do sistema no banco de dados de toda a rede (para impor UIDs consistentes, o que facilita a replicação do servidor e dos dados), e às vezes há usuários humanos no arquivo local (para permitir que eles façam login mesmo quando a rede estiver conectada).
Uma conta acessível por humanos disfarçada de usuário do sistema normalmente não teria um nome real, mas teria um shell de login e uma senha definida ou uma chave SSH, embora tivesse um ID de usuário no intervalo do sistema. Na verdade, seria um disfarce melhor usar uma conta real do sistema, cuja remoção faria com que algum serviço parasse de funcionar. Mas não é possível ter regras rígidas para detectar possíveis ataques: por definição, os invasores não seguem regras.
Responder2
Não há razão para ter um arquivo de definição de usuário separado. Os usuários do sistema e os usuários reais não são separados tecnicamente, mas organizacionalmente: pelo intervalo de onde seus UIDs são obtidos. dê uma olhada no arquivo /etc/login.defs
. Meu openSUSE tem estas entradas:
SYSTEM_UID_MIN 100
SYSTEM_UID_MAX 499
UID_MIN 1000
UID_MAX 60000
As ferramentas de distribuição usam esses valores para diferenciar os dois grupos. Mas se você criou uma conta de usuário com UID 300, provavelmente ela não seria mostrada no menu de login, mas você poderia usar essa conta como qualquer outra.
Responder3
Se você realmente deseja dividir contas de usuário e de sistema (lendo alguns dos comentários em outras postagens, parece que você está curioso sobre isso), você pode deixar todos os usuários do sistema no files
banco de dados (ou seja, /etc/passwd) e colocar pessoas usuários em um segundo banco de dados (como se você estivesse fazendo ldap).
Para isso, você pode usar o módulo Berkeley DB NSS (disponível em muitos sistemas através de um pacote extra glibc chamado nss_db
). Não tenho certeza de qual sistema operacional você está usando, mas este site oferece algumas dicas para Linux:http://www.linuxfromscratch.org/hints/downloads/files/nss_db.txt
Isso não é para os fracos de coração, já que a documentação não é exatamente abundante, mas pode ser divertido brincar com isso se você quiser aprender mais sobre como esse tipo de coisa funciona (@Hauke Laging, a sugestão sobre como implementar o seu próprio é ótimo também).
Responder4
A maioria dos daemons são executados como root, alguns (por razões de segurança, para limitar sua capacidade de causar danos) são executados como seus próprios usuários. Eles estão listados no /etc/passwd
arquivo. A maioria das distribuições limita o UID do "usuário do sistema" a algum valor, como 500 ou 1000, o que dá uma pista. Alguns deamons têm entradas GECOS (descrição do usuário) dizendo "daemon", outros têm shells estranhos. Mas também existem usuários fantasmas para NFS e outros usos.