많은 책에서는 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
"레거시" 애플리케이션(오픈 카탈로그로 변환되지 않은 애플리케이션)에만 사용할 수 있습니다.