J'utilise le serveur Ubuntu 10.04 LTS, avec le modèle de sécurité par défaut (racine verrouillée, en utilisant Sudo
pour élever les privilèges). J'apprécie parfois d'utiliser Sudo -i
lorsque je dois exécuter une série de commandes avec des privilèges élevés ou lorsque je dois fouiller dans des répertoires dotés de privilèges root seulement.
Parfois, lors de la configuration d'un logiciel qui s'exécutera sous son propre compte système non privilégié (adduser --system --group --no-create-home --disabled-login some-daemon-user
), je constate que je dois exécuter une séquence de commandes en tant qu'utilisateur, plutôt que moi-même ou root. J'ai essayé d'utiliser Sudo -i -u some-daemon-user
, mais il ne fait que renvoyer un statut 1
sans message d'erreur.
J'ai vérifié les fichiers journaux syslog
name__, messages
name__, auth
et debug
dans /var/log
et aucun d'entre eux n'inclut de message faisant référence à Sudo
et au compte en question.
Alors, est-il possible de devenir un autre utilisateur non-root, à la manière de Sudo, sans simplement définir un mot de passe et se connecter (comme eux)? Est-ce que mon système est "cassé" d'une manière ou est-ce que je me trompe?
Ahmm .. le problème est que le shell standard de ces utilisateurs est normalement défini sur /bin/false
et que, pour des raisons de sécurité, vous ne devez pas le modifier. Mais vous pouvez toujours exécuter par exemple: Sudo -u www-data /bin/sh
Sudo -i
exécute le shell spécifié par l'entrée de la base de données de mots de passe de l'utilisateur cible, qui est /bin/false
pour votre utilisateur système.
Utilisation
Sudo -u some-daemon-user bash
ou
Sudo -u some-daemon-user -H bash
si vous souhaitez définir la variable d'environnement $ HOME définie pour l'utilisateur cible.