비밀번호 소스코드

비밀번호 소스코드

보려고 해요passwd 및 gpasswd 프로그램의 소스 코드. 이러한 도구는 실행을 성공적으로 완료하기 위해 0으로 설정된 유효한 UID를 확인합니다. 하지만 저는 C 멍청한 놈이고 프로세스가 UID == 0으로 실행되는지 확인하는 코드 줄을 찾을 수 없습니다. 어떤 조언이나 해결책이라도 감사하겠습니다.

답변1

"shadow-utils" 구현을 언급하는 경우 passwd테스트를 찾을 수 있습니다.여기:

    /*
     * The program behaves differently when executed by root than when
     * executed by a normal user.
     */
    amroot = (getuid () == 0);

에서 gpasswd테스트는 다음 두 단계로 정의됩니다.UID가 저장됨:

    /*
     * Make a note of whether or not this command was invoked by root.
     * This will be used to bypass certain checks later on. Also, set
     * the real user ID to match the effective user ID. This will
     * prevent the invoker from issuing signals which would interfere
     * with this command.
     */
    bywho = getuid ();

그런 다음amroot거시적인:

/* Indicate if gpasswd was called by root */
#define amroot  (0 == bywho)

관련 정보