Bash

cronjob 中的 bash 腳本無法執行 /sbin/fake-hwclock

  • February 3, 2022

我已經編輯了我的 crontab以定期執行腳本:

sudo crontab -e

它應該以root身份執行以下腳本,該腳本位於已安裝的 USB 上:

* * * * * /mnt/usb0/fake-hwclock-cron.sh

腳本 (1)fake-hwclock-cron.sh然後執行腳本 (2)fake-hwclock以保存目前時間:

#!/bin/sh
echo "$(fake-hwclock save)"

腳本 (2) fake-hwclock(位於*"/sbin/fake-hwclock"*)然後將時間保存到fake-hwclock.data已安裝 USB 上的文件 (3) 中。

使用以下選項自動安裝 USB:

PARTUUID=1c921a37-01 /mnt/usb0 ext4 defaults,auto,users,rw,nofail 0 0

文件權限:

(1) -rwxrwxrwx 1 pi   pi    /mnt/usb0/fake-hwclock-cron.sh
(2) -rwxr-xr-x 1 root root  /sbin/fake-hwclock
(3) -rwxrwxrwx 1 pi   pi    /mnt/usb0/fake-hwclock.data

如果我理解正確,對於文件 (1)fake-hwclock-cron.sh和 (3) fake-hwclock.data,每個使用者都可以讀/寫/執行。對於文件 (2) fake-hwclock,每個使用者都可以讀取/執行。

.. 但是暫時忽略這些權限,作為 sudo 執行的cron 作業fake-hwclock-cron.sh不是也以su權限執行腳本 (1) 嗎?

更令人困惑的是:我可以在 shell 中沒有su權限的情況下執行兩個腳本 (1) / (2),但我不能使用su權限作為 cron 作業執行它們。


那麼,誰能向我解釋為什麼我收到*“權限被拒絕”*錯誤?

/bin/sh: 1: /mnt/usb0/fake-hwclock-cron.sh: Permission denied


PS我希望我已經設法解釋得足夠好;否則請告訴我

根據它的輸出,mount |grep usb0它顯示掛載點是由noexec選項掛載的,它會阻止你只執行腳本,但你可以直接使用 shell 解釋器執行它,例如:

* * * * * sh /path/to/script.sh

對於後面的錯誤*fake-hwclock: not found*,您需要提供完整的fake-hwclock命令。

查看更多關於noexec的資訊。

引用自:https://unix.stackexchange.com/questions/689100