Você é um administrador, mas não root
. O usuário root
pode fazer qualquer coisa. Os administradores podem executar ações como root
, mas normalmente o que os administradores fazem não é feito por% código%. Dessa forma, você tem controle total sobre seu próprio sistema, mas somente quando você escolhe para usá-lo.
O Ubuntu pede sua senha quando você tenta fazer coisas como root
, para ter certeza de que é realmente você.
Contas de usuários: humanos e, caso contrário,
Usuários humanos reais têm contas de usuário para representá-los. Você criou uma dessas contas quando instalou o Ubuntu. Mas nem todas as contas de usuários representam usuários humanos reais .
Os usuários humanos reais recebem recursos (e são negados) por meio de suas contas de usuário. Eles devem usar suas contas de usuário para usar o sistema; portanto, as habilidades e limitações de suas contas de usuário se aplicam a elas.
As contas de usuário também são usadas para codificar conjuntos de habilidades e limitações. Algumas contas de usuário - a maioria, na verdade, a menos que você tenha muitos usuários humanos da máquina - existem para que certos programas ou comandos possam ser executados com sua identidade, uma identidade com as habilidades e limitações certas para o trabalho.
Por exemplo, o usuário root
existe para que, se você executar um servidor da Web, ele possua os dados que o servidor tornar acessíveis. Nenhum usuário humano real precisa ter poderes para fazer alterações desmarcadas nesses dados, e o servidor da Web não precisa ter poderes para executar qualquer ação desnecessária para servir a web. Conseqüentemente, os dados da web e o restante do sistema são mais seguros contra quebras acidentais ou intencionais, do que se o servidor web fosse executado por algum usuário humano que teria todos os poderes do servidor web (e cujos poderes o servidor web possuir).
A conta de usuário não humana mais importante
O superusuário , cujo nome de usuário é www-data
, é uma conta de usuário não humana com uma combinação muito específica de habilidades e limitações: todas as habilidades e sem limitações .
root
's permitido para fazer qualquer coisa. Ainda existem coisas que root
não pode fazer porque o sistema em si não pode executar ou fazer sentido fora delas. Portanto, root
não pode eliminar um processo em sono ininterrupto ou tornam uma pedra muito pesada para se mover , mova-o .
Muitos processos importantes do sistema, como root
, são executados como init
e root
são usados para executar tarefas administrativas.
Posso fazer login como root
?
É possível configurar a conta root
para que seja possível fazer o login com uma senha, mas isso não está habilitado por padrão no Ubuntu. Em vez disso, você pode pensar em root
como root
, www-data
, lp
e outras contas não humanas. (Execute nobody
ou cat /etc/passwd
para ver todos eles.)
Usuários humanos fazem login com suas próprias contas de usuário e, se alguma tarefa for executada com outra conta de usuário, eles fazem com que essa tarefa seja executada com essa identidade , sem realmente ter logado como esse usuário.
É possível configurar os outros usuários não humanos, como getent passwd
, para que um possa efetuar login como eles também. Isso é muito raro, embora, em alguns sistemas operacionais semelhantes ao Unix, é comum fazer login como www-data
em um terminal . Os riscos de executar uma interface gráfica inteira como root
, combinados com quantos programas gráficos não foram projetados para serem executados como root
e podem não funcionar corretamente, significa que você nunca deve tentar obter um root
-owned sessão de desktop .
Por favor note que enquanto logar como root
está desabilitado por padrão no Ubuntu, existem maneiras de obter um root
shell sem autenticar como root
, o que produz um efeito similar: os mais comuns são root
ou sudo -s
, e técnicas similares . (Não se preocupe se você não souber o que são essas coisas.) Isso não está realmente efetuando login: no modo de recuperação, você se torna -i
antes que qualquer login ocorra; com os métodos root
, você está apenas executando um shell como root.
Administradores
No Ubuntu, os administradores são os usuários que podem fazer o que quiserem como sudo
, quando escolherem fazê-lo .
Configurações do sistema & gt; Contas de usuário."Eliah Kagan" é um administrador, então ele pode fazer coisas como root
, mas ele não é root
.
Sou um administrador no meu sistema Ubuntu. Quando executo programas, normalmente eles são executados como root
("Eliah Kagan" é o nome completo que corresponde ao ek
nome_do_usuário.)
Quando executo o AbiWord ou o LibreOffice, ele é executado como ek
. Quando executo o Firefox, o Chromium, o Empathy ou o Pidgin, ele é executado como ek
. Os programas executados para fornecer a interface da área de trabalho são executados como ek
.
No entanto, sou um administrador, por isso, se precisar executar uma tarefa administrativa, posso fazê-lo.
sudo
Na linha de comando, usaria ordinariamente ek
para execute um comando como sudo
:
sudo command...
Isso me solicitará a senha my . (Não a root
da senha; root
não tem uma.)
- Como sou administrador, posso executar ações como
root
. Na configuração padrão, devo inserir minha senha para fazer isso. - Usuários que não são administradores não podem executar ações como
root
, mesmo colocando sua senha. Os comandosroot
falharão se o usuário que os estiver executando não for um administrador.
Como os administradores são perfeitamente comuns exceto para executar ações como sudo
, a execução de um comando que exige root
privileges ainda falhará, exceto quando o comando for executado como root
.
Captura de tela ilustrando a necessidade de usar root
para executar tarefas administrativas. (Baseado em "Sandwich" por Randall Munroe .)
sudo, graficamente
Programas gráficos podem ser executados como sudo
através de frontends gráficos para root
, como sudo
/ gksu
e gksudo
. Por exemplo, para executar o GParted como kdesudo
, eu poderia executar root
. Então eu seria solicitado graficamente pela minha senha.
Como sou solicitado graficamente, não precisa ser um terminal. Esta é uma das maneiras pelas quais as ferramentas administrativas são executadas como gksudo gparted
.
Polkit
Polkit (uma vez conhecido como PolicyKit) é outra maneira de os administradores faça coisas como root
. Um programa acessa um serviço que executa a ação. Às vezes, a ação está executando um programa inteiro; às vezes a ação é mais limitada.
Atualmente, muitos utilitários gráficos de administração do sistema são configurados para usar o polkit por padrão, em vez de usar root
.
Um exemplo de tal utilitário é o Centro de Software. Ele aproveita ao máximo o polkit, exigindo que o usuário insira sua senha somente quando deseja fazer algo que requer sudo
privileges. (Isso também é possível com a autenticação baseada em root
, mas é mais difícil e mais feio de realizar.)
No Centro de Software, posso encontrar e ler sobre um aplicativo; então eu pedi minha senha quando eu quero instalá-lo.
Como o polkit é diferente
Qualquer programa gráfico pode ser executado como sudo
com root
e outros gráficos gksudo
frontends. (O programa pode não funcionar muito bem, dependendo se ele foi ou não usado como sudo
. Mas o comando para iniciar o programa será executado como root
.)
Embora o polkit seja agora mais comum do que root
interfaces gráficas do GUI como o modo como os aplicativos no Ubuntu executam ações como sudo
nos bastidores, o polki só executará um aplicativo gráfico como root
se houver um arquivo de configuração permitindo e indicando quais ações podem ser realizadas .
Polkit, não graficamente
root
é o comando usado para executar um programa com o polkit.
Como pkexec
, sudo
pode executar gráficos não-gráficos comandos. (E isso não requer um arquivo de configuração definindo os recursos do comando - ele simplesmente executa o comando como pkexec
.)
pkexec command...
root
solicita uma senha graficamente, mesmo que seja executado a partir de um Terminal (essa é uma das maneiras como seu comportamento é mais parecido com pkexec
do que com a execução direta de gksudo
).
(Se não houver GUI - por exemplo, se você estiver logado de um console virtual ou somente texto sessão SSH , ou a GUI não está funcionando corretamente - então sudo
degrada graciosamente e solicite sua senha na linha de comando.)
Após a autenticação ser realizada com sucesso, o comando é executado no terminal.
Executando Comandos como Outros Usuários Além de pkexec
root
é especial porque faz tudo o que pode ser feito. Mas é uma conta de usuário como qualquer conta, e as formas de executar comandos como root
com root
(diretamente ou com uma interface gráfica) ou polkit podem ser modificadas ligeiramente para executar um comando como qualquer outro usuário:
sudo -u username command...
gksudo -u username command...
pkexec --user username command...
O que? Você acabou de digitar sudo
primeiro? Como é essa segurança?!
A execução de comandos com sudo
é como invocar infalibilidade papal .
Quando você executa um comando com sudo
[invoca a infalibilidade papal] , Ubuntu [pessoal católico ] se esforça para ter certeza de que você é realmente
Sim, eu sei que a infalibilidade papal (mesmo quando normativa) é declarativa; o paralelo não é perfeito.
Tentar fazer algo como sudo
com root
(ou polkit) é um grande negócio - o Ubuntu não vai deixar passar esse slide como todas as outras vezes que você executa um programa.
Você é solicitado a fornecer sua senha. (Então, o que você fez é lembrado por um curto período de tempo, então você não precisa digitar sua senha constantemente enquanto administra seu sistema.)
Além de lembrá-lo de ser cuidadoso , isso protege contra dois cenários:
- Alguém usa seu computador (ou dispositivo móvel), talvez sob o pretexto de verificar seu e-mail ou algum propósito inócuo semelhante. Aqui, ainda é possível que eles façam algum mal - por exemplo, podem modificar ou excluir seus documentos. No entanto, eles não podem administrar o sistema, pois não podem colocar sua senha.
- Os programas que não devem administrar o sistema não podem fazê-lo, a menos que você digite sua senha. Por exemplo, se o seu navegador da Web estiver comprometido por um bug de segurança e executar um código mal-intencionado, ele ainda não poderá executar tarefas administrativas. Ele não pode criar e excluir usuários, modificar programas instalados como
sudo
(que inclui qualquer coisa instalada pelo gerenciador de pacotes, como o LibreOffice), ou alterar o sistema em um nível profundo.
Eu já ouvi falar de root
. O que é isso? Posso usar isso?
su
autentica como outro usuário e executa um comando (ou inicia um shell interativo). É possível limitar quem tem permissão para usar su
, mas su
autentica com a senha da conta alvo , não a senha do usuário em execução.
Por exemplo, su
executa su username -c 'command...'
como nome de usuário , assim como command...
.
Mas quando você executa um comando como sudo -u username command...
com username
, insira sua senha . Quando você executa um comando como sudo
com username
, insira a senha su
.
Como username
realiza autenticação para o usuário de destino , com su
você só pode executar comandos como usuários cujas contas estão ativadas .
A conta su
(como root
e www-data
) está desativada por padrão. Não há senha que funcione para efetuar login como nobody
. Portanto, você não pode usar root
para executar comandos como su
.
Você pode usar root
para executar comandos como outro usuário que pode efetuar login (o que geralmente inclui todas as contas de usuário em seu sistema que representam seres humanos).
Quando logado como convidado, você não pode usar su
.
Combinando su
e su
Alguém que não é administrador pode até usar sudo
para executar su
como administrador. (Tudo bem, porém, já que eles precisam da senha do administrador para executar comandos como o administrador.) Ou seja, um usuário limitado pode usar sudo
para executar su
para executar um comando como sudo
. Isso pode parecer com:
su username -c 'sudo command...'
(Executando programas gráficos desta forma requer cuidados especiais .
Não seria root
uma maneira mais segura de executar comandos como su
?
Provavelmente não.
E se um usuário não tiver permissão para agir como root
?
Torne-os um usuário limitado em vez de um administrador.
E se um programa executado como administrador tentar root
to sudo
?
A menos que você tenha reconfigurado root
para permitir que ele seja bem-sucedido sem uma senha, ele falhará.
Não é possível um programa que não deva ser executado como sudo
piggyback em um comando root
recente, portanto, nenhuma senha é necessária?
Isso dificilmente será bem-sucedido.Atualmente, a maioria dos sistemas operacionais (incluindo o Ubuntu) tem sudo
configurado por padrão para que seus timestamps se apliquem apenas em um contexto específico.
Por exemplo, se eu executar sudo
em uma guia Terminal e autenticar com êxito, sudo ...
em outra guia (ou executado por um programa GUI não relacionado ou executado em um console virtual ou sessão SSH) continuará sendo solicitado para uma senha. Mesmo que seja executado imediatamente depois.
Um programa executado como usuário X não tem acesso à senha do usuário X?
Não.
Se um programa mal-intencionado puder ser executado como administrador, ele não poderá "ouvir" o que está sendo digitado quando o administrador autenticar com sudo
ou polkit?
Potencialmente, sim. Mas então poderia "escutar" uma senha digitada em sudo
.
Se eu disser a minha senha para alguém -
Não diga às pessoas sua senha.
E se alguém precisar saber minha senha para fazer algo em meu nome, mas eu não quiser permitir que ela administre o sistema?
O ideal é que eles tenham uma conta de usuário separada que permita que eles façam o que precisam fazer. Por exemplo, pode compartilhar arquivos entre contas, permitindo que vários usuários gravem neles, enquanto ainda nega o acesso a outros usuários.
No entanto, em uma situação em que uma pessoa menos confiável pode compartilhar sua conta, ela deve ser uma conta de usuário limitada. Você poderia criar uma conta separada para essa finalidade (o que faz sentido - se for uma conta para você e outra pessoa que você deseja ter recursos diferentes, deve ser uma conta diferente).
Então, o mais seguro seria não permitir que su
e sudo
fizessem as pessoas logar como su
, manualmente?
Não, porque há sérias desvantagens associadas a permitir que as pessoas efetuem login como root
. Sempre que possível, o menor número de ações possíveis deve ser realizado como root
. Mesmo a maioria dos atos relacionados diretamente à administração de um sistema (por exemplo, verificando o que os usuários estão configurando e lendo registros) geralmente não exigem root
privilégios.
Além disso, assim como potencialmente um programa mal-intencionado pode observar o que alguém digita quando executa root
ou sudo
ou criar um falso prompt de senha su
/ sudo
, potencialmente um programa malicioso também pode criar uma tela de login falsa.
O que torna um usuário um administrador?
No Ubuntu 12.04 e posterior, os administradores são membros do grupo chamadosu
.
No Ubuntu 11.10 e anteriores, os administradores são membros do grupo chamado sudo
.
Quando um sistema Ubuntu antes de 12.04 é atualizado para 12.04 ou posterior, o grupo admin
é mantido para compatibilidade com versões anteriores (e continua a conferir poder administrativo aos usuários), mas o grupo admin
também é usado.
Contas de usuário limitadas
Posso usar uma conta de usuário limitada em vez de uma conta de administrador?
Se você gosta, claro. Crie uma conta de usuário limitada em Configurações do sistema & gt; Contas de usuário e faça login como esse usuário.
Posso fazer da minha conta de administrador uma conta de usuário limitada?
Sim, basta removê-lo dos grupos sudo
e sudo
(veja acima).
Mas você deve ter certeza de que há pelo menos uma outra conta de administrador, então você pode administrar o seu sistema. Se não houver, então você teria que inicializar no modo de recuperação ou em um live CD e fazer algum usuário um administrador novamente . (Este é semelhante a < um href="https://sobrelinux.info/questions/1506/how-do-i-reset-a-lost-administrative-password"> redefinindo uma senha de administrador perdida .
Ferramentas gráficas para administrar usuários e grupos geralmente evitam que você crie um sistema sem administradores, ou pelo menos o avise. Ferramentas de linha de comando normalmente não (confiando que você sabe o que está fazendo).