Quais são as permissões do sistema de arquivos para uma tarefa cron?

3

Estou trabalhando em um servidor de produção. Ele tem algumas tarefas diárias do cron e aqui estão as permissões do sistema de arquivos:

cron.daily$ ls -Al
total 24
-rwxr-xr-x 1 root root  332 Dec  3 10:33 0yum-daily.cron
-rwxr-xr-x 1 root root 2239 Jun  9  2014 certwatch
-rwxr-x--- 1 root root  953 Aug 29  2015 gdrive-backup
-rwx------ 1 root root  180 Jul 31  2013 logrotate
-rw-r--r-- 1 root root  618 Mar 17  2014 man-db.cron
-rw-r----- 1 root root  192 Jan 26  2014 mlocate

Todos, exceto um dos trabalhos, são do CentOS ou do provedor de hospedagem; enquanto um trabalho é nosso. As permissões espalham o espectro.

Nosso trabalho é backup-gdrive, e tem nomes de usuário e senhas codificados. Não achamos apropriado dar ao mundo acesso de leitura a ele.

Quais são as permissões que devem estar em um cron job quando estão no sistema de arquivos?

Aqui está o gato do crontab, que (eu acho) mostra que não há nada especial acontecendo:

$ cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

$

Uma pergunta relacionada é Quais são as permissões de tempo de execução de um trabalho cron? , mas discute as credenciais do usuário o trabalho é executado, e não as permissões do sistema de arquivos.

    
por jww 29.03.2016 / 15:31

1 resposta

2

No CentOS, o cron job diário é executado como

/usr/bin/run-parts /etc/cron.daily

run-parts é um script de shell. Ele examina o conteúdo de seu argumento (um diretório), filtra itens como arquivos que terminam em ~ , .swp , .rpmsave e diretórios, depois, para cada arquivo que passa no teste if [ -x $i ] , que é, executável pelo root, ele executa o arquivo.

Assim, todos os arquivos em /etc/cron.daily com qualquer bit x ativado serão executados. Você pode definir as permissões nesses arquivos para negar acesso de leitura a todos, se desejar; Não importa a raiz. Se você tiver senhas inseridas nos scripts que podem ser passados como argumentos para comandos, observe que todos os arquivos /proc/*/cmdline são publicamente legíveis, para que todos os usuários possam ver todos os comandos e argumentos enquanto estão sendo executados.

    
por 29.03.2016 / 17:02