Mac OSで以前の認証を覚えるようにする方法

Mac OSで以前の認証を覚えるようにする方法

私はMacBookのシステム時間を手動で変更できる小さなUnix実行可能ファイルを書いています。もちろん、パスワードが必要なので、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設定では他のコマンドを使用できます)。

関連情報