Quais são os perigos de criar um usuário normal com o 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 de UIDs existentes, o que poderia dar errado?

Isso não é algo que eu queira fazer, mas algo que eu tenha visto e queira saber por que isso não deveria ser feito. Neste exemplo, está no RHEL5.

    
por Jeff 15.11.2013 / 18:17

4 respostas

15

Eu não acredito que exista qualquer risco inerente, isso é algo que é feito simplesmente para criar separação entre o que são considerados contas do sistema e contas de usuário. A prática de usar números abaixo de 500, da minha experiência, é um Redhat-ism e, na verdade, nada mais que isso.

No Solaris, eu vi os usuários sendo atribuídos a partir dos 100, e só anos depois descobri que ao mesclar dois sistemas de departamentos menores, há um tipo de pesadelo, já que havia vários usuários nos dois departamentos que tinham o mesmo UID / GID atribuído.

Este é realmente o principal risco / dor de cabeça ao atribuir os UIDs. Como o UID é o que está escrito no inode para os arquivos / diretórios dados de um usuário, você não quer ter que executar grandes find procurando arquivos que são de propriedade do UID 1234 e ter que mudar -los para 5678.

Então, colocando algum pensamento na seleção de UIDs, os administradores podem evitar a dor de cabeça no caminho.

O uso de 500 e acima é apenas uma tentativa do Redhat (e de outros Unixes) de fornecer buffer suficiente para que qualquer conta do sistema que precise ser criada não seja mesclada com UIDs atribuídos aos usuários.

/etc/login.defs

Aliás, o número 500 é acionado 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 qualquer coisa que desejar, se quiser substituir o comportamento padrão pelos comandos useradd / adduser .

Página man do Useradd

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

trecho

-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

Uma outra coisa que deve ser notada na página useradd man é esse bit na geração de conta do sistema.

trecho

-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 muitas vezes é usado pelo script incorporado aos vários gerenciadores de pacotes, como o RPM, quando um pacote está sendo instalado. O script desta maneira permite que o sistema selecione automaticamente o próximo UID / GID disponível em um determinado sistema sem o risco de pisar em UIDs / GIDs já atribuídos a usuários do sistema.

    
por 15.11.2013 / 18:32
2

Do ponto de vista do kernel, há 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, 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. 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ário tem um limite de intervalo para lidar com isso 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 podem variar, mas é geralmente configurável.

    
por 16.11.2013 / 02:05
1

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

Dito isso, vi muitos sistemas em que usuários foram criados com o UID < 500 sem problema. 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ários e contas do sistema. Seguindo a regra de não UID < 500, é muito fácil. Então, é uma boa maneira de organizar contas também.

    
por 15.11.2013 / 18:35
1

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

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

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

Você pode ter inconvenientes menores, como os gerenciadores de exibição que não oferecem usuários com UIDs abaixo do limite da 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 em que os IDs do usuário são compartilhados, você pode entrar em conflito com outras máquinas em que esses usuários tenham o mesmo ID do usuário que um usuário do sistema. Em redes com IDs de usuários compartilhados, é melhor manter o intervalo de 1000 a 65535 ou mesmo 10000 a 65535 para usuários humanos.

    
por 17.11.2013 / 23:41

Tags