Linux
使用 systemd 和 rc-local 伺服器,chmod 不會返回這樣的文件或目錄
我在重新啟動後重置系統文件的權限時遇到問題。我正在設置 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/vmnet0
and/dev/vmnet1
文件。有任何想法嗎?
1.) 您不需要在諸如 rc-local.service 之類的 systemd 單元中使用 sudo,所有命令都已經以 root 身份執行。事實上,除非你有充分的理由,否則永遠不要在 systemd 服務中使用 sudo。
2.) 很可能 rc-local.service 在載入創建這些設備文件的驅動程序的服務之前(或至少同時)執行。這是一個排序問題。您最好創建一個新的 systemd 服務單元,然後啟動它
After=vmware-networks.service
(假設這是載入驅動程序的 VMware 服務的名稱)