systemd および rc-local サーバーを使用すると、chmod はそのファイルまたはディレクトリを返しません。

systemd および rc-local サーバーを使用すると、chmod はそのファイルまたはディレクトリを返しません。

再起動後、システムファイルの権限設定をリセットできません。起動時に権限を希望の方法でリセットするbashスクリプトを実行するようにsystemdサービスとrc-localサービスを設定しています。

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.

/dev/vmnet0ルートとして実行されているスクリプトがファイルを表示できない理由を把握しようとして頭を傷つけます/dev/vmnet1。どんなアイデアがありますか?

答え1

1.) rc-local.service などのシステム単位では sudo を使用する必要はなく、すべてのコマンドはすでに root として実行されます。実際、合理的な理由がない限り、システムサービスでsudoを使用しないでください。

2.)rc-local.serviceは、これらのデバイスファイルを生成するドライバサービスがロードされる前(または少なくとも同時に)実行される可能性が高いです。ソートの問題です。新しいシステムサービスユニットを作成して起動することをお勧めしますAfter=vmware-networks.service(ドライバをロードするVMwareサービスの名前であると仮定)。

関連情報