A conta root sempre tem UID / GID 0?

45

Em todos os sistemas Linux que eu gerenciei, a conta root tem um GID e um UID de 0. Isso é garantido, ou é possível que o sistema dê à root um ID diferente?

    
por Tanaki 01.08.2013 / 21:02

3 respostas

74

Na verdade, existem duas partes para sua pergunta.

Does the superuser account always have uid/gid 0/0 on Linux?

Sim. Como é apontado por Rich Homolka em um comentário , há código no kernel que verifica explicitamente o uid 0 quando é necessário para verificar o usuário root, o que significa que o root sempre tem pelo menos uid 0.

Is the name of the user account with uid 0 always root?

Não. root é apenas um nome, listado em / etc / passwd ou em alguma outra loja de autenticação. Você poderia também chamar a conta admin , e o próprio SO não se importaria, mas alguns aplicativos podem não gostar muito porque esperam que exista uma conta privilegiada chamada root . Chamar a conta uid 0 em um * nix root é uma convenção muito válida, mas não é exigida pelo sistema (embora possa ser exigida por determinado software de usuário, possivelmente incluindo utilitários de administração do sistema).

Também é importante notar que, como apontado por Simon Richter , em BSDs existe um segunda conta uid 0, por convenção chamada toor (que é "root" soletrada para trás, e também lexicamente vem depois root em uma lista ordenada alfabeticamente). Por exemplo, o FreeBSD o usa para fornecer um usuário root com uma configuração de shell personalizada, deixando a raiz usuário com um shell padrão que tem a garantia de existir na partição raiz do sistema (útil para fins de recuperação).

    
por 01.08.2013 / 21:16
15

1) o administrador é sempre uid == 0. Isto é codificado no kernel. Seria necessário algum código no kernel para mudar isso. Não há muito sentido nisso, então não é feito. Por exemplo, seria inconsistente para outros unixes compartilhando o mesmo NFS, por exemplo.

2) uid 0 não mapeia necessariamente para root. O melhor exemplo é o FreeBSD. Tem duas contas uid == 0, a diferença é a shell. root tem shell / bin / sh, que é um shell simples, útil para quando seus discos estão ruins e você precisa do fsck / usr. toor usa tcsh, que é muito mais útil em situações não emergenciais, já que tem coisas como histórico, etc.

Outro exemplo mais pessoal; Um trabalho que eu tive onde eles tinham um equivamento de raiz (ou seja, uid = 0) conta sobre NIS. A senha, em branco! Porque o novo sysadmin não conseguia lembrar a senha de root nas máquinas. Eu gritei sobre isso por razões óbvias (senhas NIS, por definição, não podem esconder o seu vazio). Eu não fiquei feliz com essa conta.

E realmente não é o sistema que dá uid 0 é root, é você. Você pode alterar este meu usando arquivos passwd, ou outros diretórios de nomeação (NIS, ldap) mas não é compilado dentro Embora você deva ter pelo menos uma conta uid 0 em / etc / passwd, já que você pode não ter rede quando realmente precisa .

Portanto, root é sempre uid 0, mas uid 0 não é necessariamente sempre root.

    
por 01.08.2013 / 21:32
1

Bem, para sistemas que usam o servidor nonStop, ROOT_UID não é 0, mas 65535.

usuários e grupos de OSS O ambiente OSS não fornece nomes de usuário e IDs de usuário padrão comuns do UNIX, a menos que eles sejam explicitamente criados por um administrador do site. No entanto, nomes de usuário e IDs de usuário do OSS equivalentes existem. Por exemplo, os privilégios normalmente associados à raiz do nome de usuário do UNIX e o ID do usuário de 0 existe para o ID do usuário do OSS (UID) de 65535 (o super ID), que é o usuário SUPER.SUPER e seus aliases.

Veja link

No coreutils, você pode encontrar o arquivo de cabeçalho root-uid.h:

/* The user ID that always has appropriate privileges in the POSIX sense.

   Copyright 2012-2016 Free Software Foundation, Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.

   Written by Paul Eggert.  */

#ifndef ROOT_UID_H_
#define ROOT_UID_H_

/* The user ID that always has appropriate privileges in the POSIX sense.  */
#ifdef __TANDEM
# define ROOT_UID 65535
#else
# define ROOT_UID 0
#endif

#endif
    
por 30.01.2018 / 15:13