Se eu entendo a filosofia do Linux corretamente, sudo
deve ser usado com moderação e a maioria das operações deve ser executada como um usuário subprivilegiado. Mas isso não parece fazer sentido, pois estou sempre precisando digitar sudo
, se estou gerenciando pacotes, editando arquivos de configuração, instalando um programa a partir da fonte ou o que você tem. Essas nem são coisas técnicas, apenas qualquer coisa que um usuário comum faça.
Isso me lembra muito o UAC do Windows, que as pessoas desativam ou configuram para não exigir uma senha (apenas um clique). Além disso, muitos usuários do Windows também são contas de administrador.
Além disso, já vi algumas pessoas exibirem comandos que exigem sudo
privilégios sem sudo
. Eles têm o sistema configurado de tal forma que sudo
não é necessário?
sudo
fazer alguma coisa que envolva mudar o sistema; se você estiver apenas operando em seus próprios arquivos / área de trabalho, não estará afetando ninguém; portanto, não precisará de privilégios elevados. Se você está executando comandos privilegiados sem sudo, você provavelmente já está um super usuário (ou seja, a raiz) e é geralmente menos aconselhável do que usando sudo para as tarefas específicas em todo o sistemasudo
quando não deveria? Os comandos normais de um usuário Unix devem consistir principalmente emcd
,ls
mover, copiar, remover e editar arquivos aos quais eles têm acesso. Se seus comandos habituais não consistem nisso, você provavelmente não é um usuário comum do Unix.sudo !!
executar novamente o último comando digitado com o sudo na frente.Respostas:
Você mencionou essas funções de administração do sistema
como coisas que
Em um sistema multiusuário típico, essas não são ações comuns do usuário; um administrador de sistemas se preocuparia com isso. Usuários comuns (não "com privilégios") podem usar o sistema sem se preocupar com a manutenção.
Em um sistema doméstico, sim, você acaba tendo que administrar o sistema e usá-lo.
É realmente tão difícil de usar
sudo
? Lembre-se de que, se for apenas o seu sistema, não há razão para que você não possa entrar noroot
shell (sudo -s
- veja esta postagem para uma visão geral dos vários meios de obter um shell raiz) e / ou configuresudo
para não solicitar uma senha.fonte
sudo
- é como uma verificação de sanidade.Sudo / Root é usado sempre que você está fazendo algo que um usuário padrão não deve ter a capacidade de fazer por risco de danificar / alterar a configuração do sistema de uma maneira que o Administrador do sistema normalmente não permitiria.
Todas essas são funções tecnicamente administrativas e podem danificar drasticamente o sistema se algo incorreto for feito. Em um ambiente corporativo, como Sysadmin, são coisas que eu NÃO deixaria que meu usuário fizesse sem meu conhecimento expresso e, portanto, sudo.
Por exemplo, se um arquivo package / config pudesse ser modificado sem privilégios elevados, seria extremamente simples para uma fonte externa simplesmente executar código remoto que poderia interromper / comprometer o sistema. Ao forçar essas ações a exigir acesso root, obriga você, como usuário, a decidir se essas ações devem ou não ocorrer.
É muito parecido
UAC
com o Windows, na verdade é para onde o Windows teve a ideiaUAC
.A cotação que você recebe na primeira vez em que usa o sudo é muito adequada e muito importante:
Especialmente o número 2, pense antes de digitar. Essa é uma razão importante pela qual o sudo existe, quando você digita um comando e retrocede "deve ser raiz para executar esta ação", obriga você a parar e PENSAR no que está realmente fazendo.
fonte
Você precisa executar esses comandos como superusuário, mas não precisa executá-los usando
sudo
. Você poderia, por exemplo, usarsu
ordoas
(substituto do OpenBSDs parasudo
) ou simplesmente fazer login como root.Portanto, se eles exibirem seus comandos aqui sem
sudo
assumir que o leitor apenas usará sua maneira favorita de executar esses comandos como superusuário.Certamente não significa que eles possam executar esses comandos como um usuário normal.
fonte
sudo -i
ou similar para obter um shell raiz e, em seguida, começar a executar seus comandos raiz sem precisar preceder cada um deles comsudo
# vi /etc/hosts
em vez de um prompt sem privilégios$ vi /etc/hosts
(Bash vai seguir a convenção se você usar\$
emPS1
)Um recurso de segurança oferecido por
sudo
é que você pode ter um sistema semroot
senha , para que oroot
usuário não possa fazer login diretamente. Isso oferece proteção adicional aos usuários que escolhem senhas fracas - o invasor que tenta forçar a senha com força bruta (via SSH ou de outra forma) terá que descobrir um nome de usuário válido primeiro.Outro aspecto é um gerenciamento de privilégios mais refinado. Pense em
make; sudo make install
fazer vsmake; make install
como root. Muitas coisas podem dar errado durantemake
. Uma ferramenta mal configurada pode tentar sobrescrever um arquivo importante do sistema, "limpar" o/lib
diretório em vez do atual, consumir toda a RAM disponível e travar o sistema, etc.make install
é uma ação simples e pequena, com muito menos probabilidade de erro fatal.fonte
O ponto é que, historicamente, um sistema é realmente planejado para ser compartilhado por vários usuários que apenas efetuam logon, fazem algumas coisas e depois desconectam. Assim, a distinção entre administrador e usuário normal. Esses sistemas ainda existem nos laboratórios da universidade e você pode sentir a diferença acentuada se usar esses computadores. PC doméstico onde você é o único usuário e também tem que agir, pois o administrador é realmente um desenvolvimento muito posterior.
fonte
Um computador é uma ferramenta. Vamos tentar uma analogia com outra ferramenta, digamos uma frigideira. Às vezes, você precisa cuidar da sua frigideira. Por exemplo, você deve limpá-lo com sabão. Você diria que o sabão é um ingrediente necessário em qualquer receita para a qual você usa a frigideira? Você nunca verá o "saboneteira" listado como ingrediente nos livros de culinária. É necessário, mas a preparação da ferramenta é outra questão, portanto os livros de culinária não mencionam isso. A frigideira deve ser limpa, mas não é para isso que é feita.
É o mesmo para o seu computador. Ele precisa ser configurado e resolvido, mas não é para isso que ele é feito. Você cuida disso, você o configura, para que ele funcione corretamente. Feito isso, você pode usá-lo, não como administrador do sistema, mas como usuário. É para isso que é feito. Quando você é usuário, não precisa mais do sudo . Basta usar a ferramenta que você preparou com antecedência. É claro que, de tempos em tempos, você precisará usar privilégios de root, assim como precisa limpar sua frigideira sempre que usá-la para cozinhar.
Portanto, sem exagerar, poderíamos dizer que você nunca precisa do sudo (ou da senha root) para usar o seu computador. Apenas para preparar seu computador.
fonte
sudo
ou simplesmente ir para o master chef e fazer umsu
.Aposto que é porque você usa o software GUI para tudo, exceto tarefas administrativas do sistema, ou está falando de servidores Linux; nesse caso, a maioria dos acessos será naturalmente a administração do sistema. Portanto, pode parecer que qualquer coisa que o shell requer
sudo
.Também é possível usar o shell para suas tarefas diárias. Gerenciar seus arquivos pessoais
~
, editar arquivos, conversar no IRC, compilar código, navegar na Web, tudo isso é possível em um shell. Eu até usobc
como minha calculadora preferencial. Algumas coisas são mais fáceis de fazer por meio de uma GUI, outras são mais fáceis de fazer por meio do shell - mesmo se você preferir usar a GUI, o shell geralmente se sobressai em operações e automação em lote (pense em scripts do shell). Pessoalmente, uso o que for melhor para a tarefa em questão.Em alguns casos, é uma boa idéia configurar o sistema para que você não precise usá
sudo
-lo sempre em operações que, por padrão, exigem raiz, mas que dificilmente causam problemas. Um exemplo é que eu trabalho com hardware que envolve o uso de portas seriais e configurei regras do udev para dar acesso aos dispositivos como meu usuário comum sem precisar ser root.Não acho que seja uma boa ideia configurar
sudo
para não exigir uma senha. Isso facilita demais para atrapalhar todo o sistema com um comando digitado incorretamente ou um script mal-intencionado.Se você precisar executar tarefas que exijam absolutamente raiz o tempo todo, por que não deixar um
sudo -s
shell raiz persistente em execução em uma janela de terminal? Em seguida, ele estará disponível sem precisar digitar a senha e não é tão fácil de usar acidentalmente. Eu até configurei meu prompt de shell para ficar vermelho brilhante quando em um shell raiz.fonte
O adjetivo implícito relacionado a tudo isso é que são mudanças globais ou em todo o sistema . Você deve considerar as origens do Unix como um sistema multiusuário 1 em que vários usuários usariam a mesma instalação remotamente. Não faria sentido para um usuário leigo permitir alterar as configurações globais para todos os usuários. Era do administrador de sistemas, da raiz, do privilégio e da responsabilidade.
Em uma configuração multiusuário, você tem o software pré-instalado e sua configuração em todo o sistema em
/usr
e/etc
respectivamente. Tocar nesses locais exigiria permissões de root. Mas como o software Unix é escrito com vários usuários em mente, você pode compilar e instalar o software no$HOME
diretório 2 e ter seus próprios arquivos de configuração em sua casa, onde é possível editar os arquivos livremente sem ser um superusuário.Além de instalar seu próprio software em casa, a maioria dos softwares de todo o sistema lê a configuração específica do usuário
$HOME
logo após a primeira configuração/etc
. Isso permite que você personalize quase tudo sem precisar irroot
.Com um PC doméstico, em uma única configuração principal de usuário, você pode usar
sudo
e fazer o root do jeito que você gosta. Mas é habitual não tocar na configuração do aplicativo,/etc
mas sempre fornecer configurações específicas do usuário em casa. Dessa forma, você pode permitir que o gerenciador de pacotes redefina as configurações de todo o sistema nas atualizações. Instalar um novo software em todo o sistema é bastante bom na configuração de usuário único; Os pacotes distro não assumem as alternativas, portanto é uma saída fácil.Vou deixar meu gerenciador de pacotes instalar coisas globalmente, mas todas as coisas compiladas a partir de fontes e feitas por mim que eu deixo de lado
$HOME
. E eu não preciso sudo por nada disso.Se você tiver arquivos de dados, armazenamento externo
$HOME
, sinta-se à vontadechown
ouchgrp
os diretórios com o seu nome para poder acessar os arquivos semsudo
.[1] (levemente irônico, já que o Unix era para ser uma versão de 'usuário único' do sistema operacional Multics)
[2] (se o sistema permitir isso não montando partições domésticas como noexec)
fonte
Nos tipos de sistemas multiusuário para os quais o UNIX (e, por descendência, o Linux) foi projetado, essas não são ações comuns do usuário . Um administrador do sistema pode executá-los, mas não usuários comuns, e assim o sistema solicita que o sysadmin realmente queira fazer isso.
Mas mesmo em sistemas domésticos de usuário único, essas não são ações comuns do usuário . Normalmente, é necessário fazer isso ao configurar o sistema inicialmente, mas, uma vez concluído, um usuário típico não precisará fazê-lo com muita frequência . A maioria dos usuários típicos trabalha apenas com arquivos dentro do diretório inicial (ou subdiretórios), usando programas / pacotes que já foram instalados, e você não precisa
sudo
disso. Ou eles podem funcionar em um diretório especial em algum outro local do sistema que foi reservado para esse fim, e você precisasudo
configurá-lo, mas normalmente é necessário fazê-lo apenas uma vez.Por que isso importa? Como "usuário único" é um nome impróprio: você não é o único usuário da sua máquina, mesmo sendo o único usuário humano . Mesmo em uma instalação típica do Linux em casa, muitos programas são configurados para usar a máquina de várias maneiras, simulando algo que um ser humano pode fazer se tiver tempo e atenção de sobra: backups, atualizações, verificação de malware e o gostar. Na maioria das vezes, esses usos são completamente benignos, mas mesmo para alguns deles, ainda é prudente garantir que o usuário realmente queira fazer isso. E quando esses casos surgirem, é para isso que
sudo
serve. O computador está apenas fazendo check-in para garantir que é realmente você quem quer fazer o que alguém (talvez você, talvez um programa) disse que fez. E isso nem é entrar na possibilidade de malware, que você certamente não quer mascarar como você.fonte
Provavelmente, isso não é tão comum como representado, mas geralmente acontece quando algo casual exige internamente uma chamada de sistema privilegiada muito mais genérica para alcançar seu resultado, por exemplo:
umount
é um comando sério, pois você pode desmontar muitas coisas com ele.ifup
etc) é apenas para superusuário.Os sistemas geralmente evoluem para reduzir o número de casos. Os pendrives USB podem ser montados pelo usuário agora e as redes podem ser conectadas pelo usuário. Mas nem sempre foi assim.
fonte
Suposição: este é seu sistema e seus dados.
Você só precisa ponderar o risco de apagar dados acidentalmente ou bloquear o sistema operacional em comparação com a facilidade de fazer coisas sem digitar
sudo
todas as vezes.Eu costumo fazer login e trabalhar como root nos meus servidores domésticos porque
eu possoé mais fácil.Ser-lhe-á dito que você poderá lançar armas nucleares se não for através do sacro-santo,
sudo
mas a realidade é que hoje as pessoas têmroot
poderes (*) em diversos dispositivos (sua TV, seu telefone, sua torradeira, seu Windows (como você mencionou)). O Linux não é diferente aqui, embora muitos gostem de pensar o contrário.O BTW
UAC
não foi modeladosudo
como seu papel principal (além de tornar sua vida miserável) para garantir que você veja quando o malware deseja fazer as coisas em seu nome.(*)
root
poderes são definidos como a capacidade de armazenar dados importantes. O ditado "com grande poder vem de grandes questões" (ou o que quer que seja) se aplica.Se minha suposição estiver errada , você ainda precisará ponderar o risco acima, mas há mais variáveis (seu trabalho, fotos tiradas pelo seu cônjuge e armazenadas no mesmo laptop, ...)
fonte
rm -rf ~/
sem permissões especiais. Por outro lado, você não pode bloquear seu telefone celular ou TV sem fazer o root.Em defesa da pessoa que escreveu a pergunta inicial, eu tinha essa mesma pergunta nos últimos anos, mas adotei uma abordagem diferente.
A maioria das respostas aqui pode ser reproduzida em loop, porque todas elas enfatizam o mesmo ponto sobre o sudo e o root. Deixe-me adicionar uma perspectiva diferente a este tópico:
A maneira como aprendi o Unix e o Linux de dentro para fora foi usando um dos meus computadores como uma "cobaia". Eu instalava o SCO Linux e, eventualmente, o Solaris e o Linux muito mais tarde, experimentando alegremente como root para poder ler e / ou explorar a hierarquia de diretórios e todos os arquivos com acesso irrestrito, criando também contas de "usuário normal" em minha casa multiusuário crescida, mesmo sendo o único usuário. E estou feliz por ter feito dessa maneira. Eu aprendi muito sobre a "Filosofia Unix" e a maneira como o Unix deveria ser usado pelas minhas experiências.
Eu me diverti muito aprendendo sobre segurança e também executando comandos perigosos digitando rm -rf / * em um terminal como root. (NÃO FAÇA ISSO! MANGUARÁ O SEU SISTEMA !!) Fiz coisas como esta e muitos outros comandos, apenas para ver o que aconteceria em tempo real. Eu fiz esse tipo de coisa conhecendo as consequências antes da mão, mas ainda assim aprendi muito fazendo isso. Eu estava usando o SCO Unix LONG antes que a web existisse (sim, eu sou tão velha assim!) E experimentar dessa maneira foi inestimável para o meu aprendizado.
Então, o que estou dizendo é que se você não se importa em reinstalar quando algo der errado, use su ou faça login como root tudo o que você quiser e configure / corra! Você aprenderá muito fazendo isso.
Lembre-se de que os conselhos que foram repetidos muitas vezes aqui foram reiterados por uma boa razão: Os protocolos de melhores práticas evoluíram ao longo das décadas à medida que o compsec evoluiu e você DEVE prestar atenção a eles, mesmo como usuário doméstico / único do seu sistema . Ao fazer isso, uma boa higiene / hábitos do administrador de sistema se tornará uma segunda natureza para você.
Apenas um pouco de reflexão sobre o assunto su e sudo. Feliz hacking!
fonte