명령 을 실행하려고 하는데 login
실패합니다.
SSH를 통해 루트로 다음을 얻습니다.
root@server:~# login
Connection to 192.168.0.50 closed.
SSH 연결이 종료되었습니다. "물리적" TTY에서는 세션이 닫히고 로그인 화면으로 돌아갑니다.
sudo를 사용하는 일반 사용자로서:
bilbax@server:~$ sudo login
Password:
[1]+ Stopped sudo login
이 오류가 나타나기 직전에 평소대로 명령을 사용해 보았는데 login
작동하고 비밀번호를 요청했습니다. 오타를 내고 다시 시도했지만 명령이 멈췄습니다. 나는 ^C를 시도했지만 성공하지 못했습니다. 그래서 루트로서 나는 killall login
아무 소용이 없었습니다. 시스템을 다시 시작했는데 이제 위 오류를 수정해야 합니다.
kill 명령에 뭔가 문제가 있었나요?
저는 Arch Linux x86_64(커널 3.4.7-1-ARCH)를 사용하고 있습니다.
답변1
문제는 su
tty를 새 사용자로 전환하지 않는다는 것입니다. 루트를 고소할 때는 문제가 되지 않지만 tty를 소유하지 않은 다른 사용자에게는 어려움을 초래할 수 있습니다.
이전에는 쉘에서 실행하는 것이 login
일반적인(또는 적어도 허용 가능한) 작업이었습니다. 쉘은 이를 특별하게 처리하고 이를 암시적으로 수행합니다 exec
. 현대 쉘은 더 이상 이 작업을 수행하지 않는 것 같습니다. 명시적으로 실행하면 exec login
도움이 될 수 있습니다. 추가하는 것도 -f username
시도해 볼 만한 일입니다.
루트가 아닌 사용자로 이 작업을 수행하면 이전에는 login
표준이었지만 더 이상 일반적이지 않은 setuid 루트일 때만 작동합니다. sudo
이전 버전이 있는 경우 exec
sudo가 이를 피할 만큼 똑똑하다고 가정하면 이 버전도 작동할 수 있습니다(즉, fork+exec+wait 대신 exec 자체를 직접 실행함).
결국, 왜 ssh host -l minecraft
중간자를 잘라내지 않는지 궁금합니다.