Le script demande le mot de passe root même s'il dispose d'autorisations exécutables pour tout le monde

0

J'ai un script avec le nom "somescript", qui dispose d'autorisations exécutables pour tout le monde (755), mais lorsque j'essaie de l'exécuter avec un utilisateur non root, il continue de demander le mot de passe root. J'ai même essayé de régler à 4755 sans succès. Seuls les utilisateurs admin et les utilisateurs dotés d'un mot de passe root exécutent actuellement le script.

Comment puis-je faire en sorte que tout utilisateur puisse exécuter le script (mais pas le changer)

-rwxr-xr-x 1 root     group1 2841 Jul  8  2014 somescript

user@node:~> somescript
root's password:

Edit: Après avoir tranché Setuid et Setgid et les avoir vus ne pas fonctionner, j’ai inspecté davantage par script et découvert que le script vérifie le nom d’utilisateur root, s’il n’exécute pas via sudo qui oblige à utiliser un mot de passe root. La mise en commentaire de ce script devrait le faire fonctionner en définissant setuid car son propriétaire est root.

if [ "$uid" != "root" ]
then
  exec sudo /someplace/somescript
else
Gorkem
la source
2
Peut-être que c'est quelque chose dans le script, qui a besoin de privilèges élevés?
Eugen Rieck

Réponses:

0

Le script demande probablement une opération avec des rootprivilèges, ce qui n'a rien à voir avec des autorisations (dans ce cas), car cette opération sera effectuée par l'utilisateur actuel et vous n'avez pas activé les bits SETUIDou SETGID.

Vous pouvez cependant activer le SETUIDbit sur le script. Cela fera exécuter le script avec l'utilisateur propriétaire, dans votre cas root, mais l'utilisateur qui l'exécute n'a pas besoin d'exécuter d'élévation de privilèges.

Vous pouvez le faire en lançant:

chmod u+s somescript

Plus sur SETUID/SETGID: Comprendre les autorisations setuid et setgid pour améliorer la sécurité

nKn
la source
Merci, découvert que le problème était à l'intérieur du script fait avec un contrôle de la racine, solution ajoutée à ma question.
Gorkem