Linux

使用 systemd 和 rc-local 伺服器,chmod 不會返回這樣的文件或目錄

  • September 6, 2021

我在重新啟動後重置系統文件的權限時遇到問題。我正在設置 systemd 和 rc-local 服務以在啟動時執行 bash 腳本,該腳本將權限設置回我想要的方式。

我已經成功設置了 systemd 和 rc-local 服務,它們在/etc/rc.local.

我的腳本rc.local如下:

#! /bin/bash
cd /dev/
sudo chmod a+rw vmnet0
sudo chmod a+rw vmnet1

重新啟動後,我注意到/dev/vmnet0並且/dev/vmnet1仍然具有不正確的權限。當我執行時,systemctl status rc-local我注意到它chmod在抱怨它沒有看到/dev/vmnet0/dev/vmnet1文件。返回的確切資訊是:

pam_unix(sudo:session) session opened for user root by (did=0)
chmod: cannot access 'vmnet0': no such file or directory
pam_unix(sudo:session) session closed for user root
root : TTY=unknown ; PWD=/dev ; USER=root ; COMMAND=/usr/bin/chmod a+rw vmnet1
pam_unix(sudo:session): session opened for user root by (uid=0)
chmod: cannot access 'vmnet1': No such file or directory
pam_unix(sudo:session): session closed for user root
rc-local.service:c Control process existed, code=exited, status=1/FAILURE
rc-local.service: Failed with result 'exit-code'.
Failed to start /etc/rc.local Compatibility.

我正在努力弄清楚為什麼以 root 身份執行的腳本看不到/dev/vmnet0and/dev/vmnet1文件。有任何想法嗎?

1.) 您不需要在諸如 rc-local.service 之類的 systemd 單元中使用 sudo,所有命令都已經以 root 身份執行。事實上,除非你有充分的理由,否則永遠不要在 systemd 服務中使用 sudo。

2.) 很可能 rc-local.service 在載入創建這些設備文件的驅動程序的服務之前(或至少同時)執行。這是一個排序問題。您最好創建一個新的 systemd 服務單元,然後啟動它After=vmware-networks.service(假設這是載入驅動程序的 VMware 服務的名稱)

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