O que determina quais comandos do Linux requerem acesso root? Entendo as razões pelas quais é desejável que, digamos, apt-get
exijam root
privilégios; mas o que distingue esses comandos do resto? É simplesmente uma questão de propriedade e permissões de execução do executável?
linux
root
privileges
Brian Dobby
fonte
fonte
open
e recebem "permissão negada". Alguns aplicativos verificamgetuid
e param de funcionar se não forem chamados pela raiz. Alguns são de propriedade física do root e somente o proprietário pode executá-los (consultechmod
). Se você está perguntando se existe alguma marca "precisa de raiz" no cabeçalho do aplicativo - a resposta é não. Não existe tal coisa afaik #Respostas:
No Linux, os privilégios de raiz estavam em um ponto dividido em "capacidades", assim você pode obter uma lista completa de privilégios especiais de raiz, olhando para que a documentação:
man 7 capabilities
.Para responder à sua pergunta, um comando exigirá a execução como root quando ele precisar de um desses privilégios, e seu executável sem script não possui a capacidade relevante definida nos metadados do arquivo (por exemplo, se um script python exigir essa capacidade, então a capacidade precisaria estar no interpretador python especificado na linha shebang).
Observe que alguns comandos que precisam de acesso root não precisam de algo parecido
sudo
porque eles têm o bit SUID definido em seu executável. Esse bit faz com que o executável seja executado como proprietário (normalmente root) quando executado por qualquer pessoa que tenha acesso de execução. Um exemplo é o fato desudo
alterar usuários é uma ação privilegiada que ele precisa executar.EDIT: Observo da 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 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, chamar
vim
assim sem argumentos e, em seguida, através de uma série de pressionamentos de tecla e colar, dizendo 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 acabaria por exigir acesso root. Isso é algo que só pode ser determinado no momento em que ele tenta fazer algo que exige isso.De qualquer forma, aqui estão muito poucos exemplos da página de manual referenciada dos privilégios de root:
fonte
É principalmente uma questão do que a ferramenta ou programa faz . Tendo em mente que um não-superusuário pode apenas tocar em arquivos aos quais possui ou tem acesso, qualquer ferramenta que precise ser capaz de entender tudo exigirá acesso do superusuário para fazer o que é necessário. Uma amostra rápida de itens que podem exigir acesso de superusuário inclui, entre outros:
/etc
)/lib
e/usr/lib
) ou binários (/bin
,/usr/bin
)renice
)fonte
Eu acho que está de acordo com a identidade do usuário para verificar as permissões, não de acordo com a ordem para dividir as permissões. Arquivos e usuários são privilegiados e os comandos não devem ser divididos.
fonte