私のRaspberry Piでこのコマンドを使用する際に問題がありますtimedatectl
。実行すると、timedatectl status
次のエラーメッセージが表示されます。
spaikon@raspberrypi:~ $ timedatectl status
Failed to query server: Transport endpoint is not connected
spaikon@raspberrypi:~ $ sudo timedatectl status
Failed to query server: The name org.freedesktop.timedate1 was not provided by any .service files
$ sudo timedatectl show
Failed to parse bus message: No route to host
$ sudo systemctl status systemd-timedated.service
● systemd-timedated.service - Time & Date Service
Loaded: loaded (/lib/systemd/system/systemd-timedated.service; static)
Active: inactive (dead)
Docs: man:systemd-timedated.service(8)
man:localtime(5)
man:org.freedesktop.timedate1(5)
オンラインで解決策を見つけようとしましたが、これまで運がありませんでした。これらのエラーが何を意味するのか、それをどのように解決するのかわかりません。他の人にこの問題が発生して解決策を見つけた人はいますか?
どんな助けでも大変感謝します。
よろしくお願いします!
編集する:
$ sudo systemctl status systemd-timedated.service
● systemd-timedated.service - Time & Date Service
Loaded: loaded (/lib/systemd/system/systemd-timedated.service; static)
Active: inactive (dead)
Docs: man:systemd-timedated.service(8)
man:localtime(5)
man:org.freedesktop.timedate1(5)
$ sudo timedatectl
Failed to query server: The name org.freedesktop.timedate1 was not provided by any .service files
$ dlocate -S systemd-timedated.service
systemd: /lib/systemd/system/systemd-timedated.service
systemd: /usr/share/man/man8/systemd-timedated.service.8.gz
編集2:systemd-timedateの応答
$ journalctl -fu systemd-timedated.service
-- Journal begins at Thu 2023-06-08 20:47:15 EEST. --
Jun 09 12:07:52 raspberrypi systemd[1]: Starting Time & Date Service...
Jun 09 12:07:52 raspberrypi systemd-timedated[46085]: /lib/systemd/systemd-timedated: error while loading shared libraries: li bsystemd-shared-247.so: cannot open shared object file: Permission denied
Jun 09 12:07:52 raspberrypi systemd[1]: systemd-timedated.service: Main process exited, code=exited, status=127/n/a
Jun 09 12:07:52 raspberrypi systemd[1]: systemd-timedated.service: Failed with result 'exit-code'.
Jun 09 12:07:52 raspberrypi systemd[1]: Failed to start Time & Date Service.
編集3:
$ namei -mov /lib/systemd/libsystemd-shared-247.so
f: /lib/systemd/libsystemd-shared-247.so
drwx------ spaikon spaikon /
lrwxrwxrwx root root lib -> usr/lib
drwxr-xr-x root root usr
drwxr-xr-x root root lib
drwxr-xr-x root root systemd
-rw-r--r-- root root libsystemd-shared-247.so
答え1
org.freedesktop.timedate1
定義に表示されるD-Bus名systemd-timedated.service
。
systemctl cat systemd-timedated.service | grep org.freedesktop.timedate1
Documentation=man:org.freedesktop.timedate1(5)
BusName=org.freedesktop.timedate1
systemd-timedated.service
システムの D-Bus で必要な場合にのみ systemd で起動する必要があります。これがまさにこのtimedatectl
コマンドが行うことです。
root@raspiw2:/home/pi# systemctl status systemd-timedated.service
● systemd-timedated.service - Time & Date Service
Loaded: loaded (/lib/systemd/system/systemd-timedated.service; static)
Active: inactive (dead)
Docs: man:systemd-timedated.service(8)
man:localtime(5)
man:org.freedesktop.timedate1(5)
root@raspiw2:/home/pi# timedatectl
Local time: Fri 2023-06-09 17:57:26 EEST
Universal time: Fri 2023-06-09 14:57:26 UTC
RTC time: n/a
Time zone: Europe/Helsinki (EEST, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
root@raspiw2:/home/pi# systemctl status systemd-timedated.service
● systemd-timedated.service - Time & Date Service
Loaded: loaded (/lib/systemd/system/systemd-timedated.service; static)
Active: active (running) since Fri 2023-06-09 17:57:26 EEST; 5s ago
Docs: man:systemd-timedated.service(8)
man:localtime(5)
man:org.freedesktop.timedate1(5)
Main PID: 1284 (systemd-timedat)
Tasks: 1 (limit: 2057)
CPU: 328ms
CGroup: /system.slice/systemd-timedated.service
└─1284 /lib/systemd/systemd-timedated
Jun 09 17:57:26 raspiw2 systemd[1]: Starting Time & Date Service...
Jun 09 17:57:26 raspiw2 systemd[1]: Started Time & Date Service.
systemd-timedated.service
はsystemd
基本パッケージの一部であるため、エラーメッセージはサービス定義が変更または削除されたことを示します。サービスをブロックするように設定しましたか、完全に削除しましたか?
dlocate -S systemd-timedated.service
systemd: /lib/systemd/system/systemd-timedated.service
systemd: /usr/share/man/man8/systemd-timedated.service.8.gz
出力には、journalctl -fu systemd-timedated.service
システムライブラリに権限の問題があることが示されています(わかりやすくするために複数行に分かれています)。
Jun 09 12:07:52 raspberrypi systemd-timedated[46085]: /lib/systemd/systemd-timedated:
error while loading shared libraries:
libsystemd-shared-247.so: cannot open shared object file:
Permission denied
ライブラリはに配置する必要があります/lib/systemd/libsystemd-shared-247.so
。
権限を使用して、ファイルとすべての親ディレクトリをすぐに一覧表示できますnamei -mov /lib/systemd/libsystemd-shared-247.so
。出力は次のようになります。
f: /lib/systemd/libsystemd-shared-247.so
drwxr-xr-x root root /
drwxr-xr-x root root lib
drwxr-xr-x root root systemd
-rw-r--r-- root root libsystemd-shared-247.so
ファイルの読み取り権限またはr-x
親ディレクトリに対する読み取りおよびアクセス()権限が失われた場合を使用してchmod
復元します。
$ namei -mov /lib/systemd/libsystemd-shared-247.so
f: /lib/systemd/libsystemd-shared-247.so
drwx------ spaikon spaikon /
[...]
他の権限は正しいように見えますが、ルートディレクトリの所有権が誤って「spaikon」に設定され、そのユーザーに対する権限のみがあるようです。これは明らかに間違っています。
このsystemd-timedated.service
定義には多くのセキュリティ制限が含まれているため、サービスがrootとして実行されていても、root権限全体にアクセスすることはできません。ここで最も関連性の高い制限は、ファイルとディレクトリの権限チェックを無視する機能を提供する機能でCapabilityBoundingSet=CAP_SYS_TIME
ある除外CAP_DAC_OVERRIDE
です。root
これがなければ、実行を担当するシステムサブプロセスは/lib/systemd/systemd-timedated
ファイルとディレクトリの権限を尊重する必要があります。技術的にはrootとして実行されますが、。
権限を変更するには、次の2つのコマンドを実行します。この順に:
sudo chmod go+rx /
sudo chown root:root /