Je comprends que c'est un peu fondamental et peut-être une question stupide, mais je n'ai pas pu trouver de réponse.
Je comprends que chaque fichier a le "Executable"
bit.
J'ai supposé que les programmes qui nécessitent root
, qui appartiennent à l' root
utilisateur et au root
groupe n'auront pas le Executable
bit Other
et cela empêcherait les utilisateurs non root de les exécuter. Mais dans les répertoires /bin
et /sbin
je vois que tous les fichiers ont des autorisations comme-rwxr-xr-x
Alors, qu'est-ce qui détermine vraiment si un utilisateur doit avoir la permission root pour exécuter quelque chose?
permissions
root
doyen
la source
la source
/bin
ou/sbin
répertoires. Le problème est que certains de ces programmes fonctionnent différemment selon l'utilisateur qui les exécute.Réponses:
Parfois, c'est dans le code. Par exemple, à mi-chemin de
hwclock.c
, vous trouverez:ce qui changera le comportement du programme si vous êtes root ou non.
Dans la plupart des autres cas, c'est implicite; déléguée au noyau. Par exemple, si le programme appelle l' appel système qui vous permet de redémarrer le système, il ne fonctionnera que si vous êtes root. Si vous n'êtes pas root, vous aurez une erreur "permission refusée" que l'application (si bien écrite) vous rapporte simplement. Ou vous essayez de supprimer un fichier; si vous avez la bonne autorisation sur le fichier pour le faire, il réussira; sinon, cela dépend si vous êtes root ou non --- quand les
rm
appelsunlink()
le noyau vérifiera les permissions.Donc non, en principe, vous ne pouvez pas dire simplement en regardant l'autorisation de l'exécutable si le programme nécessite des privilèges root ou non. Beaucoup de programmes ne les nécessiteront que pour certaines opérations, il sera donc très difficile de faire quelque chose comme ça. Le cas de
hwclock
un (tout le monde peut lire l'horloge , mais seul root peut le définir), mais il y a des centaines d'entre eux (kill
,rm
,cat
...)Ensuite, il y a le monde connexe et intéressant des programmes setuid ...
la source