Existe alguma armadilha na concessão de privilégios de usuário root, tornando-os UID = 0 GID = 0?

2

Eu e um amigo estamos administrando várias máquinas virtuais, cada uma dedicada a alguma tarefa no sistema geral. Quando precisamos administrá-los, normalmente fazemos login como root, já que a única vez que fazemos login nas máquinas é quando precisamos executar tarefas administrativas nelas. Nós geralmente não usamos sudo, já que todo comando que fazemos normalmente é um comando sudo.

Preferiríamos manter nossas contas separadas nessas máquinas, para nos separar .bash_history, ver quando o outro estava conectado pela última vez, etc. Para fazer isso, precisaremos de duas contas com permissões de root completas.

Um método é alterar nossas contas de usuário normais para que o UID = 0 GID = 0, ou seja, o mesmo que root. A pergunta é: Existem algumas dicas (ou seja, efeitos inesperados ou não óbvios) que possuem várias contas de usuário com o mesmo UID e GID (em particular, o mesmo que root)?

P.S. Eu perguntei isso no Superusuário, mas isso só me rendeu um distintivo de Tumbleweed, então estou tentando aqui.

    
por 00prometheus 14.08.2017 / 20:00

2 respostas

6

Obviamente, você é capaz de realizar (a maioria) suas tarefas como "root", já que o que conta é ter o id e o gid corretos; no entanto, ter ambas as novas contas como root não funcionará como você deseja distinguir entre você e suas ações / logins de amigos.

Geralmente, o sistema ou outro software fica confuso e mostra um usuário com o nome do outro, um usuário totalmente diferente ou até mesmo o nome da raiz. (por exemplo, o sistema ficará um pouco confuso para seus propósitos, tendo três usuários com o mesmo id / gid); você pode até estar logando, e se perguntando porque o sistema está dizendo que você tem outro nome de login.

Eu aconselho que vocês usem contas regulares, que pertençam ao grupo sudo, e tenham alguma disciplina usando o sudo, evitando abusar de sudo su para entrar como root regular; a vantagem de usar todos os comandos root como um comando sudo como você mencionou, ignorando o pequeno inconveniente é que você tem todos logados de acordo com o usuário certo fazendo isso.

Do ponto de vista da segurança, muitas vezes o usuário root tem vários tipos de limitações que o sistema não pode impor a outros usuários com o mesmo id. Um bom exemplo pode ser o sshd, por padrão, não permitir logins de raiz remota. Haverá outros.

Até o ponto. Muitas coisas no Unix foram construídas historicamente, assumindo que o root tem id / gid 0. Tentando contornar isso de formas não convencionais, está pedindo algumas surpresas ao longo do caminho.

veja Como adicionar auto à lista de sudoers? e Como executar um específico programa como root sem um prompt de senha?

    
por 14.08.2017 / 20:07
3

Você não é apenas ", fornecendo as suas contas de usuário normais UID = 0, GID = 0" . Você está criando (ou convertendo-os em) duas contas de raiz extras. UID = 0 (e também GID = 0) é o que define uma conta root.

Qualquer sistema pode ter várias contas de raiz e é ALL a conta de uma raiz. Um sistema nem precisa ter uma conta chamada root . A conta root pode ter qualquer nome ou nomes.

Eles serão indistinguíveis de alguma forma do root (exceto possivelmente getent passwd campos como nome de login, diretório inicial e shell - mas mesmo isso não é 100% garantido, dependendo de como / quando login / ssh / whatever buscar esses campos ) porque eles são raiz.

Existem muitas "dicas" para fazer isso, praticamente todas advindas do fato de que tudo que é executado por essas contas será executado como raiz.

Esta é uma ideia BAD . Não faça isso. Use sudo em vez disso.

BTW, os sistemas freebsd geralmente têm uma segunda conta root chamada toor . Geralmente tem /bin/sh (ou bash ou ksh ou zsh ou qualquer outro) como o shell em vez do shell cthulhu ( csh ou tcsh ). Isso não é feito para compartilhar o root com outra pessoa, é feito para facilitar a utilização de seu shell preferido como root sem alterar o shell da conta realmente chamada root (que tem a pequena mas real possibilidade de quebrar coisas que assumem que o shell do root será csh ). tcsh / csh são de fato horríveis monstruosidades destruidoras de sanidade e não devem ser usadas, mas é trivialmente fácil digitar exec bash assim que você su to root.

Por fim, se você deseja separar os arquivos do histórico, por exemplo, sudo -i , edite ~root/.bashrc e adicione algo como:

HISTFILE="~/.bash_history.${SUDO_USER:-root}"

Isso definirá um HISTFILE diferente dependendo se o usuário fez login (por exemplo, no console ou via ssh ) ou alguém sudo -ed para root.

Se você quiser que o HISTFILE seja imutável dentro daquele shell (e de qualquer sub-shells que ele possa gerar), adicione o seguinte imediatamente em seguida:

readonly HISTFILE
    
por 15.08.2017 / 15:48