É o usuário com UID 1 “daemon” em todos os sistemas?

1

Estou escrevendo algum código de teste e gostaria de saber se será portátil se ele assumir que o usuário com o UID 1 é chamado de "daemon" em todos os sistemas Unix?

EDIT : Se não (a resposta parece ser não), existem alguns mapeamentos de UID / nome de usuário que são consistentes em Unices (diferente de 0 / root, que Já estou usando)?

    
por joshlf 23.11.2015 / 20:49

3 respostas

2

Não, esse não é o caso em todos os lugares. Em um sistema CentOS 7, extraído de /etc/passwd :

bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

No Linux, você pode usar getent passwd daemon para encontrar o UID do usuário daemon e getent passwd 1 para descobrir qual usuário tem o UID 1.

    
por 23.11.2015 / 20:53
1

Não. Para o Linux, bin e daemon trocaram de lugar - bin costumava ser # 1 e daemon # 2. No Minix, o # 1 / bin na verdade costumava ser semi-privilegiado pelo kernel do sistema operacional (ou seja, um pouco como # 0 / root). No Solaris, o UID # 1 é chamado daemon , enquanto o GID # 1 é chamado others - e esse é o grupo padrão para novos usuários (com exceção do usuário feito durante a instalação com o root - "role" , ele pertence ao staff -group).

O UID # 0 é, naturalmente, root ... GID # 0 geralmente é root ou wheel .

Acho que o único usuário e grupo necessário é o # 0. No entanto, é altamente recomendável ter um grupo bin e daemon também - para possuir / / bin e / / sbin. Então você frequentemente tem um sys para possuir vários arquivos de sistema e diretórios - especialmente / dev (em dispositivos Linux são geralmente propriedade de root e muitos grupos diferentes para diferentes grupos de dispositivos ... apenas / dev / random, / dev / null e / dev / zero muitas vezes ainda têm sys como grupo Em outros sistemas operacionais - como o Solaris - muitas coisas pertencem a sys:sys ). Muitas vezes você tem adm como proprietário e grupo de vários logs (originalmente localizado em / usr / adm) e, às vezes, executa o syslog. Muitas vezes havia um man usuário / grupo que possuía as páginas do manual.

operator usuário e / ou grupo era para aqueles autorizados a trabalhar no Console - ou seja, o terminal conectado diretamente ao computador na sala de computadores bloqueada. Muitas vezes, ele executava backups e, com frequência, era membro do grupo root para acessar (quase) tudo. staff é um grupo usado para "junior-admins", talvez tenha permitido o controle sobre / home e adicionar usuários locais.

Finalmente, recebemos uma série de usuários: pares de grupos para vários serviços comuns - e até certo ponto - necessários ... alguns são hoje incomuns: lp = printer, news = quadro de avisos da rede de notícias (NNTP) , mail = o serviço de e-mail (local), uucp = Unix para Unix CoPy ... uma maneira de juntar coisas como e-mail e newsgroups, e "copiá-lo" para uma máquina Unix remota. Muito usado quando quando as pessoas usavam principalmente dial-ups. tty = TeleTipo ... possui vários terminais.

Muitos também tiveram um usuário games . Jogos que requerem acesso direto a coisas como placas de som e placas de vídeo, onde executam SetUID como este usuário (jogos) ... e o game -user foi adicionado aos grupos deste hardware. Desta forma, o jogo obteve o acesso necessário ao hardware, sem ter que ser executado com acesso root completo (ou seja, SetUID = root). Também permitia listas "Top Score" compartilhadas e entre todos os usuários no sistema.

    
por 23.11.2015 / 23:31
0

Não, isso não é necessariamente portátil. Qualquer instalação local é livre para alterar qualquer par UID / nome (embora geralmente não seja aconselhado).

Para portabilidade, você deve sempre usar as funções do sistema operacional para converter de e para identificadores de usuário e grupo numéricos / simbólicos ( uid e gid ).

Se você se preocupa com o ID do usuário numérico ( uid ) 2, use os comandos e as chamadas do sistema que recebem e retornam o ID do grupo numérico. Use o comando getent ou similar para converter de numérico para simbólico, quando necessário.

Se você se preocupa com o usuário daemon , use a string simbólica daemon ao fazer operações do usuário ou obtenha o uid para o usuário denominado daemon (novamente, de getent , por exemplo) antes de passar o uid para um comando ou função.

Muitos comandos, como ls e find , contêm opções para trabalhar com nomes de grupos simbólicos e identificadores de grupos numéricos. Outros comandos, como getent , podem ser usados para converter de / para

    
por 23.11.2015 / 21:13

Tags