`su` 이후에 나는 누구인가? 사용자를 전환 su <username>한 다음

사용자를 전환 su <username>한 다음 실행 하면 내가 who am i로그온 한 이전 사용자가 아닌 내가 전환 한 이전 사용자가 출력되는 이유는 무엇 입니까?



답변

잘못된 명령을 실행했을 가능성이 있습니다.

  • who누가 로그인했는지, 즉 어떤 사용자가 터미널을 소유하고 있는지를 나타냅니다. 다음과 같은 줄을 반환합니다.

    ckhan    pts/1        2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
    
  • whoami유효 사용자 ID가 해당 ID를 실행하는 사람이 무엇인지 보여줍니다. 다음과 같은 단일 이름 만 반환합니다 (running과 동일 id -un).

    ckhan
    

who am i터미널에 문자 그대로 입력했을 수 있으며 who두 개의 무시 된 인수 ( am, i)로 실행되었습니다.

참조 man whoman whoami자세한 내용은.


답변

‘who’명령에 대한 내 Ubuntu 12.04.2 매뉴얼 페이지에서 ‘who am i'(또는 두 개의 인수를 가진 사람)는 ‘who -m’과 동일하며 STDIN과 관련된 호스트 이름과 사용자를 제공해야합니다. 그러나 ‘who am i’로 출력이 없습니다. 매뉴얼 페이지가 잘못되었거나 명령에 버그가 있습니다. ckhan이 이전에 답변 한대로 ‘whoami’명령은 유효 사용자 ID의 사용자 이름을 제공합니다. 적어도 우분투 12.04.2에서는 id, ‘who am i’또는 ‘whoami’중 어느 것도 현재 터미널에 로그인 한 사람의 사용자 이름 만 제공하지 않습니다. 해결 방법으로 다음과 같이 얻을 수 있습니다.

who | sed 's/ .*//'


답변

해결 방법 :

ls -l `tty` | awk '{print $3}'

에서 대체로 작동합니다 who am i | awk '{print $1}'. 아래 설명 :

많은 시스템에서 ” who am i“는 ” “와 같습니다 who -m. 여기서 문제는 일부 터미널 에서 ” who -m“는 아무것도 반환하지 않는다는 것입니다.

xfce4- 터미널에서 실행되는 예제 # 1

Pegasus ~ # whoami
root
Pegasus ~ # who am i
thomas   pts/1        2017-08-19 11:15 (:0.0)
Pegasus ~ # who -m
thomas   pts/1        2017-08-19 11:15 (:0.0)
Pegasus ~ # who
thomas   tty8         2017-08-19 10:18 (:0)
thomas   pts/1        2017-08-19 11:15 (:0.0)
thomas   pts/5        2017-08-19 16:16 (:0.0)
Pegasus ~ # who am i | awk '{print $1}'
thomas
Pegasus ~ #

그러나 그놈 터미널의 예제 # 2 (같은 컴퓨터, 같은 명령)

Pegasus ~ # whoami
root
Pegasus ~ # who am i
Pegasus ~ # who -m
Pegasus ~ # who
thomas   tty8         2017-08-19 10:18 (:0)
thomas   pts/1        2017-08-19 11:15 (:0.0)
thomas   pts/5        2017-08-19 16:16 (:0.0)
Pegasus ~ #

이것은 gnome-terminal이 utmp 항목을 추가하지 않은 결과입니다.


답변