O que aconteceria se eu criasse uma conta chamada 'root'?

30

Se eu criasse uma conta de usuário no Ubuntu chamada root, ela teria permissões de root automaticamente? Quebrar o sistema? Causar uma falha na matriz? O que aconteceria?

O rei esquecido
fonte
25
Já existe uma conta chamada root.
Mikewhatever 08/10/19

Respostas:

46

Os nomes de usuário devem ser exclusivos, portanto, como mencionado na resposta de Owen Hines , você não poderá criar esse usuário. No entanto, o ponto principal aqui é que os poderes de superusuário (todas as permissões possíveis) não são concedidos pelo nome de usuário root, mas pelo UID.

O usuário com UID 0 é o superusuário.

Portanto, se o usuário com UID 0 tiver um nome diferente e você criar um usuário chamado root, ele não terá nenhum status especial.

Remeto-o para o wiki da tag !

Zanna
fonte
Você poderia renomear a raiz da conta existente e criar uma raiz de usuário comum?
em16
Como uma observação lateral, parece possível (embora eu não tenha tentado) alterar o nome de usuário do uid 0 para outra coisa, para que o superusuário não seja chamado root. Não é uma ótima idéia, mas é possível. Assim, pode-se, por exemplo, criar uma conta de superusuário chamada godcom uid 0e um usuário normal chamado rootcom uma uid de 1000ou algum outro número.
Ian D. Scott
15

Não deixaria você, porque já haveria um rootusuário.

Mas, como Florian Diesch disse nos comentários:

Algumas ferramentas reclamam, mas você sempre pode editar /etc/passwde etc/shadowmanualmente para criar um segundo usuário chamado root.

TheOdd
fonte
2
E se você fizer isso, o que acontece chown root file?
fkraiem
1
@fkraiem, hmm .. boa pergunta, não sei a resposta para isso.
TheOdd
3
O que costumava acontecer é o primeiro no arquivo vence. Eu não sei agora
Joshua
5

Primeiro, como, como já indicado, você altera o usuário com o UID 0 para outra coisa. Em seguida, você pode criar um usuário normal com o nome de raiz e um UID maior que 1000. Ele funcionará "bem". Todas as permissões e funções principais do sistema usam UID e não o nome do usuário. De fato, este é um bom primeiro passo para fortalecer um sistema Linux. (muito melhor desativar o root, mas antes do sudo costumávamos fazer isso).

Agora, o que vai acontecer.

Na maioria das vezes nada. Todas as chamadas do sistema relacionadas à autorização ou autenticação usam UID (que eu conheço). E tem sido assim há algum tempo. Seu sistema continuará funcionando normalmente. As ferramentas do sistema refletirão o novo nome de usuário, mas continuarão funcionando normalmente. Em outras palavras, "enraíza" na convenção e não é imutável.

Dito isto, tenho certeza de que existem algumas ferramentas e programas mal escritos. Programas que verificam a variável de ambiente $ USER podem agir incorretamente. Geralmente, esses são scripts e pequenos projetos, mas você pode passar algum tempo rastreando aquele commit incorreto, 6 anos atrás, no fdisk, que continua causando dor de cabeça.

Isso é algo que eu costumava fazer o tempo todo. Foi um passo fácil e está sob a regra de "nomes de usuário não previsíveis". Existem MUITO melhores maneiras de alcançar os mesmos objetivos hoje.

coteyr
fonte
Quer dizer UID Eu acho que
Zanna
1

Como outros explicaram, é o UID = 0 que dá ao usuário "superpotências", e não o nome do usuário "root". Portanto, se você de alguma forma conseguiu criar outro usuário chamado "root" (após renomear / excluir o original) - o super status do usuário dependeria do UID que você forneceu.

O que também leva a outra idéia interessante: é totalmente possível ter vários usuários com o mesmo UID (o que os torna essencialmente o mesmo usuário do ponto de permissões do sistema de arquivos, mas permite ter diferentes diretórios de shell e home). De fato, alguns sistemas do tipo UNIX possuem outra conta de superusuário chamada toor (root backwards), que permite ter duas contas de superusuário com configurações diferentes.

Sergey
fonte
1

Como criar o segundo 'root':

Sim, em teoria, não deve haver dois usuários com o mesmo nome de usuário ou os mesmos IDs. E os utilitários padrão são infalíveis e não criarão esses usuários para você. Mas você sempre pode editar o arquivo / etc / passwd manualmente.

Por exemplo, eu fiz:

$ sudo adduser root2 # created ordinary user
$ sudo vim /etc/passwd # edit last line, change 'root2' to 'root'. 
$ sudo -u '#1002' id # 1002 is UID of new user, it's in last line of /etc/passwd
uid=1002(root) gid=1002(root2) группы=1002(root2)

Como você vê, nós somos raiz agora! Sim, isso não é raiz real (não uid = 0), mas são as mesmas quatro letras. Impressionante e inútil.

Como criar uma segunda 'raiz' melhor:

Além disso, você pode fazer outras modificações. Deixe o nome de usuário como está (seu nome ou root2), mas altere o uid.

$ tail -n 1 /etc/passwd
root2:x:0:0:,,,:/home/root2:/bin/bash

(veja, os campos UID e GID são zeros) Agora você tem um usuário comum (não raiz), com nome de usuário quase não suspeito (ou faça o nome de usuário 'johndoe' para obter um efeito melhor), mas, na verdade, esse usuário tem superpoderes!

$ fdisk /dev/sda
fdisk: unable to open /dev/sda: Permission denied
$ sudo -u root2 fdisk /dev/sda

Command (m for help):

Como você vê, o usuário comum não pode usar o fdisk em / dev / sda, mas o root2 pode fazer qualquer coisa!

Esse truque simples, às vezes usado após o sistema ser hackeado, para fornecer backdoor. Mesmo que o root real mude suas chaves / senhas, o hacker ainda terá controle total sobre o sistema através de outro usuário com uid = 0.

Como a matriz funciona

Na verdade, nem o nome de usuário 'root' nem o uid = 0 não são mágicos por si só. Isso é apenas uma questão de convenção. E nem sempre é verdade. (veja esta pergunta: A conta root sempre possui UID / GID 0? ) O código do kernel é mágico. Na verdade, o próprio código do espaço do usuário - não pode fazer nada que o root possa fazer. Mesmo que seja executado como root! O poder da raiz está no kernel. por exemplo, se você fizer "cat / etc / shadow" (somente o root normalmente pode fazer isso), o programa / bin / cat chama a função libc open () que ainda é o código do espaço do usuário, e essa função open () executa a chamada do sistema ao kernel. Então o próprio kernel decide o que fazer. Por exemplo, o kernel pode permitir alguma operação se o usuário efetivo tiver id == 0.

Em teoria, se você alterar algum código no kernel e manipular o usuário 'www-data' de maneira diferente - algumas operações podem ser permitidas apenas para o usuário 'www-data' (e nem mesmo para o root).

yaroslaff
fonte
0

A maioria das ferramentas 'amigáveis' verificará isso e não permitirá que você crie uma conta com um nome de usuário que já esteja sendo usado.

Se você ignorar isso e adicionar manualmente uma segunda conta raiz ao seu / etc / passwd e / etc / shadow, qual será usada, acho que dependeria se você a colocasse antes ou depois da original. Como todas as contas de usuário em um sistema unix, ele também terá acesso de superusuário somente se seu UID for zero, independentemente do nome.

delt
fonte