Linux で再起動後、dhcpd.leases に対するファイル権限を保持します。

Linux で再起動後、dhcpd.leases に対するファイル権限を保持します。

.NET Coreアプリケーションを実行するLinuxマシンがあります。このアプリケーションは、EEPROMシステムの表示と設定に使用されるWeb UIです。アプリケーションは/var/lib/dh​​cpディレクトリにあるdhcpd.leasesファイルを読み取り、各EEPROMのIPアドレスをUIに表示します。新しいEEPROMがシステムに追加されると、そのIPアドレスがdhcpd.leasesファイルに追加され、UIに表示されます。ただし、EEPROMがシステムから削除された場合、IPアドレスはdhcpd.leasesファイルから削除されないため、UIに表示され続けます。ユーザーがシステムから物理的にEEPROMを削除した後にUIから削除できるようにします。ユーザーがUIからEEPROMを削除すると、dhcpd.leasesからIPアドレスを削除して再表示されないようにします。ファイルに対するデフォルト権限は、所有者に読み取りおよび書き込み権限のみを付与し(所有者はリストされていません)、dhcpdグループおよび他のユーザーに読み取り専用権限を付与し、実行を許可しないため、これは不可能です。コマンドを実行すると、sudo chmod 777 /var/lib/dhcp/dhcpd.leasesアプリケーションが必要に応じてファイルを変更できるように、ファイル権限が変更されることがあります。ただし、システムが再起動されるたびにファイル権限が復元されます。私たちのLinuxボックスはsystemdサービスを使用してシステム起動時にアプリケーションを起動するので、systemdサービスを作成することがシステム起動時にファイル権限を変更するコマンドを実行するのに最適な方法だと思いました。次のように、/etc/systemd/systemディレクトリにdhcp.serviceというファイルを作成しました。

[Unit]  
Description=change dhcpd.leases permissions  

[Service]  
Type=oneshot  
WorkingDirectory=/var/lib/dhcp  
ExecStart=chmod 777 dhcpd.leases  
User=root  

[Install]  
WantedBy=multi-user.target

その後、コマンドを実行しましたsystemctl enable dhcp.service。しかし、システムを再起動しても、ファイル権限はまだ変更されていません。コマンドを実行しましたが、アクティブに戻されsystemctl is-enabled dhcp.serviceました。私もそれを実行し、journalctl -u dhcp.serviceログは、システムの起動時にサービスが正常に実行されたことを示しました。を実行すると、systemctl start dhcp.serviceファイル権限が正常に変更されます。サービスが起動すると正常に動作しますが、有効にするとサービスは正常に実行されていると表示されますが、有効にすると機能しません。ここと他の交流サイトに掲載されたさまざまな質問でヒントを試してみましたが、何の効果もなかったので、具体的なシナリオを共有する必要があると思いました。システムの再起動時にファイル権限が再び表示されないように、ファイル権限をどのように永久に変更しますか?

ベストアンサー1

systemdサービスを変更しました。

[Unit]
Description=change dhcpd.leases permissions
After=isc-dhcp-server.service

[Service]
Type=oneshot
WorkingDirectory=/var/lib/dhcp
ExecStartPre=/bin/sleep 30
ExecStart=chown -R whisker:whisker /var/lib/dhcp/
User=root

[Install]
WantedBy=multi-user.target

これは以前に試したこととは少し異なりますが、より良いアプローチです。 chmod 777は、誰もがファイルを読み、書き込み、実行できるようにするので危険です。サービスはファイル所有者を変更します。ここで mustache はユーザー名です。アプリケーションはユーザーの口ひげで実行されるので、アプリケーションは私たちが望むdhcpd.leasesファイルを読み書きすることができます。 dhcpd.leasesファイルの所有者だけでなく、/var/lib/dh​​cpディレクトリ全体の所有者も変更する必要があります。これ。私たちは、デフォルトの権限を持つdhcpd.leases〜ファイルが、設定した権限を含む時々dhcpd.leasesファイルを上書きすることを知っています。この動作は、ディレクトリ所有者を変更することで削除できます。したがって、システムを再起動してもファイル所有者は復元されません。

おすすめ記事