Linux에서 실행 파일을 실행하면 일반적으로 현재 사용자 및 그룹 ID로 실행됩니다. 그러나 다른 사용자(예:루트)로 해당 파일을 실행해야 하는 경우가 있습니다. 사용자 계정을 전환하는 대신 setuid를 사용하여 현재 사용자가 아닌 파일 소유자로 실행 파일을 실행할 수 있습니다. 여기에서는 setuid가 작동하는 방식과 사용자가 에스컬레이션된 권한으로 실행 파일/바이너리를 실행할 수 있는 방법을 설명합니다.
setuid는 어떻게 작동합니까?
Setuid는 실행 시 사용자 ID 설정을 나타냅니다. . 루트 사용자가 만든 "identity"라는 실행 파일이 있다고 가정해 보겠습니다. 실행하면 사용자 ID, 그룹 ID 및 사용자 권한으로 실행됩니다. "identity" 파일에 setuid 비트가 설정되어 있으면 실행 시 루트 사용자 및 해당 사용자 권한으로 실행됩니다.
예를 들어 "identity" 파일의 소유권을 먼저 확인하고 루트 사용자의 소유인지 확인할 수 있습니다. 권한 문자열은 또한 사용자, 그룹 및 기타에 대해 설정된 실행 가능(x) 비트를 보여줍니다.
사용자 "john1"은 "identity" 파일을 실행하고 실행 시 프로세스가 됩니다. 프로세스 목록과 같이 "john1" 사용자 이름과 사용자 ID로 프로세스가 생성되어 실행됩니다.
다음으로 루트 사용자로서 "identity" 파일의 setuid 비트를 설정합니다.
chmod u+s /usr/bin/identity
"u"는 setuid 비트(+s)가 사용자에 대해서만 설정되어야 함을 나타냅니다.
소유자의 경우 권한 문자열의 실행 가능한 부분에서 "x"가 "s"로 대체되었음을 알 수 있습니다. 실행 파일에 대해 "s"가 표시될 때마다 setuid 비트가 설정되었음을 의미합니다.
chmod
의 숫자 변형 명령어는 아래와 같이 사용할 수도 있습니다.
chmod 4755 /usr/bin/identity
숫자 권한 문자열에 4를 추가하면 setuid 비트가 포함됨을 나타냅니다.
다음은 "john1"이 "identity" 파일을 다시 실행했을 때 일어나는 일입니다. 실행 중인 프로세스 목록을 보면 "john1"이 아닌 "root" 사용자가 프로세스를 생성하고 실행하는 것을 볼 수 있습니다.
setuid 비트의 중요 사용
대부분의 경우 루트 사용자로 응용 프로그램을 실행하면 안 된다는 전문가의 말을 듣게 될 것입니다. 그러나 특정 파일을 루트 권한으로 실행해야 하는 경우가 있습니다. 예를 들어, passwd
Linux 시스템에 기본적으로 설치되는 유틸리티에는 setuid 비트가 설정되어 있습니다.
이유는 간단합니다. 사용자의 비밀번호 정보는 "/etc/passwd" 및 "/etc/shadow" 파일에 저장되며 "root"만 수정할 수 있습니다. "john1"이 자신의 비밀번호를 변경하려고 할 때 앞서 언급한 두 파일의 정보를 수정할 수 있는 권한이 있어야 합니다. passwd
에 setuid 비트 설정 "john1"이 일시적으로 사용자 암호를 변경하고 두 파일의 정보를 업데이트할 수 있는 루트 권한을 갖도록 합니다.
Setuid 보안 위험
주의하지 않으면 공격자가 setuid 바이너리를 악용하여 시스템을 제어할 수 있습니다. 사용자는 일반적으로 setuid 프로그램, 특히 자신이 아닌 다른 사용자에게 setuid 프로그램을 설치해서는 안 됩니다. 가장 중요한 것은 홈 폴더에 루트 사용자에 대한 setuid 활성화 바이너리가 없어야 한다는 것입니다. 이들은 일반적으로 트로이 목마 또는 맬웨어입니다.
결론
Setuid는 실행 파일에만 설정할 수 있습니다. 마찬가지로 setgid
비트도 설정할 수 있어 그룹의 모든 구성원이 소유자 권한으로 실행 파일을 실행할 수 있습니다.
setuid
및 setgid
비트는 보안에 민감하며 자격을 갖춘 시스템 관리자만 사용해야 합니다.
다음 읽기:
- Linux에서 공유 디렉토리의 파일을 관리하기 위해 고정 비트를 사용하는 방법
- Linux 터미널에서 맞춤법 검사를 수행하는 방법
- Linux에서 파일 검색을 위한 find, Locate, which 및 whereis 명령 사용