読み取り専用Yoctoファイルシステムでシステム固定IP編集を許可する

読み取り専用Yoctoファイルシステムでシステム固定IP編集を許可する

私のシステムに固定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-onlyReadOnlyPaths=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アクセス権をよりよく調べる必要があると思います...

ベストアンサー1

おすすめ記事