Eu configurei o meu sudoers
para que ele peça a senha do root em vez da senha do usuário toda vez que eu uso sudo
. Principalmente porque acredito que faz sentido que, se você deseja executar um comando de root, saiba a senha do root.
No entanto, isso pode ser considerado um risco de segurança?
E se não for, por que essa não é a configuração padrão na maioria das distros?
Edit: Estou executando uma máquina Linux pessoal, onde sou o único usuário. A justificativa faz mais sentido neste contexto? Eu acho que isso pode não se aplicar a sistemas multiusuário.
Contexto: Minha experiência com sudo
sistemas onde sudo
era simplesmente um "sinônimo" para su
. Pode-se executar qualquer comando root simplesmente digitando sua senha de usuário, o que eu pensei que derrotou o propósito do root para começar. Daí o meu raciocínio para pedir-lhe a senha de root. Tendo dito que eu não sabia do poder de sudoers
, alguns usuários mencionaram que você poderia especificar quais comandos podem ser executados sudo
(deixando de fora alguns comandos restritos apenas ao usuário root). Isso eu acho que é um ótimo meio termo
Alguns considerariam isso um risco de segurança porque prejudica dois dos principais propósitos de usar
sudo
em vez desu
, que são:sudo
torna mais fácil permitir que os usuários executem alguns, mas não todos, comandos como root, eVocê não precisa fornecer a senha do root . Ter a senha de root é potencialmente muito mais perigoso do que apenas ter permissão para executar certos comandos como root.
Uma vez que alguém tenha a senha de root, eles podem fazer login como root ou usá-la com
su
. Também é mais difícil revogar o acesso root de apenas uma pessoa - você precisa alterar a senha do root e informar a todos qual é a nova senha. Comsudo
a configuração padrão do , você só precisa alterar o arquivo sudoers e/ou remover o usuário do grupo sudo.É por isso que não é a configuração padrão para
sudo
.Eu recomendo fortemente que você volte ao comportamento padrão, pois é quase certamente mais bem pensado do que sua crença de que "faz sentido" que você tenha que saber a senha do root. "senso comum" geralmente não é "comum" nem "sensato".
sudo
foi escrito, pelo menos em parte, para evitar os problemas causados quando todos que precisavam de alguma habilidade para executar algumas tarefas de administrador de sistema de nível de raiz tinham que saber a senha de root. Na prática, isso se mostrou extremamente problemático, especialmente em grandes ambientes como universidades ou corporações, onde as pessoas trocavam muito de função.Trabalhei em vários ambientes ao longo dos anos em que as pessoas mudaram para outras funções nas mesmas organizações anos antes (ou até deixaram a organização completamente), mas ainda tinham acesso root em máquinas que nem deveriam ter um login válido sobre. Há também o problema de que as pessoas geralmente ficam chateadas quando você faz a coisa certa e remove o acesso root e/ou desativa contas quando essas coisas não são mais necessárias.
Considere um cenário hipotético (mas muito plausível): um usuário que possui a senha de root por engano altera a senha para root e não a registra.
Agora você tem uma situação em que ninguém tem a senha de root e, portanto, ninguém pode se elevar para root. Isso efetivamente quebra
sudo
a senha de root para todos, exigindo ações corretivas (com tempo de inatividade) para redefinir a senha.O mecanismo sudoers tem muitas vantagens em relação a fornecer a senha de root:
Permitindo executar um conjunto restrito de comandos como administrador
Responsabilidade, pois os comandos executados
sudo
podem ser registrados para saber quem executou o quêTransferência fácil de direitos de administrador, simplesmente adicionando e removendo usuários do grupo de administradores
Dar a todos os usuários a senha de root anula completamente o uso de sudoers, já que os usuários não precisarão usar
sudo
: eles farão login simplesmente como root.Edite após a adição do OP:
Efetivamente, se você é o único usuário no sistema, o acima não se aplica e você pode fazer login como root em vez de executar a
sudo
qualquer momento que precisar operar como administrador. Tenha cuidado, porém, que sua ação terá mais impacto e será mais fácil danificar o sistema. Para citar um antigo mestre UNIX Zen:"Somente através da raiz a verdadeira dor - e, portanto, a iluminação - pode ser alcançada."
Tentei ver o que os documentos do Ubuntu dizem sobre isso.
O Guia do Servidor Ubuntu menciona em Gerenciamento de Usuários que
e
E continue com as instruções de como habilitar a
root
conta, definindo uma senha para ela.O Community Help Wiki em help.ubuntu.com, página RootSudo ( arquivado ), menciona facilidade de uso, novos usuários e não fazer login como root o tempo todo no início:
Ambos os documentos, na melhor das hipóteses, ignoram a opção de
sudo
pedir uma senha distinta, mas a página wiki tem uma lista de vantagens e desvantagens do sistema atual, e pelo menos dá uma indicação do que eles podem ter pensado.As duas primeiras vantagens listadas são que o instalador tem menos perguntas a fazer e que o usuário só precisa lembrar de uma senha. Ambos são argumentos para a facilidade de uso. O terceiro listado é um argumento contra o login como root e para a etapa extra do sudo, ou seja, pode fazer o usuário parar para pensar mais sobre o que está fazendo:
Eles também mencionam o que @bxm disse em sua resposta, que ter uma única senha de root (com ou sem sudo) tornaria mais difícil desautorizar usuários e o fato de que sudo registra o que é executado e teoricamente pode ser configurado para ser mais limitado do que permitindo tudo .
Eu digo "teoricamente", uma vez que, por exemplo, definir regras para parar
sudo
de iniciar um shell está fadado a falhar contra um determinado agressor, pois eles podem, por exemplo, instalar um shell com um nome distinto (contra qualquer lista negra), ou apenas instalar um binário de shell setuid (ignorando o precisa parasudo
começar). Ambos podem ser feitos com apenascp
echmod
.Dado que configurar corretamente listas brancas para
sudo
não é tão simples, e o fato de que parece haver pouca instrução sobre como fazê-lo, estou adivinhando a parte sobre facilidade de uso, chance de esquecer uma senha de root mais raramente usada , e ter cada senha usada por apenas uma pessoa são os principais motivos.(Observe que é tecnicamente possível ter senhas root/sudo distintas para cada usuário, além de suas senhas normais de conta de usuário. Pelo menos uma maneira de fazer isso é criar várias contas UID 0, definir a
targetpw
opção emsudoers
e, em seguida, ter a usuáriossudo
para sua própria conta root em vez deroot
. Por exemplo, o usuário normaljohn
pode ter um usuário root correspondentejohn_root
e, quando necessário, eles executamsudo -u john_root whatever command it was
. É claro que você pode fazer o mesmo com apenassu
em vez desudo
. A desvantagem disso é que, por motivos Eu nunca entendi, algumas pessoas parecem se opor veementemente a ter várias contas nomeadas com o mesmo UID.)Sua pergunta sugere que você é o único usuário nesse sistema ( eu configurei meus sudoers … toda vez que uso sudo), enquanto as respostas dadas estão visualizando principalmente do ponto de vista multiusuário.
A razão para a configuração padrão é a ideia original para
sudo
: Dar acesso restrito de superusuário a determinados usuários.Nas distribuições Linux de hoje, a ideia provavelmente é mais parecida com a sua: Acesso fácil a áreas restritas do seu sistema com um pequeno lembrete »por favor, cuidado«.
Usar a senha de root neste cenário tem uma vantagem principal (se uma senha de root estiver definida):
Se os direitos do sudo estiverem configurados corretamente, saber sua senha prejudica apenas sua conta, não todo o sistema (possivelmente incluindo seu backup. Você precisa de uma segunda chave para entrar na sala da máquina.
não
os usuários que devem ter permissões de root ou permissões elevadas são colocados no
wheel
grupo. Então, apenas esses usuários podem usar o su para fazer o root , ou melhor, usarsudo
. O usosu
requer a digitação da senha de root, que é a prática ruim e o que você deseja evitar. Usar o sudo especificamentesudo -i
é uma maneira muito legal de obter um prompt de root que não requer a digitação da senha de root, o usuário digita sua senha e só funciona se estiver no grupo wheel.lá
/etc/sudoers
estásudo -i
requer que o usuário digite sua senha, e não o rootEssa é a configuração padrão, pelo menos no RHEL/CentOS 7.x; é um meio-termo feliz. Primeiro o usuário tem que estar no grupo wheel para usar
su
ousudo
. Não tenho certeza de como impedir corretamente que uma pessoa do grupo wheel usesu
, mas mesmo usandosudo -i
eles ainda podem alterar a senha do root e causar problemas. Portanto, é/etc/sudoers
com o usovisudo
que você deseja reconfigurar e desfazer o arquivo## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
. Para um sistema linux doméstico, tudo isso é um exagero, mas um ambiente de trabalho com implicações legais e tudo isso é quando se torna significativo.Foi mencionado que eu trabalhei em vários ambientes ao longo dos anos onde as pessoas mudaram para outras funções nas mesmas organizações anos antes (ou até mesmo deixaram a organização completamente), mas ainda tinham acesso root em máquinas que não deveriam e ainda ter um login válido. Isso não é culpa
su
deles terem conhecido a senha do root, isso é um problema dos administradores e gerenciamento existentes que não fazem a limpeza adequada e alteram a senha do root e excluem / expiram o login do funcionário.A armadilha óbvia é que qualquer administrador do grupo wheel pode alterar a senha do root e causar estragos. Para evitar que edite essa linha
/etc/sudoers
em%wheel ALL=(ALL) ALL, !/usr/bin/passwd root
. E também%wheel ALL=(ALL) ALL, !/bin/su root
. Eu diria que isso e o uso simples do grupo wheel é o primeiro passo das melhores práticas. Em seguida, edite/etc/sudoers
para restringir as funções administrativas e use mais grupos de administradores além do wheel para obter uma segurança razoável para quem deve ou não poder fazer o quê.Sim. É sempre uma má ideia distribuir a senha de root.
Eu adicionaria meus próprios $ 0,01 (a inflação cobrou seu preço)... Eu uso sudo, sem pedir uma senha de root. No entanto , eu defino uma senha de root. Em outras palavras, ao usar o sudo, você usa sua própria senha. Se, no entanto, você estivesse em um console e logado como root, não seria sem senha e não permitiria o login. Tem uma senha definida. Muitos novos usuários não configuram a senha real das raízes e usam exclusivamente o sudo. Isso é bom, até que você caia em um prompt de comando durante um problema do sistema de arquivos na inicialização (por exemplo), e precise digitar a senha de root para manutenção.
Apenas um pensamento.