Cron não pode acessar meu diretório inicial quando eu estou desconectado

3

Eu tenho um problema muito estranho usando o cron. Eu destilei até agora:

Eu criei o seguinte script bash simples em /home/user1/cron_dir/cron.sh :

#!/bin/bash
echo "Success"

Como user1 criei o seguinte crontab:

*/1 * * * * sh /home/user1/cron_dir/cron.sh

Isso é instalado e executado conforme o esperado (recebendo uma mensagem "Success" do cron no meu e-mail local). No entanto, se eu sair da minha conta user1, aguarde alguns minutos para executar a tarefa cron, faça o login novamente e verifique meu e-mail local, recebo:

sh: 0: Can't open /home/user1/cron_dir/cron.sh

Editar : Graças ao garethTheRed, percebi o problema: meu diretório pessoal é criptografado. Claro que o diretório só é acessível quando estou logado.

    
por Folli 19.11.2014 / 21:53

1 resposta

1

Respondendo a esta pergunta porque seria ruim apenas editar sua pergunta para colocar a resposta em linha (na verdade, basta responder sua própria pergunta, tudo bem se for feito de boa fé).

Eu tive um problema semelhante - trabalhos iniciados via cron aparecendo para funcionar nas primeiras vezes, mas depois falhando. Todos os sintomas remontam a uma incapacidade de acessar o diretório base e os arquivos do usuário dentro dele. O mesmo script e configuração funcionou bem em uma caixa anterior do Ubuntu.

A resposta é que sim, se você escolheu criptografar seu diretório $ HOME durante a instalação do Ubuntu, você verá que as tarefas do cron não poderão acessar os arquivos nele, a menos que você tenha logado manualmente na máquina para fazer com que o sistema de arquivos seja descriptografado e mantido montado. Eu disse sim a essa opção porque parecia uma boa ideia, mas não estou firmemente comprometida com ela.

A solução com a qual estou indo é não criptografar meu diretório inicial; o que significa que eu tenho que remover a criptografia dele. Parece que é um processo cuidadoso de deslocar todo o conteúdo relevante para fora da pasta, desmontá-lo e mudá-lo de volta - não é agradável.

O processo básico que eu segui para isso está abaixo. NB: Tenha muito cuidado e leia todos os passos antes de segui-los , especialmente os finais, pois suspeito que uma vez que você desinstale o ecryptfs, será muito difícil obter o antigo pasta pessoal criptografada de volta. Se você não tiver certeza do que está fazendo, não tente isso, pois o risco de perda de dados é muito real. Eu só segui em frente porque sabia que tinha backups e poderia reinstalar facilmente.

  • Adicione um novo usuário fixer usando adduser (porque você precisa estar logado como alguém que não seja você mesmo para mudar seu diretório home) e dê a ele direitos sudo
  • Usando o sudo, crie uma nova pasta sudo mkdir /home/chrisc.unencrypted para transferir o conteúdo do seu diretório pessoal para
  • Copie o conteúdo do meu diretório pessoal para a nova pasta não criptografada usando rsync -aP /home/chrisc /home/chrisc.unencrypted . Certifique-se de que todos os arquivos ocultos também foram movidos (por exemplo, .bash_profile, etc.)
  • Remova a pasta /home/chrisc.unencrypted/.ecryptfs
  • Efetuar logout (e possivelmente reinicializar, pois você precisa das pastas criptografadas / home / chrisc a serem desmontadas)
  • Faça login novamente como fixer
  • Use sudo su para ser executado como root
  • Verifique se o conteúdo de /home/chrisc.unencrypted corresponde ao que deveria ser. Isso é muito importante, porque as próximas etapas removerão sua capacidade de ver a pasta inicial original
  • Renomeie a casa antiga (criptografada) usando mv /home/chrisc /home/chrisc.old . Você pode achar que precisa reinicializar primeiro para garantir que nada esteja usando essa pasta (caso contrário, você receberá uma mensagem de dispositivo em uso impedindo a renomeação).
  • Renomeie a pasta base não criptografada para ser a pasta padrão do usuário mv /home/chrisc.unencrypted /home/chrisc
  • Desinstale as ferramentas do ecryptfs usando apt-get remove ecryptfs-utils libecryptfs0 . Se eu não fizesse isso e, em seguida, fizesse o login como chrisc, vi um diretório pessoal vazio (como se ainda estivesse montando o diretório inicial criptografado e ocultando meu diretório inicial real não criptografado). Eu tive que reiniciar para obtê-lo para ser desmontado e o real não criptografado / home / chrisc para ser visível.
  • Faça login novamente como usuário original e verifique

Pode ser possível remover a pasta de configuração do ecryptfs ou que exista uma configuração por usuário em algum lugar que diga "quando você efetuar login como chrisc, monte o volume do ecryptfs disponível em /home/chrisc/.Private". poderia cortar esse link, então você provavelmente não precisaria desinstalar o ecryptfs.

Se a sua nova pasta inicial não contiver as coisas certas, você poderá restaurar a pasta inicial criptografada revertendo as movimentações - tornando chrisc.old be chrisc e a pasta base não criptografada% código%. Mas isso só funcionará até o ponto em que você desinstalar o ecryptfs.

    
por 22.02.2015 / 14:40