Você é um administrador, mas não root
. O root
usuário pode fazer qualquer coisa. Os administradores podem executar ações comoroot
, mas normalmente o que os administradores fazem não é feito root
. Dessa forma, você tem controle total sobre seu próprio sistema, mas somente quando você escolhe usá-lo.
O Ubuntu pede sua senha quando você tenta fazer coisas como root
, para se certificar de que é realmente você.
Contas de usuário: humanas 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ário representam usuários humanos reais .
Usuários humanos reais recebem habilidades (e negadas) 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 eles.
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 determinados programas ou comandos possam ser executados com sua identidade, uma identidade com as habilidades e limitações corretas para o trabalho.
Por exemplo, o www-data
usuário existe para que, se você executar um servidor da Web, ele possua os dados que o servidor tornar acessível. Nenhum usuário humano real precisa ter poderes para fazer alterações não verificadas nesses dados, e o servidor da web não precisa ter a capacidade de executar nenhuma ação desnecessária para servir a web. Consequentemente, os dados da web e o resto do sistema são mais seguros contra falhas acidentais ou intencionais, do que se o servidor da web fosse executado por algum usuário humano que tivesse todos os poderes do servidor da web (e cujos poderes o servidor da web teria) possuir).
A conta de usuário não humano mais importante
O superusuário , cujo nome de usuário é root
, é uma conta de usuário não humano com uma combinação muito específica de habilidades e limitações: todas as habilidades e sem limitações .
root
tem permissão para fazer qualquer coisa. Ainda há coisas root
que não podem ser feitas porque o próprio sistema não pode executar ou fazer sentido delas. Portanto, root
não é possível matar um processo que esteja em sono ininterrupto , ou fazer uma pedra pesada demais para se mover, depois mova-a .
Muitos processos importantes do sistema, como init
, são executados como root
e root
são usados para executar tarefas administrativas.
Posso fazer login como root
?
É possível configurar a root
conta para que seja possível fazer login com uma senha, mas isso não é ativado por padrão no Ubuntu. Em vez disso, você pode pensar root
como sendo como www-data
, lp
, nobody
e outras contas não-humanos. (Corra cat /etc/passwd
ou getent passwd
veja todos.)
Usuários humanos efetuam login com suas próprias contas de usuário e, se alguma tarefa deve ser executada com outra conta de usuário, eles fazem com que essa tarefa seja executada com essa identidade , sem realmente ter efetuado login como esse usuário.
É possível configurar outros usuários não humanos, como www-data
, para que você possa fazer login como eles também. Isso é bastante raro, embora em alguns outros sistemas operacionais semelhantes ao Unix seja comum fazer login como root
em um terminal . Os riscos de executar uma interface gráfica inteira root
, combinados com quantos programas gráficos não foram projetados para serem executados root
e podem não funcionar corretamente, significa que você nunca deve tentar obter uma sessão de árearoot
de trabalho própria .
Observe que, enquanto o login root
é desabilitado por padrão no Ubuntu, existem maneiras de obter um root
shell sem se autenticar como root
, o que produz um efeito semelhante: os mais comuns são sudo -s
or-i
, modo de recuperação e técnicas semelhantes . (Não se preocupe se você não sabe o que são essas coisas.) Na verdade, isso não é o login: no modo de recuperação, você se torna root
antes de qualquer logon; com os sudo
métodos baseados em, 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 root
, quando eles optam por fazê-lo .
Configurações do sistema> Contas de usuário. "Eliah Kagan" é um administrador, então ele pode fazer coisas como root
, mas não éroot
.
Eu sou um administrador no meu sistema Ubuntu. Quando executo programas, normalmente eles são executados como ek
("Eliah Kagan" é o nome completo que corresponde ao ek
nome de usuário.)
Quando executo o AbiWord ou o LibreOffice, ele é executado como ek
. Quando executo o Firefox, Chromium, Empathy ou 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, portanto, se precisar executar uma tarefa administrativa, posso fazê-lo.
sudo
Na linha de comando, eu usaria normalmente sudo
para executar um comando como root
:
sudo command...
Isso solicitará minha senha. (Não root
é a senha; root
não possui uma.)
- Por ser administrador, posso executar ações como
root
. Na configuração padrão, devo inserir minha senha para fazer isso.
- Os usuários que não são administradores não podem executar ações como
root
, mesmo colocando sua senha. sudo
Os comandos falharão se o usuário que os executa não for um administrador.
Como os administradores são usuários perfeitamente comuns, exceto pela capacidade de executar ações como root
, a execução de um comando que requer root
privilégios ainda falhará, exceto quando o comando for executado comoroot
.
Captura de tela ilustrando a necessidade de usar sudo
para executar tarefas administrativas. (Baseado no "Sandwich" de Randall Munroe .)
sudo, Graficamente
Os programas gráficos podem ser executados root
através de interfaces gráficas parasudo
, como gksu
/gksudo
e kdesudo
. Por exemplo, para executar o GParted como root
eu poderia executar gksudo gparted
. Em seguida, seria solicitada graficamente minha senha.
Desde que eu sou solicitado graficamente, não precisa haver um terminal. Essa é uma das maneiras pelas quais as ferramentas administrativas são executadas root
.
Polkit
O Polkit (antes conhecido como PolicyKit) é outra maneira de os administradores fazerem as 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 usá-lo sudo
.
Um exemplo desse utilitário é o Centro de Software. Ele tira o máximo proveito do polkit, exigindo que o usuário digite sua senha apenas quando quiser fazer algo que exija root
privilégios. (Isso também é possível com sudo
autenticação baseada em mas é mais difícil e mais feio de se realizar).
No Centro de Software, posso encontrar e ler sobre um aplicativo; então me pedem minha senha quando quero instalá-la.
Como o polkit é diferente
Qualquer programa gráfico pode ser executado como root
com gksudo
e outros sudo
frontends gráficos . (O programa pode não funcionar muito bem, dependendo de ter sido projetado ou não para ser usado como root
. Mas o comando para iniciar o programa será executado como root
.)
Embora o polkit seja agora mais comum do que as sudo
interfaces gráficas da GUI, como a maneira como os aplicativos no Ubuntu executam ações root
nos bastidores, o polki executará apenas um aplicativo gráfico como root
se houvesse um arquivo de configuração que permitisse e indicando quais ações podem ser executadas .
Polkit, não graficamente
pkexec
é o comando usado para executar um programa com polkit.
Como sudo
, pkexec
pode executar comandos não gráficos. (E não requer um arquivo de configuração que defina os recursos do comando - ele simplesmente executa o comando como root
.)
pkexec command...
pkexec
solicita uma senha graficamente, mesmo que seja executada a partir de um terminal (essa é uma das maneiras pelas quais seu comportamento é mais parecido com o gksudo
de executar diretamente sudo
).
(Se não houver GUI - por exemplo, se você estiver conectado a partir de um console virtual ou de uma sessão SSH somente de texto ou a GUI não estiver funcionando corretamente -, pkexec
será degradado normalmente e solicitará sua senha na linha de comando .)
Depois que a autenticação é realizada com sucesso, o comando é executado no terminal.
Executando comandos como outros usuários além root
root
é especial porque consegue fazer tudo o que pode ser feito. Mas é uma conta de usuário como qualquer conta, e as maneiras de executar comandos como root
com sudo
(diretamente ou com uma interface gráfica) ou polkit pode ser ligeiramente modificado 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 ?!
Executar comandos com sudo
é como invocar a infalibilidade papal .
Quando você executa um comando comsudo
[invocar infalibilidade papal] , o Ubuntu [pessoal católico] se esforça para se certificar de que você é realmente você [realmente o papa].
Sim, eu sei que a infalibilidade papal (mesmo quando normativa) é declarativa; o paralelo não é perfeito.
Tentar fazer algo como root
com sudo
(ou polkit) é importante - o Ubuntu não vai deixar isso passar como todas as outras vezes que você executa um programa.
Você será solicitado a fornecer sua senha. (Então, o que você fez é lembrado por um curto período de tempo, para que não precise digitar sua senha constantemente enquanto administra o sistema.)
Além de lembrá-lo de ter cuidado , isso protege contra dois cenários:
- Alguém usa seu computador (ou dispositivo móvel), talvez com o pretexto de verificar o e-mail ou algum objetivo inócuo semelhante. Aqui, ainda é possível causar algum dano - por exemplo, eles 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 código malicioso, ele ainda não poderá executar tarefas administrativas. Ele não pode criar e excluir usuários, modificar programas instalados como
root
(o 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 su
. 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 se su
autentica com a senha da conta de destino , não a senha do usuário em execução.
Por exemplo, é executado como nome de usuário , assim como .su username -c 'command...'
command...
sudo -u username command...
Mas quando você executar um comando como username
com sudo
, você entra em sua senha . Quando você executar um comando como username
com su
, você entra username
a senha .
Como su
realiza a autenticação para o usuário de destino , su
você só pode executar comandos como usuários cujas contas estão ativadas .
A root
conta (como www-data
e nobody
) está desativada por padrão. Não há senha que funcione para fazer login como root
. Portanto, você não pode usar su
para executar comandos como root
.
Você pode usar su
para executar comandos como outro usuário que pode efetuar login (o que normalmente inclui todas as contas de usuário em seu sistema que representam seres humanos).
Quando conectado como convidado, você não pode usá su
-lo.
Combinando su
esudo
Alguém que não é administrador pode até usar su
para executar sudo
como administrador. (Isso é bom, porém, pois eles precisam da senha do administrador para executar comandos como administrador.) Ou seja, um usuário limitado pode usar su
para executar sudo
para executar um comando como root
. Isso pode se parecer com:
su username -c 'sudo command...'
(A execução de programas gráficos dessa maneira requer cuidados especiais .)
Não su
seria uma maneira mais segura de executar comandos root
?
Provavelmente não.
E se um usuário não puder agir como root
?
Torne-os um usuário limitado em vez de um administrador.
E se um programa em execução como um tentativas de administrador para sudo
a root
?
A menos que você tenha reconfigurado sudo
para permitir que ele seja bem-sucedido sem uma senha, ela falhará.
Não é possível executar um programa que não deva ser executado root
em um sudo
comando recente , portanto nenhuma senha é necessária?
É muito improvável que isso tenha sucesso. Atualmente, a maioria dos sistemas operacionais (incluindo o Ubuntu) é sudo
configurada por padrão, de modo que seus carimbos de data e hora se aplicam apenas a um contexto específico.
Por exemplo, se eu executar sudo ...
em uma guia Terminal e me autenticar com êxito, sudo
em outra guia (ou executada por um programa GUI não relacionado ou que eu execute em um console virtual ou sessão SSH) ainda solicitará uma senha. Mesmo que seja executado imediatamente depois.
Um programa em execução 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 pode "escutar" o que está sendo digitado quando o administrador se autentica com sudo
ou polkit?
Potencialmente, sim. Mas poderia "escutar" uma senha digitada su
.
Se eu contar a alguém minha senha—
Não diga às pessoas sua senha.
E se alguém tiver que saber minha senha para fazer algo em meu nome, mas eu não quero permitir que eles administrem o sistema?
Idealmente, eles devem ter uma conta de usuário separada que permita que eles façam o que precisam. Por exemplo, pode compartilhar arquivos entre contas, permitindo que vários usuários gravem nelas, enquanto ainda nega o acesso a outros usuários.
No entanto, em uma situação em que uma pessoa menos confiável possa compartilhar sua conta, ela deve ser uma conta de usuário limitada. Você pode criar uma conta separada para esse fim (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, seria a coisa mais segura a de não permitir ambos sudo
e su
e log fazer as pessoas em como root
, manualmente?
Não, porque há sérias desvantagens associadas ao permitir que as pessoas efetuem login como de root
todo. Sempre que possível, o menor número de ações possível deve ser realizado como root
. Mesmo a maioria dos atos relacionados diretamente à administração de um sistema (por exemplo, ver quais usuários estão configurados e ler logs) geralmente não exige root
privilégios.
Além disso, assim como potencialmente um programa malicioso poderia assistir quais os tipos alguém quando executar sudo
ou su
, ou criar um falso sudo
/ su
senha rápida, potencialmente um programa malicioso poderia criar uma tela falsa de login também.
O que torna um usuário um administrador?
Participação em grupo.
No Ubuntu 12.04 e posterior , os administradores são membros do grupo chamado sudo
.
No Ubuntu 11.10 e versões anteriores , os administradores são membros do grupo chamado admin
.
Quando um sistema Ubuntu anterior ao 12.04 é atualizado para o 12.04 ou posterior, o admin
grupo é mantido para compatibilidade com versões anteriores (e continua a conferir poder administrativo aos usuários), mas o sudo
grupo 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ê quiser, com certeza. Crie uma conta de usuário limitada em Configurações do sistema > Contas de usuário e efetue login como esse usuário.
Posso tornar minha conta de administrador uma conta de usuário limitada?
Sim, basta removê-lo dos grupos sudo
e admin
(veja acima).
Mas verifique se há pelo menos uma outra conta de administrador para poder administrar seu sistema. Se não houver, será necessário inicializar no modo de recuperação ou em um CD ao vivo e tornar algum usuário administrador novamente . ( É semelhante à redefinição de uma senha perdida de administrador .)
As ferramentas gráficas para administrar usuários e grupos geralmente impedem a criação de um sistema sem administradores ou, pelo menos, o alertam. As ferramentas de linha de comando normalmente não (confiando que você sabe o que está fazendo).