<<Include(Tag/Deletion)>>

Página em inglês - [RootSudo]

== Início ==

##[[TableOfContents(2)]]


Ubuntu usa o comando sudo para permitir que um utilizador normal tenha privilégios de administrador de sistema. Sendo assim a conta tradicional do UNIX 'root' está desabilitada (Não é possível fazer login como root). Todos os menus gráficos de configuração usam o sudo por defeito. Por exemplo quando o Synaptic ou algum outro programa similar lhe pede uma password, está a pedir-lhe a password da conta do utilizador que está a utilizar e que tenha acesso ao sudo.

O primeiro utilizador criado faz automaticamente parte do grupo admin ou adm, podendo usar o sudo. Qualquer outro utilizador criado daí em diante já não faz parte do grupo, não tendo acesso ao sudo. É recomendado que todos os utilizadores do Ubuntu usem o sudo, já que este apresenta claros benefícios em relação a segurança. 

== Nota ==
 * A password é guardada por defeito durante 15 minutos. Após esse tempo, e necessário voltar a digitar a sua password outra vez.
 * Para correr menus gráficos de configuração com o sudo, simplesmente lance a aplicação normalmente através do menu.
 * Para correr uma aplicação usando sudo, que normalmente seja executada como um utilizador sem privilégios, como por exemplo gedit, vá a 'Aplicações' --> 'Executar Aplicação' e digite 'gksudo gedit'. Para utilizadores do Kubuntu, use 'kdesu' em vez de 'gksudo'.
 * Para usar o sudo na linha de comandos, digite sudo antes do comando, como o exemplo em baixo. 
{{{
sudo chown bob *
}}}

Para iniciar uma consola de linha de comandos como root (i.e. uma consola onde pode executar comandos como root) use: {{{
sudo -s
}}}
''AVISO: '''sudo -s''' Não muda as variáveis de ambiente ($HOME, $PATH etc). Pode trazer más consequências. Pode usar em contrapartida '''sudo -i''' para iniciar um ambiente root completo. ''

== Adicionando Utilizadores ==
=== Warty ===
No Warty, adicionar um utilizador novo envolve editar o ficheiro /etc/sudoers. Para editar este ficheiro, deve utilizar o comando 'visudo' já que este irá verificar se o ficheiro tem erros antes de sair do mesmo. Para adicinar um utilizador com os mesmos direitos de Administração que o primeiro utilizador, adicione o seguinte texto ao ficheiro '$newuser	ALL=(ALL) ALL'. Troque $newuser pelo nome do utilizador.
=== Hoary ===
Para adicionar um utilizador ao sudo, adicione o utilizador ao grupo admin ou adm. 
== Benefícios do sudo ==

Os benefícios de ter a conta "root" desabilitada inclui o seguinte:

 * Inicialmente a equipa do Ubuntu queria que a instalação fosse o mais simples possível. Ao não activar a conta root, uns quantos passos onde era necessário a intervenção do utilizador durante a instalação foi evitada. (Colin Watson)

 * Ainda mais importante, se a conta "root" tivesse sido activada durante a instalação seria necessário o utilizador lembrar-se ilimitadamente da password que tinha escolhido para a conta root apesar de rarametne a utilizar. As passwords da conta "root" são facilmente esquecidas pelos utilizadores que são novos ao sistema de segurança UNIX. (Matt Zimmerman)

 * Evita o modo "Eu posso fazer ''tudo''" usando sempre a conta root por defeito. Em compensação ao usar o sudo ser-lhe-á sempre pedido a password antes de fazer alterações significantes ao sistema, fazendo com que pense um pouco nas consequências daquilo que está prestes a fazer. Em contrapartida se estiver sempre ligado como "root", você pode simplesmente apagar alguns dos directórios "inúteis" e não se aperceber que está no directório errado a não ser quando fôr muito tarde. Tem sido uma boa prática UNIX durante largos anos usar o comando "su-command-^D" regularmente em vez de estar sempre numa conta "root" -- a não ser que esteja a fazer alguma manutenção mais séria (nesse ponto pode sempre usar o comando "sudo su"). (Jim Cheetham and Andrew Sobala)

 * "sudo" adiciona entradas nos ficheiros log dos comandos executados (em /var/log/auth.log). Se fizer asneira, pode sempre voltar atrás e ver quais os comandos que foram executados. (Andrew Zbikowski)

 * Qualquer cracker ao tentar um ataque brute-force contra a sua máquina saberá que esta tem sempre uma conta root e irá tentar aceder a ela primeiro. O que ele não sabe é os nomes de utilizadores dos outros utilizadores.

 * Permite transferências de direitos de administração, em pouco tempo ou por períodos longos ao adicionar ou remover utilizadores a grupos, isto tudo sem comprometer a conta "root". (Stuart Bishop)

== Segurança ==

 * Ao encorajar a execução de apenas um comando por linha com previlégios de root, ao invés de abrir um terminal como root, `sudo`:
 * Reduz o tempo passado com a conta root, e assim o risco de inadvertidamete executar comandos como root
 * Providência uma maior auditoria aos comandos executados
 * Ter uma password root separada (o modo tradicional) provide uma camada extra de segurança caso uma password de um utilizador com previlégios de administração seja comprometida.
 * Em qualquer dos casos, se o utilizador com previlégios administrativos (que use `sudo` ou `su` para se tornar root) esteja comprometido, o atacante pode geralmente ganhar acesso ao root através de um ataque indirecto

== Usos possíveis do modelo "sudo" ==

Apesar de para sistemas Desktop os beneficios de usar sudo serem grandes, existem possiveis falhas que devem ser apontadas.

 * Some packages from universe are effectively broken (e.g. webmin) or become dangerous to use. 
 * Redirecting the output of commands run with sudo can catch new users out (consider "sudo ls > /root/somefile"). Workarounds for this include using "sudo sh -c 'ls > /root/somefile'" (but escaping for this gets very ugly very quickly), using [[http://www.greenend.org.uk/rjk/2001/06/adverbio.html|Adverbio]], or simply using sudo -s to get a root shell and going from there
  * ''MattZimmerman: A simple approach which works for most cases is to use dd(1): '' `ls | sudo dd of=/root/somefile`
 * In a lot of office environments the ONLY local user on a system is root. All other users are imported using NSS techniques such as nss-ldap. To setup a workstation, or fix it, in the case of a network failure where nss-ldap is broken, root is required. This tends to leave the system unusable unless cracked.
  * JerryHaltom: Perhaps in these cases it neccassitates the creation of a local account: "admin" with sudo to root privledges.
  * LucasVignoliReis: I think this is a good idea, a sudoer system administration account, and normal user accounts for the other users.

== Misconceptions ==

 * ''Não é o sudo menos seguro que su?''

  O modelo de segurança básica é o mesmo, sendo assim esses dois sistemas partilham a sua principal fraqueza.  Qualquer utilizador que use `su` '''ou''' `sudo` deve ser considerado um utilizador previlegiádo.  Caso a conta desse utilizador fique comprometida por um ataque, o atacante pode vir a ganhar os previlégios de root, da próxima vez que o utilizador executar esses comandos.  A conta do utilizador é neste caso o elo mais fraco, e deve ser protegido com o mesmo cuidado que a conta root.

  Num nivel mais esotérico, `sudo` dá-lhe acesso a algumas funcionalidades que encorajam diferentes hábitos de trabalho, que podem causar impactos positivos na segurança do sistema.  `sudo` é normalmente executado para utilização é linha de comando simples (um só comando é executado de cada vez), enquanto `su` é generalmente usado para abrir uma linha de comandos e executar multiplos comandos.  A utilização do `sudo` reduz a hipótese de uma conta root ficar aberta inadvertidamente, e encoraja o utilizador a utilizar menos os previlégios da conta root.


== Activando a conta root ==
 Nota: Esta acção não é aconselhável!

Para activar a conta root (i.e. definir uma password) escreva: {{{
sudo passwd root
}}}

== Desactivar a conta root ==
 Nota: Está opção só é valida se já tiver a conta root activada, e a desejar desactivar novamente.

Para desactivar a conta root escreva: {{{
sudo passwd -l root
}}}

Isto irá bloquear a conta root.