macOS 로그인 루트와 다윈 터미널 루트의 차이점


5

macOS 11.13의 최근 주요 보안 결함. [1,2]는 root계정을 활성화하지 않는 일반적인 조언을 설정했습니다 . 그러나 어떤 root계정이 논의되고 있는지에 대해 약간 혼란스러워했습니다 .

Darwin 셸에는 root계정이 나열되어 있고 소유 한 것으로 나열된 많은 파일과 디렉토리 root가 있지만 macOS에는 사용할 수있는 로그인 계정이 없습니다 root.

root터미널에있는 파일의 기존 소유자로 표시된 계정과 (비활성화 된) root로그인 계정 의 차이점은 무엇입니까 ?

답변:


4

루트 사용자 (UID 0) 모든 유닉스 나 유닉스 계열 운영체제에 존재합니다. Unix 운영 체제의 모든 프로세스는 시스템 프로세스, 데몬, 서비스 또는 사용자 시작 응용 프로그램과 독립적으로 유효한 사용자 / UID로 실행해야합니다. 모든 기본 시스템 프로세스는 UID 0 (루트)에서 실행되며 모든 시스템 관련 파일은 해당 사용자가 소유합니다. 보안상의 이유로 일부 프로세스는 수퍼 유저 root 보다 적은 권한으로 다른 "사용자"로 실행되고 있습니다. 이러한 사용자는 웹 서버, 데이터베이스, 창 서버 등과 같은 서비스를 시작하기위한 목적으로 만 사용됩니다. 즉, Unix (또는 macOS)에 구성된 모든 사용자가 "실제"사용자는 아닙니다. 실제로 대부분의 시스템 사용자는 대화식으로 로그인 할 수 없습니다.

예를 들어 웹 서버 (nginx, apache, ...)는 UID 0 (= root ) 에서 실행되는 스크립트에 의해 시작됩니다 . 나중에 웹 서버 프로세스는 특정 UID에 대한 권한을 떨어 뜨립니다 (이 경우에는 사용자 www 일 수 있음 ). www 는 실제 사용자가 아니며 대화식으로 시스템에 로그인하는 데 사용할 수 없습니다.
(시스템) 사용자를 "비활성화"하는 두 가지 방법이 있습니다.

  • 사용자 쉘을 / bin / false 또는 유효하지 않은 쉘로 설정하십시오.
  • 사용자 암호를 비활성화하여 유효하지 않거나 비어 있거나 특정 값으로 설정하십시오.

macOS AFAIK에서 유효하지 않은 사용자는 빈 비밀번호와 로컬 OpenDirectory 서버에 설정된 특정 속성을 갖습니다.

일반적으로 "유효한 사용자입니까?"와 같은 요청의 경우 macOS의 OpenDirectory 서비스는 요청 된 사용자를 간단하게 검사하여 true (사용자는 로그인 가능) 또는 false (사용자는 로그인 할 수 없음)를 반환합니다.
Apples 버그는 사용자의 유효성 을 검사하는 것이 아니라 활성화 로 설정 하는 것 같습니다 . 이미 활성화 된 계정에서는 효과가 없었지만 비활성화 된 계정은 유효한 활성화 된 계정이되었습니다. 비활성화 된 사용자에게는 비밀번호가 없으므로 빈 비밀번호는 superuser / root 로 로그인하는 유효한 옵션으로 허용됩니다 .


그것은 이러한 맥락에서, 그게 무슨 뜻 이죠 dscl . list /Users UserShell제공 root /bin/bash(내가 가지고 있지만 그것에 대해 대화 형 로그인 설정 없음)?
orome

@orome 즉, root사용자가 활성화 된 경우 /bin/bash셸로 설정됩니다. sudo /usr/bin/dscl . -create /Users/root UserShell /usr/bin/false추가 보안을 위해 변경하는 데 사용하십시오 .
nohillside

@patrix : 그리고 바로 쉘 변경하는 것이 일을 rout얻을 것이다 경우 올바른이 가능했다 (하지만 가능하지 않습니다)?
orome

@orome 여기서 또 어떤 영향을받을 것으로 예상됩니까?
nohillside

@patrix : 내가 괄호로 물어 본 것. 답이 비밀입니까?
orome

3

파일 소유권은 사용자가 로그인 할 필요가 없습니다. 운영 체제를 실행하는 파일은 일반적으로 루트가 소유하며 일부 인증 형식이 필요한 설치 프로세스에 의해 배치됩니다. 또한 운영 체제는 루트 이외의 프로세스를 실행하는 다른 사용자를 사용합니다. 이러한 사용자는 일반적으로 셸을로 설정하고 /bin/false로그인 할 수 없으며 자신이 소유 한 파일을 생성 할 수 있습니다.

시스템 및 해당 쉘의 사용자를 나열하려면 다음을 수행하십시오.

dscl . list /Users UserShell

시스템에서 루트 또는 사용자가 소유하지 않은 파일을 찾으려면 다음을 수행하십시오.

sudo find -x / ! \( -user root -o -user "$(id -un)" \) -exec ls -ld {} +

(옆의 무리에서 첫 번째 명령 목록 /usr/bin/false사용자) : _mbsetupuser /bin/bash, _uucp /usr/sbin/uucico, root /bin/bash,와 Rax /bin/bash.
orome
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.