Mac OS X가 /usr/bin/passwd에 대해 uid 비트를 설정하지 않는 이유는 무엇입니까?

Mac OS X가 /usr/bin/passwd에 대해 uid 비트를 설정하지 않는 이유는 무엇입니까?

많은 책에서는 setuid 비트 사용의 예에 passwd, at 등이 포함되어 있음을 나타냅니다. 그러나 mac os x el Capitan에서는 /usr/bin/passwd에 이 비트가 설정되어 있지 않습니다.

/etc/passwd 파일을 어떻게 변경합니까?

답변1

OSX에서는 /usr/bin/passwd비밀번호 파일이 직접 작성되지 않습니다. 대신에 다음을 사용합니다."디렉토리 시스템"예를 들어 데이터베이스 또는 LDAP 서버(예: 네트워크 자격 증명용)입니다. 이를 위해 권한 있는 프로세스와 통신합니다.

프로그램의 매뉴얼 페이지passwd(1)좋은 출발점입니다. 그것은 나열passwd(5)(파일 형식) 기재

프로세스는 일반적으로 getpwent(3) 함수 계열 중 하나를 사용하여 사용자 기록을 찾습니다. Mac OS X에서 이 기능은 다음과 동일합니다.디렉토리 서비스(8)/etc/master.passwd 파일을 읽고 사용자 계정에 대한 다른 디렉터리 정보 서비스를 검색하는 데몬 프로세스입니다.

DirectoryService는 다음과 같이 지적합니다.그것오래됐으니 꼭 읽어보세요오픈 디렉토리 d(8), 이는 다시 다음을 의미합니다.

Open Directory는 Mac OS X 액세스의 기초를 형성합니다.모든 신뢰할 수 있는 구성 정보(사용자, 그룹, 설치, 호스팅된 데스크탑 데이터 등). 이를 통해 Apple 및 타사 모듈을 통해 거의 모든 디렉토리 시스템을 사용할 수 있습니다.

그리고

Open Directory Server는 Mac OS X 클라이언트, Mac OS X 서버 및 Darwin의 일부인 OpenLDAP를 사용합니다. OpenLDAP는 디렉토리 기반 정보를 두 장치 모두에 제공하기 위한 강력하고 확장 가능한 플랫폼을 제공합니다.독립적인그리고 네트워크 시스템.

passwd따라서 궁극적으로(독립형 시스템의 경우에도) 자격 증명이 저장된 LDAP 서버와 통신하는 것으로 보입니다 . 출력을 보면 ps그럴 수도 있을 것 같습니다.

/usr/libexec/opendirectoryd

하지만passwd 할 수 있는update /etc/passwd, 실제로는 사용자 계정에 대해 이 작업을 수행하지 않습니다. 그것은 사용 /etc/passwd하고/etc/pwd.db"레거시" 애플리케이션(오픈 카탈로그로 변환되지 않은 애플리케이션)에만 사용할 수 있습니다.

관련 정보