Pourquoi est-ce que lorsque je change d'utilisateur su <username>
puis que j'exécute, who am i
c'est l'utilisateur précédent auquel j'étais connecté et non celui vers lequel je suis passé?
9
Vous exécutez probablement la mauvaise commande.
who
est destiné à montrer qui est connecté, c'est-à-dire quel utilisateur possède le terminal. Il renvoie une ligne comme celle-ci:
ckhan pts/1 2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
whoami
est destiné à vous montrer quel est l'ID utilisateur effectif de la personne qui l'exécute. Il ne renvoie qu'un seul nom, comme celui-ci (et équivaut à courir id -un
):
ckhan
Je pense que vous avez peut-être littéralement tapé who am i
sur le terminal, qui a fonctionné who
avec deux arguments ignorés ( am
, i
).
Voir man who
et man whoami
pour plus de détails.
am
eti
ne sont pas ignorés, ils sont même spécifiés par POSIX: "Dans les paramètres régionaux POSIX, limitez la sortie à la description de l'utilisateur appelant, équivalente à l'-m
option."Selon ma page de manuel Ubuntu 12.04.2 pour la commande 'who', 'who am i' (ou who avec deux arguments) est identique à 'who -m' et devrait vous donner le nom d'hôte et l'utilisateur associé à STDIN. Cependant, je ne reçois aucune sortie avec «qui suis-je». Soit la page de manuel est incorrecte, soit la commande contient un bogue. Quoi qu'il en soit, comme précédemment répondu par ckhan, la commande «whoami» vous donnera le nom d'utilisateur pour votre ID utilisateur effectif. Au moins dans Ubuntu 12.04.2, aucun identifiant, «qui suis-je» ou «whoami» ne vous donnera juste le nom d'utilisateur de la personne connectée sur le terminal actuel. Comme solution de contournement, vous pouvez obtenir cela avec:
la source
Solution :
qui fonctionne en remplacement de
who am i | awk '{print $1}'
. Explication ci-dessous:Sur de nombreux systèmes, "
who am i
" équivaut à "who -m
". Le problème ici est qu'avec certains terminaux , "who -m
" ne renvoie rien!Exemple # 1 exécuté à partir d'un terminal xfce4
mais Exemple # 2 à partir d'un gnome-terminal (même ordinateur, mêmes commandes)
Cela semble être une conséquence du fait que gnome-terminal n'ajoute pas d'entrées utmp…
la source
stat
place:stat -c '%U' "$(tty)"
vous ne devriez probablement pas analyser nonwho am i
plus, car les noms d'utilisateur peuvent contenir des espaces dans de rares cas.