O que é '-p' usado para 'cron'?

3

Na página de manual do cron (cronie)

-p     Allows Cron to accept any user set crontables.

Aprendi que o cron daemon procurará e executará implicitamente as tarefas cron definidas em /etc/crontab , /etc/cron.d/* e /var/spool/cron/cronstabs/* .

Para que -p é usado?

É para informar explicitamente a cron para procurar e executar as tarefas cron definidas em um arquivo crontab que é armazenado em algum lugar diferente dos mencionados acima?

Ou é para copiar um arquivo crontab armazenado em algum lugar diferente dos mencionados acima para um dos lugares mencionados acima?

O cron no Debian ou seus derivados tem a opção -p ? Eu não encontro -p na manpage de cron no Ubuntu.

Obrigado.

    
por Tim 01.11.2018 / 23:55

2 respostas

6

A seção CAVEATS da página cron(8) man do cronie diz (ênfase minha):

All crontab files have to be regular files or symlinks to regular files, they must not be executable or writable for anyone else but the owner. This requirement can be overridden by using the -p option on the crond command line.

Portanto, é documentado na página man, embora não no local mais óbvio.

    
por 02.11.2018 / 00:29
4

Boa pergunta. Não parece estar documentado na página man. Olhando para a fonte, vemos -p conjuntos PermitAnyCrontab, consulte link

        case 'p':
            PermitAnyCrontab = 1;

Que por sua vez é usado link

Torna cron menos exigente sobre o estado do arquivo crontab (pode ser um arquivo não regular, pode ter um proprietário diferente, pode ter um modo que não seja 400, pode ter uma contagem de links diferente de 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);
    }
}

Embora esteja claramente presente no cronie, esse recurso não está presente no Vixie Cron ( link )

    
por 02.11.2018 / 00:08

Tags