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
la source
Réponses:
Le script demande probablement une opération avec des
root
privilè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 bitsSETUID
ouSETGID
.Vous pouvez cependant activer le
SETUID
bit sur le script. Cela fera exécuter le script avec l'utilisateur propriétaire, dans votre casroot
, 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:
Plus sur
SETUID/SETGID
: Comprendre les autorisations setuid et setgid pour améliorer la sécuritéla source