ログアウトすると、Cronは自分のホームディレクトリにアクセスできなくなります

ログアウトすると、Cronは自分のホームディレクトリにアクセスできなくなります

cronを使用すると非常に奇妙な問題が発生しました。これまで私はそれを次のようにまとめました。

次の単純なbashスクリプトを作成しました/home/user1/cron_dir/cron.sh

#!/bin/bash
echo "Success"

user1として次のcrontabを作成しました。

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

これは期待どおりにインストールされ実行されます(私のローカルメールのcronから「成功」メッセージを受け取ります)。ただし、user1アカウントからログアウトしてcronジョブが実行されるまで数分待ってから、再度ログインしてローカルメールを確認すると、次のメッセージが表示されます。

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

編集する:garethTheRedのおかげで問題を実現しました。私のホームディレクトリが暗号化されました。もちろん、ログインしている場合にのみディレクトリにアクセスできます。

答え1

答えを挿入するために質問を編集するのは間違った形式なので、この質問に答えることです(実際に誠意を持って答える場合は、自分の質問に答えるだけで問題ありません)。

同様の問題がありました。 cronを介して開始されたタスクは、最初の数回は動作しているように見えましたが、失敗しました。これらの症状はすべて、ユーザーのホームディレクトリとその中のファイルにアクセスできないために発生します。以前のUbuntuボックスでも同じスクリプトと設定が正しく機能しました。

答えは「はい」です。 Ubuntuのインストール中に$ HOMEディレクトリを暗号化することを選択した場合は、手動でシステムにログインしてファイルを削除しない限り、cronジョブはその下のファイルにアクセスできません。削除されます。システムは復号化され、インストールされたままになります。私はこの選択が良い考えのように聞こえたのでこれに同意しましたが、それに専念しませんでした。

私が望む解決策は、ホームディレクトリを暗号化しないことです。つまり、ホームディレクトリから暗号化を削除する必要があります。関連するすべてのアイテムをフォルダから移動して削除し、すべてを再度移動する慎重なプロセスのように見えますが、これは楽しくありません。

このために私が従う基本的なプロセスは次のとおりです。注:実行する前に、非常に慎重にすべての手順をお読みください。特に、最後のエントリは、ecryptfsが削除された場合、以前の暗号化されたホームフォルダを復元するのは非常に難しいと思うからです。現在実行中の作業が不明な場合は、データ損失のリスクが非常に高いため、これを試みないでください。バックアップがあり、簡単に再インストールできることがわかったので、続行しました。

  • fixeradduser以下を使用して新しいユーザーを追加します。
  • sudo mkdir /home/chrisc.unencryptedsudoを使用して、ホームディレクトリの内容を次のフォルダに転送する新しいフォルダを作成します。
  • .を使用して、マイホームディレクトリの内容を暗号化されていない新しいフォルダにコピーしますrsync -aP /home/chrisc /home/chrisc.unencrypted。隠しファイルもすべて移動されていることを確認してください(例:.bash_profileなど)。
  • /home/chrisc.unencrypted/.ecryptfs フォルダーの削除
  • ログアウト(暗号化された/home/chriscフォルダをアンマウントする必要があるため、再起動することもできます)
  • もう一度ログインしてくださいfixer
  • sudo suルートとして実行
  • 内容が/home/chrisc.unencrypted正しいことを確認してください。次のいくつかの手順を実行すると、元のホームフォルダを表示できないため、これは非常に重要です。
  • 古い(暗号化された)ホームディレクトリの名前を変更してくださいmv /home/chrisc /home/chrisc.old。フォルダを使用していないことを確認するには、最初に再起動する必要があります(そうしないと、デバイスの使用中にメッセージが表示され、名前を変更できなくなります)。
  • 暗号化されていないホームフォルダの名前をユーザーのデフォルトフォルダに変更します。mv /home/chrisc.unencrypted /home/chrisc
  • ecryptfs削除ツールを使用してくださいapt-get remove ecryptfs-utils libecryptfs0。これを行わずにchriscとしてログインすると、空のホームディレクトリが表示されます(まだ暗号化されたホームディレクトリをマウントし、暗号化されていない実際のホームディレクトリを隠しているかのように)。これを削除し、暗号化されていない実際の/home/chriscを表示するには、再起動する必要がありました。
  • 元のユーザーとして再度ログインして確認します。

ecryptfsの構成フォルダーを削除するか、「chriscとしてログインしたら/home/chrisc/.Privateで使用可能なecryptfsボリュームをマウントします」というユーザー固有の構成がある可能性があります。これはおそらくecryptfsを削除する必要はありません。

chrisc.old新しいホームフォルダに正しいコンテンツが含まれていないと思われる場合は、移動を元に戻して暗号化されていないホームフォルダだけでなく、再度移動して暗号化されたchriscホームフォルダを復元できますchrisc.unencrypted。ただし、これはecryptfsを削除するまでのみ機能します。

関連情報