Je travaille sur l'automatisation de la création de référentiels de subversion et de 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?
This account is currently not available.
su - www-data -s /bin/bash -c 'your_command'
pour faire ce travail. L'utilisateur www-data a un shell/usr/sbin/nologin
donc sans le-s
paramètre il conduit au message d'erreur.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
:La condition est que votre utilisateur doit être root ou configuré dans le fichier sudoers
la source
Utilisation
su
:la source
2 Approches possibles :
1)
sudo
commande:Dans la plupart des cas, vous aurez accès à la
sudo
commande et la solution est donc 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 a une politique de non-connexion (accès shell) en vigueur. Si oui, envisagez d'utiliser:
su - target_user -s /bin/bash -c 'target_command'
(Basé sur le précieux commentaire de @Petr sur l'
-s
indicateur pour s'adapter àwww-data
la politique de non-connexion de l'utilisateur)la source