<> 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.