我在重新启动后重置系统文件的权限设置时遇到问题。我正在设置 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
和/dev/vmnet1
文件。有任何想法吗?
答案1
1.) 您不需要在 rc-local.service 等 systemd 单元中使用 sudo,所有命令都已经以 root 身份运行。事实上,除非你有充分的理由,否则永远不要在 systemd 服务中使用 sudo。
2.) 很可能 rc-local.service 在加载创建这些设备文件的驱动程序的服务之前(或至少同时)运行。这是一个排序问题。您最好创建一个新的 systemd 服务单元并启动它After=vmware-networks.service
(假设这是加载驱动程序的 VMware 服务的名称)