Linux에서 사용자 권한이 어떻게 작동하는지 이해하려고합니다. 커널이 부팅되고 init
루트로 시작 됩니다. 그런 다음 Init은 시작 스크립트를 실행 하고 다시 루트로 getty
( agetty
)를 실행 합니다. Agetty는 단지 사용자 이름을 읽고 login
여전히 루트로 실행 한다고 생각합니다. 아직 흥미로운 것은 없습니다. 그러나 로그인 은 무엇을합니까? "로그인 시도"보다 더 나은 것을 찾을 수 없었습니다. 로그인에서 비밀번호가 일치하고 일반 사용자로 로그인하려고한다고 가정하면 사용자 ID는 어떻게 변경됩니까? 시스템 호출이 필요하다고 생각했지만 찾을 수 없었습니다.
또한 약 su
. su
'setuid'비트가 설정되어 있으므로 실행할 때 항상 루트로 실행됩니다. 그러나 일반적인 사용자로 로그인하라는 메시지가 표시되면 다시 사용자 ID를 변경해야합니다. 동일한 "마법"이 발생 su
하거나 login
사용자를 변경해야 할 때 올바르게 이해하고 있습니까? 그렇다면 왜 두 개의 다른 프로그램이 있습니까? 로그인을 실행할 때 추가로 심각한 비즈니스가 발생합니까?