Mac OS에서 이전 인증을 기억하도록 만드는 방법 내 실행 파일에서

Mac OS에서 이전 인증을 기억하도록 만드는 방법 내 실행 파일에서

나는 내 맥북의 시스템 시간을 수동으로 변경할 수 있는 작은 유닉스 실행 파일을 작성하고 있습니다. 물론 비밀번호가 필요하므로 system() 함수를 사용하여 터미널과 상호작용하고 echo 및 sudo를 사용하여 날짜를 변경합니다.

아래를 참조하세요:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {

    // Retrieve password:
    printf("Enter Sudo Password:\n");

    char *pswrd;
    pswrd = getpass("Password: ");
    char strA[512];

    // Instruction to manually change the date:
    char *strA1 = "echo \"";
    char *strA2 = "\" | sudo -S date 020821002014";

    // Stitch fields into one string:
    strcat(strA, strA1);
    strcat(strA, pswrd);
    strcat(strA, strA2);

    // Run string in Terminal:
    system(strA);
}

테스트할 Unix 실행 파일을 만들 수 있습니다.

터미널 라인에서는 다음과 같습니다.Sudo date 020821002014

> 어쨌든 내 질문은 다음과 같습니다.

나는 실행 파일을 실행할 때마다 비밀번호를 입력하는 것을 좋아하지 않습니다. 관리자 암호를 한 번 입력하고 나중에 MacBook에서 실행 파일을 인식하도록 하여 실행 파일을 클릭하고 날짜를 쉽게 변경할 수 있도록 제안하는 사람이 있습니까?

아, 보통 비밀번호가 필요하기 때문에 날짜만 선택했는데, 이는 확실히 다른 관리자 지침으로 일반화될 수 있습니다.

내가 고려한 것들:

  1. 루트 수퍼유저를 사용하세요. 하지만 너무 과도한 것 같습니다. 다른 방법이 있어야 합니다.
  2. .c 코드에 비밀번호를 직접 작성하지만 이는 개략적으로 들리며 여러 사용자가 쉽게 확장할 수 없습니다.

답변1

또 다른 방법(비밀번호를 남겨두고 이를 다양한 프로세스 목록 및 진단 도구에 노출하지 않고)은 명령 실행 만 허용하는 NOPASSWD항목(아마도 정확한 명령)을 구성 파일에 설정하는 것입니다 .sudodatedate

fixmeyourusernamehere ALL=(root) NOPASSWD: /bin/date 020821002014

파일 맨 아래에 이를 설정하면 /etc/sudoers( 로 편집하는 것이 더 좋지만 sudo visudo) 사용자는 fixmeyourusernamehere"sudo date 020821002014"를 실행할 수 있어야 합니다 without a password, but not any other commands (unless the(sudo 구성을 통해 다른 명령을 사용할 수 있습니다).

관련 정보