O que determina quais comandos do Linux requerem acesso root? Entendo as razões pelas quais é desejável que, digamos, apt-get
exija root
privilégio; mas o que distingue esses comandos do resto? É simplesmente uma questão de propriedade e permissões de execução do executável?
relate perguntas
-
Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?
-
Inicie/pare o serviço systemd usando o atalho de teclado [fechado]
-
Necessidade de algumas chamadas de sistema
-
astyle não altera a formatação do arquivo de origem
-
Passe o sistema de arquivos raiz por rótulo para o kernel do Linux
É principalmente uma questão do que a ferramenta ou programa faz . Tendo em mente que um não-superusuário só pode tocar nos arquivos que possui ou aos quais tem acesso, qualquer ferramenta que precise ser capaz de colocar os dedos em tudo exigirá acesso de superusuário para fazer o que faz. Uma amostra rápida de coisas que podem exigir acesso de superusuário inclui, mas não está limitada a:
/etc
)/lib
e/usr/lib
) ou binários (/bin
,/usr/bin
)renice
)No linux, os privilégios de root foram divididos em um ponto em "capacidades", então você pode obter uma lista completa dos privilégios especiais de root examinando a documentação:
man 7 capabilities
.Para responder à sua pergunta, um comando exigirá a execução como root quando precisar de um desses privilégios e seu executável sem script não tiver o recurso relevante definido em seus metadados de arquivo (por exemplo, se um script python exigir o recurso, o recurso precisaria estar no interpretador python especificado na linha shebang).
Observe que alguns comandos que precisam de acesso root não precisam de algo como
sudo
porque eles têm o bit SUID definido em seu executável. Este bit faz com que o executável seja executado como o proprietário (geralmente root) quando executado por qualquer pessoa que tenha acesso de execução. Um exemplo ésudo
a própria mudança de usuários é uma ação privilegiada que ele precisa fazer.EDIT: Observo pela sua pergunta que você pode ter a ideia de que pode determinar se um comando precisará de acesso root antes de executá-lo. Esse não é o caso. Às vezes, um programa pode exigir privilégios de root e outras vezes não, e isso pode ser uma decisão tomada pelo programa devido aos dados fornecidos durante o tempo de execução. Tomemos, por exemplo, chamando
vim
, assim sem argumentos e, em seguida, pressionando e colando uma série de teclas, dizendo-lhe para gravar algo em um arquivo que não tem permissão para gravar, ou talvez executando outro comando que exija privilégios de root. Nada sobre o comando antes da execução poderia indicar que eventualmente exigiria acesso root. Isso é algo que só pode ser determinado no momento em que tenta fazer algo que o exija.De qualquer forma, aqui estão alguns exemplos da página de manual referenciada dos privilégios de root:
Acho que é de acordo com a identidade do usuário verificar as permissões, não de acordo com a ordem de divisão das permissões. Arquivos e usuários são privilegiados e os comandos não devem ser divididos.