私のシステムに固定IPを設定するために、systemd .network設定ファイルを/ etc / systemd / networkにコピーするカスタムレシピがあります。
複数のデバイスが同じネットワークに接続される可能性があるため、ユーザーがシステムのIPアドレスを編集できることを願っています。
私のイメージには、読み取り専用ルートパーティションと書き込み可能なデフォルトパーティションがあります。私の考えは、/etc/systemd/networkにある.networkファイルを自宅のファイルへのリンクにして、ユーザーが編集できるようにすることです(明らかにファイルを台無しにしないリモートソフトウェアを介して)。
# ll /etc/systemd/network/20-wired.network
lrwxrwxrwx 1 root root 35 Sep 16 15:16 /etc/systemd/network/20-wired.network -> /home/root/systemd/20-wired.network*
リンクされたファイルの権限。
# ll /home/root/systemd/20-wired.network
-rwxrwxrwx 1 root root 107 Mar 9 2018 /home/root/systemd/20-wired.network*
残念ながら、接続トリックは機能しません。
# systemctl status systemd-networkd.service
* systemd-networkd.service - Network Service
Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-09-16 15:19:31 UTC; 6min ago
TriggeredBy: * systemd-networkd.socket
Docs: man:systemd-networkd.service(8)
Main PID: 413 (systemd-network)
Status: "Processing requests..."
Tasks: 1 (limit: 520)
Memory: 2.0M
CGroup: /system.slice/systemd-networkd.service
`-413 /lib/systemd/systemd-networkd
Sep 16 15:19:31 imx8mpsolidrun systemd[1]: Starting Network Service...
Sep 16 15:19:31 imx8mpsolidrun systemd-networkd[413]: Failed to load /etc/systemd/network/20-wired.network, ignoring: Permission denied
Sep 16 15:19:31 imx8mpsolidrun systemd-networkd[413]: Enumeration completed
Sep 16 15:19:31 imx8mpsolidrun systemd[1]: Started Network Service.
Sep 16 15:19:31 imx8mpsolidrun systemd-networkd[413]: eth0: Link UP
Sep 16 15:19:36 imx8mpsolidrun systemd-networkd[413]: eth0: Gained carrier
Sep 16 15:19:37 imx8mpsolidrun systemd-networkd[413]: eth0: DHCPv4 address 10.0.10.240/24 via 10.0.10.1
Sep 16 15:19:37 imx8mpsolidrun systemd-networkd[413]: eth0: Gained IPv6LL
リンクされたファイルがプライマリパーティションではなくルートパーティションにある場合、接続トリックは機能します。しかし、それは再び読み取り専用になります...
ProtectHome=yes
私はこれがに設定され、コメントを付けて無効にしようとしましたが、no
これfalse
までは運がないsystemd-networkdサービスのためだと思います。私もそれをに設定しようとしましたが、まだread-only
運ReadOnlyPaths=path/to/linked/file
がありません。
どのように動作させることができるか知っていますか?
ルートパーティションが読み取り専用のときに編集可能な固定IPを取得するより良い方法はありますか?
編集する
さらなるテストをしてみると、実際にファイル権限アクセスの問題のようです。
ProtectHome=no
ファイルにそのファイルが必要であることを確認しましたsystemd-networkd.service
。そうしないと、サービスはホームディレクトリのファイルにアクセスできません。
すべてのユーザーの家(たとえば/home/weston/
)にあるファイルはsystemdでアクセスして使用できますが、フォルダ全体の権限設定の/home/root
観点から、その中のファイルにはアクセスできないことがわかりました。すべてのフォルダとサブフォルダに対して0777を設定しようとしましたが、/home/root/
systemdはまだファイルにアクセスできません。実際、systemd-network
ユーザーは構成ファイルにアクセスできません。
ファイル権限(両方のファイルが誰でも読めるように見える)とtest
結果は次のとおりです。
# namei -l /home/root/20-wired.network
f: /home/root/20-wired.network
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr--r-- root root root
-rw-r--r-- root root 20-wired.network
# sudo -u systemd-network test -r /home/root/20-wired.network; echo $?
1
# namei -l /home/weston/20-wired.network
f: /home/weston/20-wired.network
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-xr-x weston weston weston
-rw-r--r-- weston weston 20-wired.network
# sudo -u systemd-network test -r /home/weston/20-wired.network; echo $?
0
root
アクセス権をよりよく調べる必要があると思います...