J'ai un certain programme binaire sur OS X qui ne peut être exécuté qu'en tant que root.
Je suis fatigué de préparer à sudo
chaque fois que je l'invoque et de taper le mot de passe, et je voudrais qu'il s'exécute automatiquement en tant que root lorsque je l'invoque régulièrement, sans demander de mot de passe.
Le propriétaire du programme est root et son groupe est wheel.
J'ai essayé chmod ug+s
de définir l'ID utilisateur et l'ID groupe lors de l'exécution sur root / wheel, mais lorsque j'exécute le programme sans sudo, il se plaint toujours qu'il ne peut fonctionner qu'avec sudo ou en tant que root.
nosuid
option de montage ... en plus de la raison pour laquelle vous devez régulièrement exécuter un programme en tant que superutilisateur.Réponses:
Êtes-vous sûr que le programme que vous essayez d'exécuter est en fait un binaire et non un script shell. La plupart des shells ignorent les scripts suid car ils sont vraiment très difficiles à faire en toute sécurité. Un moyen simple de vérifier consiste à utiliser la
file
commande sur le programme.la source
Une demi-solution à votre problème:
dans le fichier sudoers, ajoutez ce qui suit:
Ensuite, à partir de la ligne de commande, vous pouvez taper:
et il exécutera la commande sans demander votre mot de passe. Cette commande s'exécutera en tant que root.
Remarque, vous devrez remplacer le nom d'utilisateur par votre nom d'utilisateur réel.
la source
Si vous ne pouvez vraiment pas l'invoquer en tant que démon pour une raison quelconque (cette question serait pertinente dans ce cas) , cette méthode peut être piratée ensemble, mais elle est assez sale et pas sécurisée du tout.
Le concept est de le lancer avec un AppleScript. Vous devez d'abord savoir comment appeler le processus à partir de la ligne de commande (ce qui signifie que si vous utilisez déjà sudo, vous devez être prêt). Vous lancerez ce processus à l'aide de la
do shell script
commande, et au lieu d'utiliser sudo, vous écrivez vos informations d'identification dans l'AppleScript:Je réitère la partie sur l'insécurité: CECI SIGNIFIE QUE VOS CRÉDITS ADMIN SERONT STOCKÉS EN TEXTE CLAIR. Dans la mesure du possible, vous devriez trouver un moyen d'arrière-plan en tant que LaunchDaemon.
la source
SUR OSX supposons que le programme que vous avez se trouve dans / usr / local / bin / YourProgramName ... Pour résoudre ce problème, la commande suivante, Pour changer l'ID utilisateur / l'ID de groupe pour les hiérarchies de fichiers enracinées dans les fichiers au lieu de simplement les fichiers eux-mêmes .
sudo chown -R $(whoami) /usr/local/bin/
... puis dans Terminal, appelez votre programName, $ YourProgramName
la source
Tu peux faire
ce qui vous mettra dans une coquille racine.
la source
ressemble au programme lui-même vérifie s'il est en cours d'exécution avec ID = 0
la source
Tu pourrais
sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE
.Pourtant, je suis totalement d'accord avec le commentaire de dmckee.
la source