2011-10-22 3 views
0

/usr/bin/passwd가 set-UID 프로그램이 아닌 경우에도 일반 사용자가 자신의 암호를 변경할 수있게하려면 어떤 기능이 필요합니까?유닉스 passwd 필수 기능

감사합니다.

+0

이 퀴즈입니까?/usr/bin/passwd에서 sudo를 하시겠습니까? – ennuikiller

답변

0

시스템의 보안을 파괴하지 않으려면 불가능합니다.

"passwd"유틸리티가 일반 사용자로 작업을 수행 할 수 있으면 모든 사용자가 자신의 버전을 작성하여 다른 사용자의 비밀번호를 변경할 수 있습니다. (즉, 소스 코드를 유틸리티로 가져 와서 현재 암호를 묻지 않고 컴파일하고 실행하면됩니다.)

루트로 실행되는 "암호 데몬"을 만들 수 있다고 가정합니다. 소켓을 사용하여 암호 변경 요청을 처리합니다. 왜 당신이 set-uid 대신/usr/bin/passwd를 쓰는 것이 저를 뛰어 넘는 지 알고 싶습니다. 보안 함의는 동일합니다.

하지만 어떤 작업을 수행하든 관계없이 일부 신뢰할 수있는 프로세스에서만 암호 데이터베이스를 변경할 수 있습니다. 그렇지 않으면 아무도 다른 사람의 암호를 변경할 수 있습니다. 어떤 종류의 암호는 다중 사용자 OS의 목적에 어긋납니다.

0

루트 권한으로 실행해야합니다. passwd은/etc/passwd 및/etc/shadow에 대한 읽기/쓰기 액세스가 필요하며 루트 만 직접 조작 할 수있는 파일입니다.

0

/etc/passwd,/etc/shadow 및/또는 기타 다양한 파일 (인증 구성 방법에 따라 다름)을 수정할 수 있어야합니다.

그래서 CAP_DAC_OVERRIDE이면 충분하다고 생각되지만, CAP_DAC_OVERRIDE가있는 상자를 루트하는 것은 쉽습니다. 왜냐하면 어떤 바이너리도 대체 될 수 있기 때문입니다 (예 : 루트 cron-jobs에 의해 자주 실행되는/bin/sh).

일부 시스템에서는 이미 데몬이 사용 되었기 때문에 암호를 변경하지 않아도됩니다. 대부분의 분산 인증 시스템 (nis + 등)