추가 읽기

추가 읽기

test설치 중에 시스템에 로그인하는 데 사용하는 사용자 " "을(를) 생성했다고 가정해 보겠습니다 . 내 루트 사용자는 " root"입니다. 또한 각 사용자에 대해 별도로 두 개의 터미널 세션을 열었습니다. 이제 문제는 " w", " who" 또는 심지어 " finger" 명령(내 루트 터미널 세션에서) 로그인한 모든 사용자를 나열하려면 test사용자 " "이(가) 두 번 들어오는 것을 볼 수 있습니다(다른 TTY 사용test), 실제로는 ' ' & ' ' 이어야 합니다 root. 새 사용자 ' '을 생성하더라도 test1원래 사용자 이름 ' '이 현재 로그인된 사용자의 이름인 것을 볼 수 있습니다( test명령 출력). 다음과 같이:wwhofingerRHEL7 터미널 왜 이런거야?

PS: 사용RHEL7

답변1

su - username다른 사용자를 로그인하는 데 사용하는 새 터미널 창

이것은 당신의 생각 오류입니다. 누구세요아니요로그인.

su로그인 세션이 생성되지 않습니다. 로그인 메커니즘이 아닙니다. 다른 사용자 계정으로 프로그램을 실행하도록 "사용자를 전환"하여 해당 사용자가 사용할 수 있는 총 권한 수에 해당 계정의 권한을 추가합니다.기존 로그인 세션그것은 계속 실행됩니다.

이러한 다양한 명령으로 보고되는 로그인 데이터베이스에는 로그인 세션이 나열됩니다. 권한 추가기존의물론 세션은 이를 변경하지 않습니다.

(일부 GUI 터미널 에뮬레이터(전부는 아님)는 제공하는 각 에뮬레이트된 터미널에 대한 로그인 데이터베이스 항목을 추가합니다. 여러분의 경우는 그렇습니다.아니요 su행위. 이 항목은 터미널을 사용 su하여 셸에서 명령을 실행하기 훨씬 전에 추가되었습니다. )

추가 읽기

답변2

test이전에 사용자가 사용하던 세션을 종료한 적이 있습니까 kill -9?

utmp운영 체제 및 운영 체제 가 파일 업데이트를 처리하는 방법에 따라 wtmp사용자 세션을 종료하면 kill -9파일의 세션 기록이 utmp"세션 활성" 상태로 유지될 수 있습니다.

동일한(의사) TTY 장치를 사용하는 새 세션이 초기화되면 항목에 기록된 코드는 utmpTTY 장치의 슬롯이 활성 항목에서 이미 사용 중임을 확인하고 다음 여유 슬롯을 사용합니다.

w그런 다음 , who또는 같은 명령은 finger한 번에 한 명의 사용자만 TTY 장치를 사용할 수 있다는 합리적인 기대를 갖고 있으므로 특정 TTY 장치에 대한 항목 하나를 찾으면 다른 항목을 찾지 않을 것입니다... 그래서 그들은 실제 현재 항목 대신 잘못된 오래된 항목을 표시합니다.

utmpdump명령을 사용하면 utmp바이너리 파일을 텍스트 형식으로 덤프하여 utmp 손상이 발생했는지 확인할 수 있습니다. 그런 다음 텍스트 버전을 편집하여 오래된 항목을 제거하고 이를 사용하여 손상된 항목이 제거된 utmpdump -r새 바이너리를 다시 빌드할 수 있습니다.utmp

또는 모든 사용자를 잠시 동안 로그아웃 상태로 유지할 수 있는 경우 다른 사용자를 로그아웃하고 utmp 파일을 0 크기로 자른 다음 로그아웃하고 다시 로그인하십시오.

# echo "Everyone logout now, please" | wall
# > /var/run/utmp
# <logout>

앞으로는 이 문제를 처음부터 피하려면 or kill -HUP대신 to를 사용하여 셸 세션을 종료하세요 .kill -9kill -KILL

답변3

당신이 쓴

또한 각 사용자에 대해 별도로 두 개의 터미널 세션을 열었습니다.

그런 다음 주석에서 새 터미널 창을 연 후 다음과 같이 명시했습니다.

그런 다음 "su - 사용자 이름"을 사용하여 다른 사용자에 로그인합니다.

터미널 창을 열면 에 항목이 생성됩니다 utmp. 이 su명령은 그렇지 않습니다. 따라서 귀하가 여는 모든 창은 귀하가 로그인한 원래 사용자 계정에 등록됩니다.

관련 정보