Exécuter la commande en tant qu'utilisateur Linux «système» (shell = / bin / false)

29

J'ai créé un utilisateur "système" dans Ubuntu 11.04 ( adduser --system) pour exécuter certaines tâches cron, mais parfois je veux tester des choses en exécutant manuellement des commandes en tant que cet utilisateur. Quelle est la façon la plus simple de procéder?

sune fonctionne pas, car l'utilisateur a /bin/falsecomme shell (ce qui est bien pour cron). J'ai changé manuellement le shell pour /bin/bashfaire mes tests, puis je l'ai changé à nouveau, mais je me demande s'il existe un moyen plus simple?

EMP
la source

Réponses:

41

J'utilise à su - targetuser -s /bin/bashpartir d'un shell racine.

Pour l'exécution directe de commandes, utilisez -c:

su - targetuser -s /bin/bash -c "/bin/echo hello world" 
dmourati
la source
Cela fonctionne, merci! Comment ai-je manqué l'option -s?
EMP
3
vous pouvez également ajouter une option -c "your_command_here" pour passer la commande que vous souhaitez exécuter par rapport à l'attente du shell, puis la saisir à une nouvelle invite.
dmourati
2

Utilisez sudo. Cela fonctionnera même si l'utilisateur n'a pas de vrai shell.

eirescot
la source