Exécuter une commande en tant qu'utilisateur nologin

43

J'ai récemment configuré mon serveur afin que les utilisateurs 'virtuels' de suPHP ne puissent pas être connectés à l'aide de cet article

Mon problème est maintenant que avant quand je courais une rakecommande pour mon application Ruby on Rails en cours d' exécution sur le serveur, suj'entrer dans www-dataet exécutez la commande à partir de là - je ne peux évidemment pas faire plus en raison de la nologin.

En tant qu'utilisateur root, comment puis-je exécuter des commandes en tant qu'autre utilisateur, même si elles sont nologin?

Machine à café
la source
Une solution consiste à lancer un shell pour cet utilisateur (en spécifiant explicitement le shell): sudo -u www-data bashexécutez votre commande et déconnectez-vous
cyberx86
@ cyberx86 Votre solution fonctionne à merveille, pourriez-vous me l'envoyer comme réponse?

Réponses:

50

Une solution consiste à lancer un shell pour cet utilisateur (en spécifiant explicitement le shell):

sudo -u www-data bash 

Cela lancera un shell (bash) en tant qu'utilisateur spécifié. Vous pouvez ensuite exécuter vos commandes et vous déconnecter (pour revenir à votre shell précédent)

cyberx86
la source
39

En tant que root, vous pouvez utiliser su -s /bin/sh $user - l’ -soption remplace le shell configuré pour l’utilisateur.

Sergey Vlasov
la source
1
Cela semble toujours être une erreur pour moi.
Fonctionne très bien pour moi, jamais eu de problème. Lors de l'exécution de scripts avec la syntaxe bash, il faut / bin / bash plutôt que / bin / sh
ekerner