test
설치 중에 시스템에 로그인하는 데 사용하는 사용자 " "을(를) 생성했다고 가정해 보겠습니다 . 내 루트 사용자는 " root
"입니다. 또한 각 사용자에 대해 별도로 두 개의 터미널 세션을 열었습니다. 이제 문제는 " w
", " who
" 또는 심지어 " finger
" 명령(내 루트 터미널 세션에서) 로그인한 모든 사용자를 나열하려면 test
사용자 " "이(가) 두 번 들어오는 것을 볼 수 있습니다(다른 TTY 사용test
), 실제로는 ' ' & ' ' 이어야 합니다 root
. 새 사용자 ' '을 생성하더라도 test1
원래 사용자 이름 ' '이 현재 로그인된 사용자의 이름인 것을 볼 수 있습니다( test
명령 출력). 다음과 같이:w
who
finger
왜 이런거야?
PS: 사용RHEL7
답변1
su - username
다른 사용자를 로그인하는 데 사용하는 새 터미널 창
이것은 당신의 생각 오류입니다. 누구세요아니요로그인.
su
로그인 세션이 생성되지 않습니다. 로그인 메커니즘이 아닙니다. 다른 사용자 계정으로 프로그램을 실행하도록 "사용자를 전환"하여 해당 사용자가 사용할 수 있는 총 권한 수에 해당 계정의 권한을 추가합니다.기존 로그인 세션그것은 계속 실행됩니다.
이러한 다양한 명령으로 보고되는 로그인 데이터베이스에는 로그인 세션이 나열됩니다. 권한 추가기존의물론 세션은 이를 변경하지 않습니다.
(일부 GUI 터미널 에뮬레이터(전부는 아님)는 제공하는 각 에뮬레이트된 터미널에 대한 로그인 데이터베이스 항목을 추가합니다. 여러분의 경우는 그렇습니다.아니요 su
행위. 이 항목은 터미널을 사용 su
하여 셸에서 명령을 실행하기 훨씬 전에 추가되었습니다. )
추가 읽기
- 조나단 데보인 폴라드(2014).사용자 권한을 제거하기 위해 su를 남용하지 마십시오.. 자주 주어지는 답변입니다.
- 조나단 데보인 폴라드(2018).유닉스 로그인 데이터베이스. 자주 주어지는 답변입니다.
- https://unix.stackexchange.com/a/441817/5132
- https://unix.stackexchange.com/a/283543/5132
답변2
test
이전에 사용자가 사용하던 세션을 종료한 적이 있습니까 kill -9
?
utmp
운영 체제 및 운영 체제 가 파일 업데이트를 처리하는 방법에 따라 wtmp
사용자 세션을 종료하면 kill -9
파일의 세션 기록이 utmp
"세션 활성" 상태로 유지될 수 있습니다.
동일한(의사) TTY 장치를 사용하는 새 세션이 초기화되면 항목에 기록된 코드는 utmp
TTY 장치의 슬롯이 활성 항목에서 이미 사용 중임을 확인하고 다음 여유 슬롯을 사용합니다.
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 -9
kill -KILL
답변3
당신이 쓴
또한 각 사용자에 대해 별도로 두 개의 터미널 세션을 열었습니다.
그런 다음 주석에서 새 터미널 창을 연 후 다음과 같이 명시했습니다.
그런 다음 "su - 사용자 이름"을 사용하여 다른 사용자에 로그인합니다.
터미널 창을 열면 에 항목이 생성됩니다 utmp
. 이 su
명령은 그렇지 않습니다. 따라서 귀하가 여는 모든 창은 귀하가 로그인한 원래 사용자 계정에 등록됩니다.