내 관찰:
새 터미널을 열면(난쟁이/lx):
- 새로운/dev/pts/X사용
who
이들 중 어느 것도 나열되어 있지 않습니다.- 첫 번째 문자
echo $0
는 가 아니므-
로 로그인 쉘이 아닙니다.
ssh
동일한 사용자를 사용하여 동일한 컴퓨터에 들어가면- 새로운/dev/pts/X사용
who
이것들을 나열해 보세요- 첫 번째 문자
echo $0
는-
이므로 로그인 쉘입니다.
새로 열면단말기 (ctrl-alt-Fxx)
- 새로운/dev/ttyXX사용
who
이것들을 나열해 보세요- 첫 번째 문자
echo $0
는-
이므로 로그인 쉘입니다.
내가 달리면
su -
- 동일한/dev/pts/X사용(
su -
발행된 곳) who
이들 중 어느 것도 나열되어 있지 않습니다.- 첫 번째 문자
echo $0
는-
이므로 로그인 쉘입니다.
- 동일한/dev/pts/X사용(
결론적으로:
- 새 pty를 생성해도 utmp(?)에 항목이 자동으로 생성되지 않습니다.
질문:
who
현재 로그인된 사용자 목록을 표시하는 경우 각 로그인 셸(?)에 대한 항목이 표시되어야 합니다. 하지만 루트 사용자 로그인 항목은 표시되지 않습니다su -
. 이유는 무엇입니까?
편집하다:이 시점에서 내가 알아낼 수 있는 또 다른 점은 "utmp에 새 항목을 만들기 전에 새 pty/tty 및 로그인 셸이어야 합니다."입니다.
답변1
첫째, who
로그인 쉘이나 그와 유사한 것에 대해서는 신경 쓰지 마십시오. 단지 utmp
항목을 덤프합니다 . 비로그인 터미널, 그래픽 세션, FTP 연결(완전히 구성된 tty "라인" 이름 포함)에 대한 항목이 있을 수 있습니다.
2. utmp 항목 생성수동– 로그인을 처리하는 프로그램이 호출될 때만 항목을 얻을 수 있습니다 pututline(…)
. 예를 들어 sshd는 항상 이 작업을 수행하고 터미널 에뮬레이터는자주이렇게 하십시오(항상 그런 것은 아님). su
절대로 이렇게 하지 마십시오.
( su
새로운 pty를 할당하지 않기 때문에 utmp 항목도 추가할 수 없다는 점을 기억하십시오. 그렇지 않으면 동일한 tty에 대해 여러 항목이 생성되어 일부 프로그램을 혼란스럽게 할 수 있습니다.)