web-dev-qa-db-fra.com

Comment obtenir un shell interactif en tant qu'utilisateur non root?

J'utilise le serveur Ubuntu 10.04 LTS, avec le modèle de sécurité par défaut (racine verrouillée, en utilisant Sudopour é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 syslogname__, messagesname__, authet debugdans /var/log et aucun d'entre eux n'inclut de message faisant référence à Sudoet 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?

13
Calrion

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

13
Paul Hänsch

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.

9
Florian Diesch