Por que o / etc / crontab definiria o ambiente HOME = / in? [fechadas]

0

Eu descobri que o sistema crontab /etc/crontab em muitas distribuições baseadas em RedHat (EL / Fedora) contém a linha:

HOME=/

Esta configuração também parece ser mostrada em muitos documentos / exemplos através da Internet, e foi obviamente assim por muitos anos antes de aparentemente ser removida no 1.10-34 versão do RPM em 2010 . Talvez exista uma configuração similar em instalações baseadas em Debian / outros, se os leitores tiverem conhecimento definitivo de distribuições com a mesma configuração, adicione comentários e expandirei o texto aqui.

A pergunta que estou fazendo aqui é:
Quais são as boas razões técnicas para configurar o HOME para a raiz do sistema de arquivos no crontab do sistema? Estou interessado apenas em teorias técnicas, ou preferencialmente históricas razões, por que essa configuração existiu por muitos anos em algumas distribuições, não em opiniões. Eu simplesmente quero estar ciente de que problemas eu poderia estar causando a remoção desta configuração em distribuições mais antigas onde é padrão - presumivelmente, essas razões não existem mais nas versões upstream em que foram removidas, ou talvez quem removeu não estava ciente dos possíveis problemas isso corrige.

Eu recentemente resolvi um problema removendo este HOME=/ em um sistema EL6 e minha pesquisa sugeriu que essa configuração tem sido padrão em muitos sistemas por muitos anos. Parece-me que isso provavelmente causaria mais problemas do que resolvidos, por isso fiquei interessado em quaisquer situações com as quais pudesse ter ajudado e que eu pudesse me abrir removendo.

Como pano de fundo, o problema era onde um comando cron coilde mysqladmin parecia começar a ignorar o ~/.my.cny - parece que uma instalação ou atualização diferente do MySQL começou usando $HOME/.my.cnf em vez do .my.cnf em casa diretório de /etc/passwd . Eu adiciono isso apenas no caso de alguém mais ter um problema semelhante e talvez encontrar uma resolução mais rápida com essa informação.

    
por DanSut 05.10.2016 / 19:01

1 resposta

1

Os daemons geralmente executam um chdir("/") ou equivalente, de modo que não são inicializados em algum diretório (possivelmente montado remotamente) e, portanto, desnecessariamente complicam a un ou re-montagem do dito diretório. O HOME=/ de tarefas agendadas provavelmente emula isso, de modo que tarefas aleatórias (possivelmente de execução longa) não sejam desnecessariamente em um diretório em necessidade urgente de desmontar ou montar novamente. (Concedido se ~/.my.cnf for necessário e estiver em um diretório montado remotamente, então isso é uma fragilidade desnecessária em que quando a rede ou o sistema remoto ficar inoperante, essa tarefa cron ficará infeliz.)

No OpenBSD, o arquivo root crontab realmente define as coisas para

HOME=/var/log

por padrão. Se você quiser testar o que é o diretório pessoal, porque não tem certeza de onde a configuração está vindo ou escreve um trabalho cron que lhe diz (e certifique-se de removê-lo antes do spam do cron):

* * * * * /bin/pwd

Além disso! A qualificação completa dos caminhos para os arquivos de configuração pode ajudar a evitar que um arquivo de configuração incorreto seja capturado devido a uma configuração de ambiente que vazou em ou de um arquivo local em um diretório local.

(Em uma nota histórica, os arquivos para root costumavam estar em / e não /root em alguns tipos de unix e em qualquer lugar poderiam ter sido montados de outro lugar; os discos eram muito mais caros de volta no dia ...)

    
por 05.10.2016 / 19:36

Tags