Quando esses usuários foram criados?
Nos casos mencionados, eles foram criados na instalação do sistema. Essas contas de usuário são convencionais, algumas datando de décadas atrás. Eles também são padronizados. A base padrão do Linux os divide em:
- a necessária utilizador padrão contas,
root, bin, e daemon; e
- o opcional contas de usuário padrão
adm, lp, sync, shutdown, halt, mail, news, uucp, operator, man, enobody
Outras contas de usuários que são mencionados aqui - pulse, avahi, colorde Debian-exim(para escolher um de arquivo de senhas do py4on) - levar-nos a sua pergunta seguinte.
Como eles estão relacionados aos novos programas que estão sendo instalados?
As contas de usuário não padrão são criadas e destruídas pelos "scripts de manutenção" para vários pacotes, à medida que esses pacotes são instalados e eliminados. Uma conta de usuário será criada pelo chamado postinstscript mantenedor do pacote , que é executado getentpara verificar se a conta do usuário já existe e useraddse não existe. Em teoria, ele seria excluído pelo postrmscript de mantenedor do pacote , em execução userdel.
Na prática, as contas de usuário para pacotes não são excluídas. O wiki do Fedora (qv) explica que isso seria difícil. Veja o bug Debian # 646175 para um exemplo dessa lógica em ação, na qual é decidido simplesmente não excluir a rabbitmqconta do usuário quando o pacote for eliminado, para resolver um problema com um daemon que continua sendo executado sob a égide dessa conta.
Como esses programas foram iniciados com diferentes UIDs?
No Unix e Linux, um processo em execução sob a égide do superusuário pode alterar sua conta de usuário para outra coisa e continuar executando o mesmo programa, mas o inverso não é permitido. (É necessário usar o mecanismo set-UID.)
O sistema de gerenciamento daemon é executado como superusuário. Seus dados de configuração especificam que daemons específicos são executados sob a égide de contas de usuário específicas:
- Com o Sistema 5,
rco script /etc/init.dusa uma ferramenta auxiliar como start-stop-daemone sua --chuidopção.
- Com um gerente de serviço daemontools família, as
runchamadas de script setuidgid, s6-setuidgid, chpst, ou runuidcom o nome da conta do usuário. Existem exemplos disso em /unix//a/179798/5132 que definem a nagiosconta do usuário.
- Com o iniciante, há uma
setuidestrofe em um arquivo de trabalho, que especifica a conta do usuário. Isso não é particularmente refinado e, às vezes, se deseja o que é descrito em /superuser//a/723333/38062 .
- Com systemd, há uma
User=configuração no arquivo da unidade de serviço, que especifica a conta do usuário.
Quando o sistema de gerenciamento de daemon gera um processo para ser daemon, esses mecanismos eliminam os privilégios de superusuário, para que o processo daemon continue sendo executado sob a égide da conta de usuário sem privilégios.
Há uma explicação bastante longa por que um bom gerenciamento de daemon é feito dessa maneira. Mas você não perguntou o porquê; somente quando, como e de onde. Pr Um resumo muito breve, portanto:
Os sistemas operacionais Unix e Linux isolam processos em execução sob a égide de diferentes contas de usuários. Historicamente, se alguém pudesse assumir o controle de um daemon que funcionava como superusuário, poderia fazer o que quisesse. Um daemon que é executado sob a égide de uma conta sem privilégios, por outro lado, pode acessar apenas arquivos, diretórios, dispositivos e processos que essa conta sem privilégios pode. Um sistema de programas daemon desconfiados mutuamente, todos funcionando sob a égide de diferentes contas de usuário e incapazes de acessar / controlar arquivos / diretórios / processos / dispositivos (internos, confiáveis) uns dos outros, portanto, é muito mais difícil de decifrar.
Leitura adicional