Connectez-vous en tant qu'utilisateur non root dans le terminal

18

C'est une question à laquelle je m'attendrais à obtenir rapidement une réponse de Google. Cependant, Google me manque en quelque sorte. Supposons que je suis connecté à une session de terminal et que je souhaite travailler temporairement en tant qu'un autre utilisateur non root dont je connais le mot de passe sans quitter ma session. Lorsque je suis connecté en tant qu'utilisateur, je souhaite que le répertoire personnel, etc., soit configuré correctement pour cet utilisateur jusqu'à ce que je me déconnecte. Comment je fais ça?

j'ai essayé

su -- username

puis en tapant le mot de passe, cela n'a produit aucune erreur mais je n'ai vu aucun changement visible de l'invite de commande, il dirait toujours myname @ myhost. Le répertoire personnel était également celui de myname et non la nouvelle connexion avec laquelle j'ai essayé de me connecter.

Je suis - comme cela apparaît maintenant - assez inexpérimenté en linux / Ubuntu, donc toute information est la bienvenue.

Andrew Savinykh
la source

Réponses:

18

À quel utilisateur vous souhaitez changer?

Le problème est que vous essayez de "su" dans un utilisateur qui n'a pas de shell assigné. La plupart des utilisateurs tels que mysql, pulse, etc., créés par le système ou par certains packages lors de l'installation du logiciel n'ont pas de shell attribué.

Vous pouvez vérifier si un utilisateur a un shell attribué en regardant dans le /etc/passwdfichier, regardez simplement la fin de la ligne de chaque utilisateur, s'il dit que /bin/falsecela signifie qu'il n'a pas de shell affecté, s'il a quelque chose comme /bin/bashou tout autre shell, alors vous devriez pouvoir "su" dans cet utilisateur.

Quand je dis «shell assigné», cela signifie essentiellement qu'il a un «accès shell»

toujours si l'utilisateur n'a pas accès au shell, vous pouvez toujours exécuter des commandes en tant que cet utilisateur avec

 sudo -u user command
Sam
la source
toujours si l'utilisateur n'a pas accès au shell, vous pouvez toujours exécuter des commandes en tant que cet utilisateur avec "sudo -u user command"
Sam
Ajoutez -s /bin/bashà votre sucommande ou utilisez chsh -u username -s /bin/bashpour modifier le shell d'un utilisateur. Méfiez-vous des implications de sécurité que cela pourrait avoir.
gertvdijk
7

si vous avez un accès sudo, je recommanderais

sudo su username -

Cela fait essentiellement la même chose, mais vous oblige seulement à connaître votre mot de passe et non les autres utilisateurs.

cependant, si vous avez le mot de passe des autres utilisateurs:

su username - devrait fonctionner très bien.

remarquez le 1 - et que c'est à la fin.

coteyr
la source
D'une manière ou d'une autre, les deux façons que vous avez décrites se comportent exactement comme les miennes - la commande est acceptée sans erreur mais le répertoire personnel n'est pas correct et l'invite indique que je suis toujours l'utilisateur d'origine. Si je me déconnecte après cela, je me déconnecte complètement.
Andrew Savinykh
Ok, l'utilisateur est-il autorisé à se connecter? Vous pouvez empêcher le compte de se connecter en définissant son shell sur "true" et cela fera exactement ce que vous décrivez. Cela était souvent utilisé sur le compte "système" comme "apache" et "ftp". Pour vérifier sudo cat /etc/passwdNE PAS COLLER LE CONTENU ICI. Il suffit de le regarder et assurez-vous que l'utilisateur a un vrai shell comme le dernier morceau de sa ligne.
coteyr
1
note latérale, la façon la plus appropriée de le faire est de définir un shell sur "false", ce qui générera une erreur. Bien que certains systèmes et comptes utilisent toujours true pour des raisons techniques ou de psudo-sécurité (pour aggraver la morosité des wana-be-hackers)
coteyr