Je travaille sur l'automatisation de la création de référentiels Subversion et des sites Web associés comme décrit dans ce billet de blog que j'ai écrit . Je rencontre des problèmes tout autour de la partie où je demande à l'utilisateur www-data d'exécuter la commande suivante:
svnadmin create /svn/repository
Il y a une vérification au début du script qui s'assure qu'il s'exécute en tant que root ou Sudo, et tout après cette commande doit être exécuté en tant que root. Existe-t-il un bon moyen d'exécuter cette commande en tant que www-data, puis de revenir à la racine pour terminer?
Utilisez simplement su - www-data -c 'svnadmin create /svn/repository'
dans votre script exécuté par root. Pour que seule cette commande soit exécutée par l'utilisateur www-data.
Mise à jour pour les futurs téléspectateurs:
Si vous recevez un "This account is currently not available"
erreur, pensez à utiliser:
su - www-data -s /bin/bash -c 'svnadmin create /svn/repository'
(La précieuse mention de @Petr à propos de -s
drapeau pour accueillir www-data
aucune politique de connexion de l'utilisateur)
Avec 'su' est probablement cette demande de mot de passe, et www-data n'a pas de mot de passe. Je recommande la commande Sudo
:
Sudo -u www-data command
La condition est que votre utilisateur doit être root ou configuré dans le fichier sudoers
Utilisez su
:
su [options] [username]
The options which apply to the su command are:
-c, --command COMMAND
Specify a command that will be invoked by the Shell using its -c.
2 approches possibles:
1) Sudo
commande:
Dans la plupart des cas, vous aurez accès à la commande Sudo
et donc la solution est simplement:
Sudo -u target_user target_command
2) su
commande (si Sudo n'est pas installé. Ex. Alpine-linux images
):
su - target_user -c 'target_command'
Dans le cas où vous recevez une erreur 'Ce compte n'est actuellement pas disponible' , l'utilisateur n'a pas de connexion (accès Shell) politique en vigueur. Si oui, envisagez d'utiliser:
su - target_user -s /bin/bash -c 'target_command'
(D'après le précieux commentaire de @Petr sur -s
drapeau pour accueillir www-data
aucune politique de connexion de l'utilisateur)