대부분의 시스템에서 루트 사용자나 고급 사용자는 시스템을 완전히 제어할 수 있습니다. SUA(UNIX 기반 응용 프로그램용 하위 시스템)에서는 루트 사용자를 인식하지 않습니다. POSIX(Portable Operating System Interface) 표준이 개발된 후 루트 사용자 개념은 관리 문제로 간주되었습니다. POSIX 표준에서는 루트 사용자 대신 특정 작업에 적절한 권한을 정의합니다.
이 항목의 내용
setuid 및 setgid
setuid 및 setgid 메커니즘을 사용하면 프로그램을 실행할 때 프로그램을 실행하는 사용자의 관점이 아니라 특정 보안 주체의 관점을 채택할 수 있습니다. 또한 프로그램에서 호출하는 사용자와 또 다른 보안 주체의 관점을 대체할 수 있습니다.
적절한 권한은 이 메커니즘과 구분됩니다. setuid 및 setgid 메커니즘을 사용하면 응용 프로그램에서 "누구십니까?"라는 질문에 대한 대답을 제어할 수 있지만 적절한 권한은 "어떤 작업을 수행할 수 있습니까?"라는 질문에 대답합니다.
UNIX 기반 응용 프로그램에 대한 하위 시스템 및 ID
일반적인 UNIX 환경에서는 정확하게 한 명의 사용자에게만 모든 권한이 부여됩니다. 일반적으로 root라고 하는 이 사용자는 uid == 0입니다. UNIX 기반 응용 프로그램용 하위 시스템에서는 특정 시스템에 대해 지원되는 모든 권한이 해당 시스템의 Administrators 그룹이나 Domain Administrators 그룹의 구성원인 사용자에게 부여됩니다. 따라서 관리자로 로그온할 필요가 없습니다. Administrators 그룹이나 Domain Administrators 그룹의 구성원인 사용자가 root 권한을 소유합니다. POSIX 또는 UNIX에 정의된 권한 중 일부는 SUA에서 사용할 수 없습니다. 즉, 사용자에게 부여되지 않는 특정 권한이 있습니다.
일반적으로 적절한 권한은 다양한 작업에 필요합니다. 이러한 작업에는 파일 시스템 액세스, 다른 프로세스로 신호 보내기(프로세스 제어), 특정 작업을 수행하는 해당 프로세스의 기능을 변경하기 위한 프로세스에 유효한 UID(사용자 식별자) 또는 GID(그룹 식별자) 변경이 포함됩니다.
POSIX 표준에 따라 파일에는 UID(setuid) 및 GID(setgid)를 설정하는 비트를 포함하는 사용 권한이 있습니다. 두 비트 중 하나 또는 둘 다를 파일에서 설정하고 프로세스에서 해당 파일을 실행하면 프로세스가 파일의 UID 또는 GID를 얻게 됩니다. 이 메커니즘을 주의해서 사용하면 권한 없는 사용자가 파일의 소유자 또는 그룹의 더 높은 권한으로 실행되는 프로그램을 실행할 수 있습니다. 그러나 잘못 사용하면 권한 없는 사용자가 관리자만 수행해야 하는 작업을 수행할 수 있으므로 보안 위험이 발생할 수 있습니다. 따라서 SUA에서는 이 메커니즘을 기본적으로 지원하지 않습니다. 대신 setuid나 setgid 비트 세트로 파일을 실행하려고 하면 SUA에서 파일을 실행하지 않고 ENOSETUID 오류 코드를 반환합니다.
UNIX 기반 응용 프로그램용 하위 시스템의 setuid 설치 고려 사항
표준 POSIX 동작이 필요한 응용 프로그램을 사용하는 경우 setuid 또는 setgid 비트 세트로 파일을 실행하도록 SUA를 구성할 수 있습니다. 이런 방식으로 SUA를 구성할 경우 프로세스에서 setuid 또는 setgid 비트 세트가 있는 파일을 실행하면 SUA에서 파일의 소유자 또는 그룹에 할당된 권한으로 프로세스의 로컬 보안 토큰을 구성합니다. 토큰은 로컬이므로 네트워크의 다른 컴퓨터에서 인식할 수 없습니다. 예를 들어 Domain Administrators 그룹의 구성원이 파일을 소유한 경우에도 프로세스가 Microsoft® Windows® 네트워킹을 통해 도메인의 다른 컴퓨터에 트러스트된 액세스를 할 수 없다는 의미입니다. 대신 프로세스가 실행되는 컴퓨터에만 권한이 적용됩니다.
예를 들어 프로세스에서 setuid 비트가 설정되고 Domain Administrators 그룹의 구성원이 소유한 프로그램 파일을 실행할 수 있습니다. 해당 프로그램에서 도메인 사용자의 암호를 변경하려고 하면 실패하는데, 프로세스의 보안 토큰이 로컬이어서 도메인의 다른 시스템에서 인식할 수 없기 때문입니다. 그러나 프로그램에서 로컬 사용자의 암호를 변경하려고 하면 성공합니다. 일반적으로 로컬 컴퓨터의 Administrators 그룹에 속하는 Domain Administrators 그룹의 구성원이 파일의 소유자이기 때문입니다. setuid 또는 setgid 비트 세트로 파일을 실행하도록 SUA를 구성하는 방법에 대한 자세한 내용은 UNIX 기반 응용 프로그램에 대한 유틸리티 및 SDK(소프트웨어 개발 키트) 다운로드 패키지와 함께 제공되는 도움말 파일을 참조하십시오.
setuid(2), setgid(2) 및 chroot(2) 기능을 사용하려면 프로세스에 시스템 계정, 로컬 도메인의 관리자 계정 또는 보안 도메인의 관리자 계정으로 다시 매핑되는 유효한 UID가 있어야 합니다. 로컬 관리자 계정은 UID 또는 GID를 같은 도메인의 다른 ID로만 변경할 수 있습니다.
chown(1), chmod(1) 및 chgrp(1)의 경우 다른 사용자 또는 그룹이 소유한 파일에서 make 작업을 수행하거나 다른 사용자가 소유한 파일에 대한 사용 권한을 수정하려면 계정에 Windows 권한 SE_BACKUP 및 SE_RESTORE가 있어야 합니다. 일반적으로 이러한 사용 권한은 관리자 및 백업 운영자 계정에 속합니다.