É um risco de segurança executar meus trabalhos do crontab como root?

8

Eu tenho alguns trabalhos cron que estou executando - principalmente coisas relacionadas a backup.

Estou tendo que fazer um backup travado como / etc / apache2 / sites / available etc, que exigem acesso root.

Eu tenho algumas perguntas:

Ao executar em um servidor sem cabeça:

  1. Em qual usuário o script é executado (supondo que eu não especifique um usuário na entrada da tarefa cron)?
  2. Posso executar o script de backup como root - ou isso representa uma pergunta de segurança?

BTW, meu servidor está executando o Ubuntu 10.0.4 LTS

user35402
fonte

Respostas:

15

Se você garantiu o acesso suficiente ao script e tomou precauções sensatas, executar algo do roots crontab geralmente não é um risco à segurança.

Mas não execute um script como root que um usuário não root possa editar ou substituir. Isso se aplica aos trabalhos executados a partir do cron, bem como interativamente.

Se esse script incluir outros arquivos, o mesmo se aplicará a eles também.

Em caso de dúvida, use sempre o princípio do menor privilégio. Se você ainda não tiver certeza, sempre poderá fazer perguntas específicas nos fóruns e no IRC.


Sempre existe (quase) uma maneira de executar algo como um usuário não root. Se tudo mais falhar, o uso do sudo para limitar um usuário a comandos específicos também limitará o potencial de causar danos.

Portanto, com o exemplo que você deu do backup de / etc / apache2 / sites-available, esse arquivo é legível por padrão por qualquer pessoa, o que implica que é o acesso ao destino que pode ser gravado somente pela raiz.

Você poderia consertar isso

  • crie um grupo chamado backupadmins (por exemplo)
  • defina o grupo no diretório de destino para backupadmins
  • adicione um usuário chamado backupuser (por exemplo)
  • adicione o usuário backupuser ao grupo backupadmins.
  • torne o diretório gravável pelo grupo backupadmins
  • execute o trabalho cron a partir do crontab do backupuser.
Richard Holloway
fonte
+1 nas instruções úteis e passo a passo. Sua resposta foi extremamente útil. Eu pretendia seguir esse caminho de qualquer maneira, mas como foi a primeira vez que fiz isso, é reconfortante ver que ele está sendo recomendado aqui (e muitas pessoas parecem concordar com sua recomendação).
user35402
BTW, se eu criar o grupo de usuários e o usuário como você sugere, poderei acessar o / etc / apache / sites-available e outras pastas que são (com razão) limitadas apenas ao acesso root ?. Como contornar esse problema?
precisa saber é o seguinte
3

Depende do que os scripts estão fazendo. Se eles estão fazendo o backup das coisas, provavelmente é bom que sejam root - se um usuário mal-intencionado substituir esses scripts, você provavelmente terá problemas maiores.

Se eles fazem coisas estúpidas, como a execução de arquivos encontrados em diretórios, ou qualquer coisa que possa ser influenciada pelo conteúdo dos diretórios da Web, você provavelmente precisará procurar alternativas.

James L
fonte
2

Milhões de trabalhos cron em todo o mundo estão sendo executados como raiz todos os dias (ou em qualquer período que eles estejam programados para executar).

O importante é que as permissões adequadas sejam definidas. Se você estiver executando algo que pode ser gravado por todos, um usuário ou processo malicioso pode mudar o que está fazendo.

Os trabalhos do Cron são executados pelo proprietário do crontab, em geral. Um usuário crontab pode estar dentro, /var/spool/cron/crontabs/usernamepor exemplo. Cronjobs que se encontram em /etc/crontab, /etc/cron.d/ou /etc/cron.hourly(diária, semanal, mensal) vai ser executado por raiz. É importante que a propriedade e as permissões também estejam corretas para esses arquivos crontab.

Pausado até novo aviso.
fonte