Codecademy와 같은 온라인 명령줄 플랫폼에서 다음을 실행하면
for cmd in w who whoami id
do
echo $cmd
$cmd
echo =========================
echo " "
done
알겠어요
w
00:52:54 up 8 days, 14:10, 0 users, load average: 3.78, 2.98, 2.69
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
=========================
who
=========================
whoami
ccuser
=========================
id
uid=1000(ccuser) gid=1000(ccuser) groups=1000(ccuser)
=========================
whoami
무언가만 출력 하도록 주의하세요 id
. 내 컴퓨터에서 동일한 작업을 실행하면 모든 명령에 대해 비슷한 결과가 나타납니다.
w
Codecademy가 사용자에게 표시하지 않는 이유는 무엇입니까 who
? 이들명령의 차이점은 무엇인가요?
답변1
id
보고서- 자체 프로세스의 현재 자격 증명
- 다음과 같은 사용자의 자격 증명을 지정합니다.시스템 계정 데이터베이스.
whoami
자체 프로세스의 현재 자격 증명을 보고합니다.who
w
테이블에서 활성 로그인 세션을 보고합니다 .데이터베이스에 로그인.
BSD doco는 whoami
작업의 일부를 수행했다고 명시 id
하므로 id
더 이상 사용되지 않습니다.
시스템에 활성 로그인 세션 테이블이 있을 필요는 없습니다. Linux 운영 체제 및 BSD에서 부팅 시 테이블이 생성되지 않았거나 이후 삭제된 경우 시스템은 테이블 없이 실행됩니다. 또한 Linux 운영 체제에서는 로그인 및 로그아웃 시 암시적으로 생성되지 않습니다.
또한 권한이 없는 사용자는 테이블을 읽을 필요가 없으며 이 명령 who
이나 w
명령 모두 이를 오류로 보고하지 않습니다.
추가 읽기
- 조나단 데보인 폴라드(2018).유닉스 로그인 데이터베이스. 자주 주어지는 답변입니다.
- 조나단 데보인 폴라드(2018). "로그인-업데이트-utmpx". 사용자 명령. Nosh 툴셋.
- Lennart Petlinget al. (2018).
systemd-update-utmp.service
. 시스템 매뉴얼 페이지. freedesktop.org. - 로그인 셸에 대한 utmp 항목을 만들어야 합니까?
- https://unix.stackexchange.com/a/409036/5132