7. 프로세스 권한

잠시 프로세스 권한으로 넘어가 보겠습니다. SUID 권한 비트가 활성화된 상태에서 passwd 명령을 실행하면 root 로 프로그램이 실행된다고 말씀드렸던 것을 기억하시나요? 맞습니다. 하지만 그렇다고 해서 일시적으로 root 권한을 얻었으니 다른 사용자의 비밀번호를 수정할 수 있다는 의미일까요? 아닙니다, 다행히도 그렇지 않습니다!

이는 Linux 가 구현하는 여러 UID 때문입니다. 모든 프로세스에는 세 가지 UID 가 연결되어 있습니다:

프로세스를 시작하면 해당 프로세스를 실행한 사용자 또는 그룹과 동일한 권한으로 실행됩니다. 이를 유효 사용자 ID라고 합니다. 이 UID 는 프로세스에 접근 권한을 부여하는 데 사용됩니다. 따라서 Bob 이 touch 명령을 실행했다면, 프로세스는 Bob 으로 실행되고 그가 생성한 모든 파일은 그의 소유가 됩니다.

실제 사용자 ID라고 불리는 또 다른 UID 가 있습니다. 이는 프로세스를 시작한 사용자의 ID 입니다. 이들은 프로세스를 시작한 사용자가 누구인지 추적하는 데 사용됩니다.

마지막 UID 는 저장된 사용자 ID입니다. 이는 프로세스가 유효 UID 와 실제 UID 사이를 전환할 수 있도록 하며, 그 반대도 가능합니다. 이는 프로세스가 항상 상승된 권한으로 실행되기를 원하지 않기 때문에 유용합니다. 특정 시점에 특별한 권한을 사용하는 것이 좋은 관행입니다.

이제 passwd 명령을 다시 살펴보면서 이 모든 것을 종합해 봅시다.

passwd 명령을 실행할 때, 유효 UID 는 사용자 ID 입니다. 예를 들어, 지금은 500 이라고 가정해 봅시다. 아, 그런데 passwd 명령에는 SUID 권한이 활성화되어 있다는 것을 기억하시나요? 따라서 이 명령을 실행하면 유효 UID 는 이제 0 이 됩니다 (0 은 root 의 UID 입니다). 이제 이 프로그램은 root 권한으로 파일에 접근할 수 있습니다.

잠시 권한을 맛보고 Sally 의 비밀번호를 수정하고 싶다고 가정해 봅시다. Sally 의 UID 는 600 입니다. 음, 운이 없을 겁니다. 다행히도 프로세스에는 실제 UID 도 있습니다. 이 경우 500 입니다. 프로세스는 사용자 UID 가 500 이라는 것을 알고 있으므로 UID 600 의 비밀번호를 수정할 수 없습니다. (물론, 시스템의 슈퍼유저이고 모든 것을 제어하고 변경할 수 있다면 항상 이 규칙은 무시됩니다).

passwd를 실행했으므로, 실제 UID 를 사용하여 프로세스를 시작하고 파일 소유자의 UID(유효 UID) 를 저장하여 둘 사이를 전환할 수 있습니다. 필요하지 않다면 모든 파일을 root 접근 권한으로 수정할 필요가 없습니다.

대부분의 경우 실제 UID 와 유효 UID 는 동일하지만, passwd 명령과 같은 경우에는 변경됩니다.

로그인하여 학습 진행 상황을 저장하세요

로그인

연습 문제

연습이 완벽을 만듭니다! 사용자 ID 와 프로세스 권한을 이해하는 것은 Linux 보안 및 관리에 매우 중요합니다. UID 가 작동하는 방식의 기초를 형성하는 사용자 및 그룹 관리에 대한 이해를 강화하기 위한 실습 랩이 있습니다:

  1. Linux 사용자 그룹 및 파일 권한 - 사용자 생성 및 관리, 그룹 멤버십 탐색, 파일 권한 이해, 파일 소유권 조작을 포함한 필수 Linux 사용자 및 그룹 관리 개념을 배웁니다. 이 랩은 다중 사용자 Linux 환경을 보호하는 실질적인 경험을 제공합니다.
  2. 새 사용자 및 그룹 추가 - 이 챌린지에서는 새 사용자 계정을 생성하고, 사용자 지정 그룹을 설정하고, 그룹 멤버십을 관리하여 서버 환경에 새 팀원을 추가하는 것을 시뮬레이션합니다. 이는 시스템 관리자와 DevOps 전문가에게 필수적인 Linux 사용자 및 그룹 관리 기술을 테스트합니다.

이 랩들은 실제 시나리오에서 사용자 및 그룹 관리 개념을 적용하는 데 도움이 되며, Linux 에서 UID 가 접근 및 권한을 제어하는 방식에 대한 강력한 기반을 구축할 것입니다.

퀴즈

어떤 UID 가 부여할 접근 권한을 결정합니까?