Como o administrador / root / superuser funciona no Linux?

5

Nós fomos ensinados Windows quando eu estava na escola. Eu então optei por um curso de Bacharelado em Engenharia da Computação onde nós fomos feitos para usar o Linux ao invés do Windows. Eles nunca ensinaram sobre o básico do Linux e começaram diretamente a ensinar programação. Não foi tão difícil para mim porque eu estava um pouco familiarizado com o Linux. Mas ainda tenho algumas dúvidas sobre o administrador ou sistema root ou superusuário no Linux. Agora a minha pergunta é composta por várias sub-questões diferentes. Então aqui vai:

  1. Eu sei que # (hash) no prompt do terminal significa que um está operando como um superusuário e $ (dólar) significa que um não é. Mas mesmo que minha conta seja uma conta de administrador, não vejo # no meu terminal. Em vez disso, preciso fazer o login usando o comando su para ter direitos administrativos. Por que isso?

  2. Os termos Administrador, raiz e superusuário são iguais? Estou confuso porque no Windows, há apenas um administrador de termos e se sua conta é uma conta de administrador, então você está basicamente logado com privilégios de administrador o tempo todo, ou seja, não é necessário logar explicitamente como um administrador ao contrário de Linux.

  3. Temos o Ubuntu instalado em nossos computadores da faculdade, onde se você tiver que fazer login como admin, digite su e, em seguida, solicite a senha onde você deve inserir a senha da sua conta atual para se tornar o superusuário . Mas eu não gostei do design do Ubuntu, então mudei para o Fedora e instalei no meu laptop, onde a instalação me pediu duas senhas, uma para minha conta normal (que tem direitos de administrador) e outra para o usuário 'root'. Então isso significa que sempre que eu tenho que fazer o login como administrador usando minha conta normal, então eu tenho que fazer o login da minha senha 'root' em vez da minha senha normal? E se esse for o caso, por que o software pediu minha senha normal se ela não me der direitos de administrador diretamente?

EDITAR:

Alguém pode me explicar o sistema de administração no Linux? O que é raiz? Por que eu não tenho direitos de administrador, apesar de ser um administrador?

    
por radiantshaw 10.01.2016 / 06:38

3 respostas

5

Toda conta em um sistema Unix / Linux possui um identificador numérico, o "ID do usuário" ou o UID. Por convenção, o UID 0 (zero) é chamado de "root" e recebe privilégios especiais (geralmente, a permissão para acessar qualquer coisa no sistema).

Você poderia apenas efetuar login como usuário root diretamente, se você tiver a senha root. No entanto, geralmente é considerado uma prática ruim fazê-lo.

Por um lado, é frequente o Unix / Linux dar-lhe bastante espaço para atirar no próprio pé sem segurança - existem muitos erros de digitação e acidentes, dos quais a recuperação é mais fácil. faça uma reinstalação completa e / ou restaure a partir do backup. Então, ter que realmente mudar para root quando você precisa evitar que você acidentalmente faça algo que você não queria fazer.

Também ajuda a limitar a propagação de malware. Se o seu navegador está rodando sob o UID 0 - "como root", dizemos - então um bug de programação pode ser explorado por sites remotos para ter controle total sobre o seu computador. Manter uma conta de usuário "normal" limita esse dano.

Ambos seguem uma boa prática geral chamada "o princípio do menor privilégio" - o que, honestamente, é uma coisa boa a se seguir no design do sistema em geral. Você pode ler mais em específico sobre razões para nem sempre ser executado como root em Concern sobre o login como root superestimado?

Agora, isso deixa a questão de como você pode ter acesso a itens protegidos como um usuário não-root. Existem duas maneiras básicas - su e sudo . O primeiro requer a senha de root, e o segundo, na configuração usual, requer a sua senha. Geralmente, é o caso de você usar sudo para executar um único comando "como root", em vez de alternar para a conta raiz durante uma sessão inteira. (Você também pode fazer isso com su -c , algo que você verá frequentemente na documentação.) Para uma longa discussão dos méritos relativos destes, veja Qual é a maneira mais segura de obter privilégios de root: sudo, su ou login? . (E, para completar, existem outros mecanismos que não são sudo mas funcionam da mesma maneira, como o PackageKit, normalmente usado para aplicações GUI.)

Você pergunta se os termos "root", "superuser" e "administrator" são os mesmos. "Root" e "superusuário" basicamente são. Para ser preciso, pode-se dizer: "A conta root é o superusuário , porque tem UID 0."

"Administrador" poderia significar a mesma coisa, mas no Fedora, nós * o usamos de uma maneira um pouco diferente. Nem todo usuário no sistema tem o poder de obter privilégios de root via sudo. No Fedora na configuração padrão, os membros do grupo wheel podem fazer isso. E, no instalador e na documentação e em outros lugares, chamamos isto de uma "conta de administrador". Um que não é root, mas tem o poder de acessar privilégios de root.

(Ah, e uma última coisa: que # vs $ no seu prompt é apenas uma convenção visual e não é definitivo. Você pode alterar a variável de ambiente PS1 para fazer o prompt fazer todos os tipos de coisas.)

* Eu trabalho no Fedora.

    
por 10.01.2016 / 21:08
3
  1. Preocupação com a segurança, consulte link

  2. Sim

  3. su permite executar comandos com um usuário substituto, quando chamado sem argumentos, o padrão é executar um shell interativo como root. Veja link Você precisa ter a senha de root para isso.

    Você pode ignorar isso executando sudo su (se tiver permissão para executar isto). Sudo permite que um usuário permitido execute um comando como superusuário ou outro usuário, conforme especificado pela política de segurança. (especificado no arquivo / etc / sudoers). Leia mais aqui: link

    Então, para suas perguntas finais. Quanto ao primeiro, sim. Mas a maioria das pessoas prefere usar sudo para a conveniência. E quanto ao final: não sei ao certo o que você quer dizer, mas é preferível ter senhas diferentes para contas diferentes.

por 10.01.2016 / 06:59
2

O Windows e o Linux não gerenciam os privilégios de administração da mesma maneira.

No Windows, as tarefas de administração do sistema só podem ser executadas por processos em execução em um nível de privilégio alto. Processos normais são executados em um nível de privilégio normal. Um usuário pode executar um processo com alto nível de privilégio se sua conta estiver marcada como administrador; normalmente, eles precisam redigitar sua senha para fazer isso (o “ prompt do UAC ”). Assim, um administrador é um usuário cuja conta tem direito a privilégios elevados.

No Linux (e em outros sistemas Unix), as tarefas de administração do sistema só podem ser executadas pelo usuário raiz . Essa é uma conta de usuário destinada a tarefas do sistema, não para um ser humano efetuar login. O usuário raiz é definido por seu ID do usuário, que é 0 (normalmente, a conta é chamada root , mas é o ID do usuário que faz isso especial, não o nome). Um administrador é um usuário que tem o direito de acessar a conta root.

Existem duas maneiras principais no Linux para acessar a conta root. O administrador do sistema pode habilitar um ou ambos ou (mais raramente, outros métodos, envolvendo as mesmas ferramentas configuradas de forma diferente ou outras ferramentas).

  • O comando su permite que qualquer usuário acesse a conta root se souber a senha do conta root. Em algumas configurações, somente determinados usuários que são membros de um grupo tradicionalmente chamado de wheel têm permissão para usar su para executar comandos como root.
  • O comando sudo permite que um usuário execute comandos como root se eles forem declarados no arquivo de configuração do sudo ( sudoers ), diretamente ou por meio de uma associação ao grupo. Geralmente sudo exige que o usuário insira sua própria senha; isso é principalmente para evitar que o sudo seja usado por um transeunte se o usuário deixar seu terminal sem supervisão.

Portanto, se você tiver uma conta de administrador no Linux, isso significa que você pode executar sudo ou su para executar comandos como raiz. Quando você não está executando comandos como root, você tem privilégios normais.

    
por 11.01.2016 / 02:51

Tags