Como descobrir a qual pacote um usuário pertence?

5

Nas distribuições do Linux, alguns pacotes criam contas de usuário.

Como posso determinar qual pacote criou um determinado usuário?

Eu quero saber especificamente para o Fedora e o Ubuntu, mas as respostas para outras distribuições são bem-vindas.

    
por reinierpost 22.01.2015 / 13:06

4 respostas

5

Nos sistemas baseados em Debian (incluindo o Ubuntu), os pacotes criam usuários usando scripts de mantenedores , geralmente postinst . Portanto, uma maneira pode ser percorrer esses scripts:

grep -R --include='*.postinst' -e useradd -e adduser /var/lib/dpkg/info/

Isso pressupõe, é claro, que o script postinst não tenha sido excluído (manualmente ou porque você desinstalou o pacote em questão).

A política do Debian parece favorecer postinst :

[Y]ou must arrange for your package to create the user or group if necessary using adduser in the preinst or postinst script (again, the latter is to be preferred if it is possible).

O mantenedor do pacote também pode usar preinst , contanto que adduser seja uma pré-dependência.

A política também nos leva à outra origem de contas: o pacote base-passwd , conforme indicado no parágrafo anterior:

If you need a statically allocated id, you must ask for a user or group id from the base-passwd maintainer, and must not release the package until you have been allocated one. Once you have been allocated one you must either make the package depend on a version of the base-passwd package with the id present in /etc/passwd or /etc/group, or arrange for your package to create the user or group itself with the correct id (using adduser) in its preinst or postinst. (Doing it in the postinst is to be preferred if it is possible, otherwise a pre-dependency will be needed on the adduser package.)

A documentação base-passwd ( /usr/share/doc/base-passwd/users-and-groups.txt.gz ou /usr/share/doc/base-passwd/users-and-groups.html ) diz:

The Debian base-passwd package contains the master versions of /etc/passwd and
/etc/group. The update-passwd tool keeps the entries in these master files in
sync on all Debian systems. They comprise only "global static" ids: that is,
those which are reserved globally for the benefit of packages which need to
include files owned by those users or groups, or need the ids compiled into
binaries. 

Os usuários / grupos incluídos são (grepped out de /usr/share/doc/base-passwd/users-and-groups.txt.gz ):

Usuários (geralmente com grupos correspondentes)

root    man     majordom    irc         gdm
daemon  lp      postgres    gnats       saned
bin     mail    www-data    nobody      klog
sys     news    backup      messagebus  syslog
sync    uucp    operator    postfix
games   proxy   list        haldaemon

Grupos (sem usuários correspondentes)

adm     fax     audio       staff       sshd
tty     voice   src         users       fetchmail
disk    cdrom   shadow      lpadmin     cupsys
kmem    floppy  utmp        sasl        nogroup
dialout tape    video       scanner
dip     sudo    plugdev     ssh

O pacote README ( /usr/share/doc/base-passwd/README ) também lista alguns usuários com UIDs no intervalo 60000-64999 e afirma que eles são criados pelos respectivos pacotes.

    
por 22.01.2015 / 13:33
3

AFAIK não existe uma função gerenciadora de pacotes nativa que crie (ou remova) esses usuários funcionais / do sistema, mas isso é feito em seções personalizadas de script pré ou pós-instalação em pacotes RPM.

Normalmente, o pacote RPM cria e reivindica a propriedade do diretório inicial desses usuários. o pacote httpd cria o usuário apache e o diretório home do usuário apache é de propriedade do pacote httpd, permitindo uma maneira circular de encontrar o pacote:

rpm -qf /var/www

Você pode verificar se, de fato, o pacote httpd poderia ter criado o usuário do apache com:

rpm -q --scripts httpd
    
por 22.01.2015 / 13:40
2

Eu uso o Gentoo, então eu extraí o quinto campo do / etc / passwd para encontrar a informação:

cat /etc/passwd | grep cron | gawk -F: '{print $5}'

adicionado pelo portage para o cronbase

O Portage é um sistema de gerenciamento de pacotes para o Gentoo. Então, a conta do cron é criada pelo portage para o cronbase do pacote.

    
por 22.01.2015 / 13:50
1

Atenção: Esta é uma maneira grosseira e pode não funcionar para todos os usuários criados por pacotes.

A maioria dos pacotes que criam usuários estará criando os diretórios home desses usuários fora de / home e na maioria das vezes seus diretórios home farão parte do pacote. Nesses casos, você pode rpm -qf o diretório inicial desses usuários e descobrir o pacote.

Usuário ntp

[root@secapp01 ~]# grep ntp /etc/passwd
ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@secapp01 ~]# rpm -qf /etc/ntp
ntpdate-4.2.6p5-1.el6.x86_64

Usuário postfix

[root@secapp01 ~]# grep postfix /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@secapp01 ~]# rpm -qf /var/spool/postfix
postfix-2.6.6-6.el6_5.x86_64
    
por 22.01.2015 / 13:41