2017-06-21 2 views
0

j'ai le script suivant qui fonctionne très bien quand je, avec mes propres privilèges sudo, exécutez:Laisser non privilégié l'utilisateur d'exécuter une commande en tant qu'utilisateur différent

department_wpsites=("/var/www/asiane/wp-ane" "/var/www/english/wp-english") 

for f in ${department_wpsites[*]} 
do 
    theme_path="$f/wp-content/themes/dept-theme" 
    cd $theme_path 
    echo ">> Performing 'git pull' at $theme_path" 
    sudo -u www-data git pull 
done 

Maintenant, je veux un de mes sous-fifres , qui n'a pas de privilèges sudo, pour pouvoir l'exécuter. Notez qu'il est nécessaire que tous les fichiers modifiés/créés par git pull soient la propriété de www-data, quel que soit l'exécutant du script. Que puis-je faire pour permettre à un utilisateur non-sudo d'utiliser ce script ou quelque chose d'équivalent?

Répondre

1

peut être ajustée sudo pour permettre à l'administrateur de configurer ce que peut être exécuté par qui. Ce n'est pas comme une taille unique "quand j'ajoute un utilisateur dans un fichier sodoers, l'utilisateur est automatiquement un administrateur" est forcé. sodoers permet des règles fines qui peuvent vous aider à l'adapter à vos besoins où un seul utilisateur sera autorisé à exécuter un seul script (et rien d'autre).

https://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt

+0

J'ai essayé d'utiliser le fichier sudoers, mais je crois que la chose qui doit être activé est la ligne 'sudo -u www-data git pull' (faire un git pull comme www -data), et mon administrateur réseau a dit que vous ne mettez pas de commandes sudo dans le fichier sudoers –

+0

Je dirais qu'il manque une grande partie de la fonctionnalité de ce que sudo peut faire (c'est _not_ juste pour permettre aux utilisateurs de devenir plein des racines sur un système, mais pour leur permettre d'exécuter des tâches spécifiques sans leur accorder quoi que ce soit d'autre) De plus, je ne donnerais pas un utilisateur _carte blanche_ pour exécuter git où bon lui semble. Je l'affinerais en créant un script simple qui irait à l'endroit désiré et exécuterait '' '' git whatever''' et rien d'autre. Aucun paramètre lu, rien non. De cette façon, le script serait lié. Et c'est le script que je mettrais en place sur sudoers. – eftshift0