註銷後 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,我意識到了問題:我的主目錄已加密。當然,只有在我登錄後才能訪問該目錄。
回答這個問題是因為只編輯你的問題以將答案內聯是不好的形式(真的,只要回答你自己的問題,如果是善意的就可以了)。
我遇到了類似的問題 - 通過 cron 開始的作業在前幾次似乎可以工作,但後來失敗了。這些症狀都可以追溯到無法訪問使用者的主目錄和其中的文件。相同的腳本和設置在以前的 Ubuntu 機器上執行良好。
答案是肯定的,如果你在 Ubuntu 安裝過程中選擇加密你的 $HOME 目錄,你會發現 cron 作業將無法訪問它下面的文件,除非你碰巧手動登錄機器導致文件要解密並保持掛載的系統。我對那個選項說是,因為這聽起來是個好主意,但我並沒有堅定地接受它。
我要採用的解決方案是不加密我的主目錄;這意味著我必須從中刪除加密。看起來這是一個小心的過程,將所有相關內容移出文件夾,解除安裝它,然後將它們全部移回 - 不愉快。
我為此遵循的基本過程如下。注意:在執行之前要非常小心並通讀所有步驟,尤其是最後的步驟,因為我懷疑一旦您解除安裝了 ecryptfs,要恢復舊的加密主文件夾將非常棘手。如果您不確定自己在做什麼,請不要嘗試這樣做,因為數據失去的風險是非常真實的。我只是繼續前進,因為我知道我有備份並且可以輕鬆重新安裝。
- 添加一個新使用者
fixer
(adduser
因為你需要以其他人的身份登錄才能移動你的主目錄),並給他們 sudo 權限- 使用 sudo,創建一個新文件夾
sudo mkdir /home/chrisc.unencrypted
以將主目錄的內容傳輸到- 使用 .將我的主目錄的內容複製到新的未加密文件夾中
rsync -aP /home/chrisc /home/chrisc.unencrypted
。確保所有隱藏文件也已移動(例如 .bash_profile 等)- 刪除 /home/chrisc.unencrypted/.ecryptfs 文件夾
- 註銷(並可能重新啟動,因為您需要解除安裝加密的 /home/chrisc 文件夾)
- 再次登錄
fixer
- 用於
sudo su
以 root 身份執行- 檢查內容是否
/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 之前有效。