Quais são os perigos de criar um usuário normal com UID <500?


14

Quais são os perigos de criar um usuário normal com UID <500? Supondo que os UIDs não sejam duplicados dos existentes, o que poderia dar errado?

Isso não é algo que eu quero fazer, mas algo que eu já vi e quero saber por que isso não deve ser feito. Neste exemplo, está no RHEL5.


2
Sistemas Debian derivados parecem começar UIDs normais em 1000, e não 500.
Keith Thompson

Respostas:


16

Não acredito que exista um risco inerente, isso é feito simplesmente para criar uma separação entre o que é considerado contas de sistema e contas de usuário. A prática de usar números abaixo de 500, pela minha experiência, é um redhatismo, e realmente nada além disso.

No Solaris, eu vi usuários recebendo números atribuídos a partir de 100 também, apenas anos depois descobrem que, quando a fusão de sistemas de dois departamentos menores causa um tipo de pesadelo, já que havia vários usuários nos 2 departamentos que tinham o mesmo UID / GID's atribuídos.

Este é realmente o principal risco / dor de cabeça ao atribuir os UIDs. Como o UID é o que está finalmente escrito no inode para os arquivos / diretórios de um usuário, não é necessário que você tenha que executar maciços findarquivos que pertencem ao UID 1234 e precisar alterá-los para 5678 .

Portanto, pensando um pouco na seleção de UIDs, os administradores podem evitar dores de cabeça no caminho.

O uso de 500 e acima é apenas uma tentativa do Redhat (e outros Unixes) de fornecer buffer suficiente para que quaisquer contas do sistema que precisem ser criadas não sejam misturadas com UIDs atribuídos aos usuários.

/etc/login.defs

Aliás, o número 500 é direcionado por essa configuração no arquivo de configuração /etc/login.defs,.

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN           500
UID_MAX         60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN           500
GID_MAX         60000

Você pode alterar isso para o que quiser, se desejar substituir o comportamento padrão por useradd/ addusercomandos.

Página de manual Useradd

Se você der uma olhada na useraddpágina de manual, notará esta parte que discute o valor padrão do GID, mas esse comentário também é aplicável aos UIDs também:

excerto

-g, --gid GROUP
    The group name or number of the user´s initial login group. The group name 
    must exist. A group number must refer to an already existing group.

    If not specified, the behavior of useradd will depend on the USERGROUPS_ENAB 
    variable in /etc/login.defs. If this variable is set to yes 
    (or -U/--user-group is specified on the command line), a group will be 
    created for the user, with the same name as her loginname. If the variable 
    is set to no (or -N/--no-user-group is specified on the command line), 
    useradd will set the primary group of the new user to the value specified by 
    the GROUP variable in /etc/default/useradd, or 100 by default.

Contas do sistema

Outras coisas a serem observadas na useraddpágina de manual é esse pouco sobre a geração de contas do sistema.

excerto

-r, --system
    Create a system account.

    System users will be created with no aging information in /etc/shadow, 
    and their numeric identifiers are choosen in the SYS_UID_MIN-SYS_UID_MAX 
    range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and their 
    GID counterparts for the creation of groups).

    Note that useradd will not create a home directory for such an user, 
    regardless of the default setting in /etc/login.defs (CREATE_HOME). You 
    have to specify the -m options if you want a home directory for a system 
    account to be created.

É esse método ( useradd -r ...) que geralmente é usado pelos scripts que são incorporados aos vários gerenciadores de pacotes, como o RPM, quando um pacote está sendo instalado. O script dessa maneira permite que o sistema selecione automaticamente o próximo UID / GID disponível em um determinado sistema, sem o risco de pisar nos UIDs / GIDs já atribuídos aos usuários do sistema.


1
FWIW, acho que esse é um istmo geral do GNU / Linux, não apenas um istmo do Red Hat. Eu já vi isso em todos os sistemas que uso e nunca usei o Red Hat.
strugee

@ strugee - obrigado, eu não queria que a declaração fosse muito ampla e voltasse para me morder.
slm

2

Da perspectiva do kernel, existe apenas um usuário especial: UID 0. A divisão de intervalos de UIDs por razões administrativas simplifica sua vida. Os intervalos comuns são fornecedor, sistema, local e global.

Os usuários do fornecedor são instalados durante a instalação inicial do sistema e são gerenciados de forma estática pelo fornecedor. os usuários do sistema são instalados por máquina, dependendo de quais pacotes estão instalados. a maioria dos utilitários de adição / exclusão de usuários tem um limite de intervalo para lidar com eles separadamente. usuários locais são usuários regulares e atribuídos por máquina. usuários globais são atribuídos por um banco de dados central, mas são usuários regulares. o uso de intervalos de UID evita conflitos entre esses grupos diferentes. onde esses pontos de corte estão podem variar, mas geralmente é configurável.


1

Não há perigos inerentes ao fazer isso. Se você criar um usuário com o UID 499, eles não terão privs extras. A razão pela qual é sugerido não é simplesmente porque os UIDs geralmente são reservados para usuários do sistema. O problema que se pode encontrar ao criar esse UID é quando algum serviço do sistema espera que o UID esteja disponível. É como criar um novo serviço que é executado em uma porta conhecida - não há nenhum problema com isso necessariamente, mas não é uma boa prática e pode causar problemas mais adiante quando você estiver configurando sshd, ftpd, etc.

Dito isto, vi muitos sistemas em que os usuários foram criados com UID <500 sem problemas. No entanto, à medida que a base de usuários cresce e agora existem milhares de usuários, pode ser difícil diferenciar entre contas de usuário e contas do sistema. Seguindo a regra de nenhum UID <500, é muito fácil. Portanto, é uma ótima maneira de organizar contas também.


1

Não há perigo real. O kernel não se importa com valores de ID de usuário, exceto 0. A maioria das ferramentas de administração também não se importa - muito poucas partes do sistema fazem a diferença entre usuários do sistema e usuários humanos.

Os usuários do sistema tendem a ter grupos dedicados, portanto, é provável que não crie contas pertencentes a mais grupos do que deveriam.

Algumas distribuições reservam o intervalo 1–499 (Red Hat e parentes) ou 1–999 (Debian e parentes) para usuários do sistema, incluindo usuários alocados ao instalar um pacote que contém um serviço do sistema que requer um usuário dedicado. A convenção da Debian é que o intervalo de 1 a 99 é alocado estaticamente (portanto, criar um usuário humano nesse intervalo é uma péssima idéia, pois pode colidir com um usuário do sistema) enquanto o intervalo de 100 a 1999 é alocado dinamicamente (criando um usuário humano nesse intervalo é inofensivo, pois qualquer novo usuário do sistema escolhe um ID de usuário gratuito).

Você pode ter pequenos inconvenientes, como gerentes de exibição que não oferecem usuários com UIDs abaixo do limite em sua lista.

O principal perigo para uma máquina isolada é que você provavelmente confundirá seus colegas administradores de sistema. Para uma máquina em uma rede na qual IDs de usuário são compartilhados, você pode entrar em conflito com outras máquinas em que esses usuários tenham o mesmo ID de usuário de sistema. Em redes com IDs de usuário compartilhados, é melhor manter o intervalo de 1000 a 655533 ou até 10000 a 655533 para usuários humanos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.