`su` 이후에 나는 누구인가?


9

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

답변:


13

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

  • 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자세한 내용은.


2
두 인수 ami무시하지, 그들은 심지어 POSIX에 의해 지정됩니다 "는 POSIX 로케일에서 동등 호출하는 사용자, 기술로 출력을 제한하는 -m옵션을 선택합니다."
xhienne

3

'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/ .*//'

이것은 Linux마다 다릅니다. Unix / SunOS의 원래 사용자 이름을 반환합니다.
Underverse

3

해결 방법 :

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 항목을 추가하지 않은 결과입니다.


LS를 파싱하지 마십시오! stat대신 사용하십시오 : 드문 경우이지만 사용자 이름에 공백이 포함될 수 있으므로 stat -c '%U' "$(tty)"구문 분석하지 않아야합니다 who am i.
wjandrea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.