Qu'est-ce qui détermine quelles commandes Linux nécessitent un accès root? Je comprends les raisons pour lesquelles il est souhaitable, disons, de apt-get
demander un root
privilège; mais qu'est-ce qui distingue ces commandes des autres? S'agit-il simplement de la propriété et des autorisations d'exécution de l'exécutable?
linux
root
privileges
Brian Dobby
la source
la source
open
et obtiennent une "autorisation refusée". Certaines applications vérifientgetuid
et cessent de fonctionner si elles ne sont pas appelées par root. Certains appartiennent physiquement à root et seul le propriétaire peut les exécuter (voirchmod
). Si vous demandez s'il y a une marque "besoins racine" dans l'en-tête de l'application - la réponse est non. Il n'y a rien de tel afaikRéponses:
Sous Linux, les privilèges de racine étaient à un moment donné divisé en « capacités », vous pouvez ainsi obtenir une liste complète des privilèges spéciaux de la racine en regardant dans cette documentation:
man 7 capabilities
.Pour répondre à votre question, une commande nécessite d'être exécutée en tant que root lorsqu'elle a besoin de l'un de ces privilèges, et son exécutable non script n'a pas la capacité appropriée définie dans ses métadonnées de fichier (par exemple, si un script python nécessite la capacité, alors la capacité devrait être dans l'interpréteur python spécifié dans la ligne shebang).
Notez que certaines commandes qui ont besoin d'un accès root n'ont pas besoin de quelque chose comme
sudo
parce qu'elles ont le bit SUID défini dans leur exécutable. Ce bit fait que l'exécutable s'exécute en tant que propriétaire (généralement root) lorsqu'il est exécuté par toute personne disposant d'un accès d'exécution. Un exemple estsudo
lui - même, car le changement d'utilisateurs est une action privilégiée qu'il doit faire.EDIT: Je note de votre question que vous pourriez avoir l'idée que vous pouvez déterminer si une commande aura besoin d'un accès root avant de l'exécuter. Ce n'est pas le cas. Un programme peut parfois nécessiter des privilèges root et d'autres fois pas, et cela pourrait être une décision prise par le programme en raison des données fournies lors de l'exécution. Prenons, par exemple, un appel
vim
, comme ça sans arguments, puis à travers une série de touches et de collage, lui disant d'écrire quelque chose dans un fichier qu'il n'a pas la permission d'écrire, ou peut-être d'exécuter une autre commande qui elle-même nécessitera les privilèges root. Rien sur la commande avant son exécution ne pouvait indiquer qu'elle nécessiterait éventuellement un accès root. C'est quelque chose qui ne peut être déterminé qu'au moment où il essaie de faire quelque chose qui l'exige.Quoi qu'il en soit, voici très peu d'exemples de la page de manuel référencée des privilèges de root:
la source
Il est principalement une question de ce que l'outil ou le programme ne . En gardant à l'esprit qu'un non-superutilisateur ne peut toucher que les fichiers qu'il possède ou auxquels il a accès, tout outil qui doit être en mesure de pénétrer tout nécessitera un accès de superutilisateur pour faire ce qu'il fait. Un échantillon rapide de choses qui pourraient nécessiter un accès superutilisateur comprend, mais sans s'y limiter:
/etc
)/lib
et/usr/lib
) ou binaires (/bin
,/usr/bin
) accessibles à l'échelle mondialerenice
)la source
Je pense qu'il est conforme à l'identité de l'utilisateur de vérifier les autorisations, et non selon l'ordre de répartition des autorisations. Les fichiers et les utilisateurs sont privilégiés et les commandes ne doivent pas être divisées.
la source