「cron」に使用される「-p」とは何ですか?

「cron」に使用される「-p」とは何ですか?

存在するクローンマンページ(親友)

-p     Allows Cron to accept any user set crontables.

私はデーモンが、およびで定義されたcronジョブをcron暗黙的に検索して実行することを理解しています。/etc/crontab/etc/cron.d/*/var/spool/cron/cronstabs/*

それは何の-pために使用されますか?

cron上記のファイル以外の場所に保存されているcrontabファイルで定義されているcronジョブを検索して実行するように明示的に指示しましたか?

またはコピー上記以外の場所にcrontabファイルを保存しますか?

Debianまたはその派生製品にcronオプションがありますか-p-pUbuntuのマンページで見つかりませんでした。cron

ありがとうございます。

答え1

CAVEATSConfidant のマニュアルページの一部は次のように述べていますcron(8)(強調表示)。

すべてのcrontabファイルは通常のファイルまたは一般ファイルへのシンボリックリンクである必要があり、所有者以外は誰も実行または書き込みできません。 この要件は、-p オプションを使用して無視できます。 crond コマンドラインから。

だからはい最も目立つ場所ではありませんが、実際にはマニュアルページに文書化されています。

答え2

良い質問。マニュアルページには文書化されていないようです。ソースコードを見ると、-pPermitAnyCrontabが設定されていることがわかります。https://github.com/cronie-crond/cronie/blob/master/src/cron.c#L703

        case 'p':
            PermitAnyCrontab = 1;

順番に使用https://github.com/cronie-crond/cronie/blob/40b7164227a17058afb4f3d837ebb3263943e2e6/src/database.c#L89

crontabファイルの状態はそれほど難しくありませんcron(非正規ファイル、他の所有者を持つことができ、400以外のモードを持つことができ、1以外のリンク数を持つことができます)。

if (PermitAnyCrontab == 0) {
    if (!S_ISREG(statbuf.st_mode)) {
        log_it(uname, pid, "NOT REGULAR", tabname, 0);
        close(crontab_fd);
        return (-1);
    }
    if ((statbuf.st_mode & 07533) != 0400) {
        log_it(uname, pid, "BAD FILE MODE", tabname, 0);
        close(crontab_fd);
        return (-1);
    }
    if (statbuf.st_uid != ROOT_UID && (pw == NULL ||
            statbuf.st_uid != pw->pw_uid ||
            strcmp(uname, pw->pw_name) != 0)) {
        log_it(uname, pid, "WRONG FILE OWNER", tabname, 0);
        close(crontab_fd);
        return (-1);
    }
    if (pw && statbuf.st_nlink != 1) {
        log_it(uname, pid, "BAD LINK COUNT", tabname, 0);
        close(crontab_fd);
        return (-1);
    }
}

cronieには明らかに存在しますが、Vixie Cronにはそのような機能はありません(https://github.com/svagner/vixie-cron)

関連情報