У меня есть сервер ubuntu (20.04), где timedatectl не может установить часовой пояс. При первом вызове он всегда терпит неудачу, при втором думает, что ему это удалось, но на самом деле это не так:
Перед этим часовой пояс - Европа/Париж:
root@oxpad:~# timedatectl
Local time: Wed 2021-08-11 02:02:44 CEST
Universal time: Wed 2021-08-11 00:02:44 UTC
RTC time: Wed 2021-08-11 00:02:44
Time zone: Europe/Paris (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
** Время - CEST == Центральное европейское летнее время **
root@oxpad:~# date
Wed Aug 11 02:02:46 CEST 2021
Измените часовой пояс:
root@oxpad:~# timedatectl set-timezone Europe/London
Failed to set time zone: Access denied
root@oxpad:~# timedatectl set-timezone Europe/London
root@oxpad:~#
Видимый успех
root@oxpad:~# timedatectl
Local time: Wed 2021-08-11 01:02:58 BST
Universal time: Wed 2021-08-11 00:02:58 UTC
RTC time: Wed 2021-08-11 00:02:58
Time zone: Europe/London (BST, +0100)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Но фактическая неудача
root@oxpad:~# date
Wed Aug 11 02:02:59 CEST 2021
root@oxpad:~#
и действительно, никакие другие службы не видят обновленное локальное время. Похоже, что timedatectl один считает, что ему удалось добиться успеха.
Это полностью повторяется. Это проблема, потому что мы будем развертывать довольно много таких серверов, и если часовой пояс не может быть установлен, у нас есть проблема. Я бы очень хотел понять связь между timedatectl
и "реальным" системным временем, как его видит date
и другие процессы, поскольку это, вероятно, приведет к пониманию проблемы. Любые указания будут приветствоваться.
Интересно, что установка часового пояса на настольной системе Ubuntu 20.04 с помощью timedatectl работает нормально. Это похоже на то, что timedatectl устанавливает часовой пояс через dbus, но dbus не настроен должным образом на серверной версии ОС.
Все это тестирование проводилось на новых установках, не более нескольких дней назад и чистых, за исключением добавления нескольких пакетов.
Кто-нибудь знает, что здесь происходит? Помощь была бы очень признательна.
Больше логов: На сервере Ubuntu 20.04 в логах ошибка при изменении времени, на рабочем столе 20.04 тот же сервисный журнал показывает успех. Ошибка:
root@oxpad:~# systemctl status systemd-timedated
● systemd-timedated.service - Time & Date Service
Loaded: loaded (/lib/systemd/system/systemd-timedated.service; static; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd-timedated.service(8)
man:localtime(5)
https://www.freedesktop.org/wiki/Software/systemd/timedated
Aug 11 02:02:33 oxpad systemd[1]: systemd-timedated.service: Succeeded.
Aug 11 02:02:38 oxpad systemd[1]: Starting Time & Date Service...
Aug 11 02:02:38 oxpad systemd[1]: Started Time & Date Service.
Aug 11 02:02:38 oxpad systemd-timedated[35339]: Failed to set time zone: Permission denied
Aug 11 02:02:53 oxpad systemd-timedated[35339]: Failed to set time zone: Permission denied
Я не смог продублировать вашу ошибку на обычном образе Ubuntu 20.04. Вы должны проверить, изменяет ли команда /etc/timezone
и симлинк /etc/localtime
. Также проверьте права доступа к этим файлам. Если вы используете selinux
или другое программное обеспечение безопасности, то это еще одна возможная причина ошибки.
root@ubuntu:~# date
Wed Aug 11 16:05:25 UTC 2021
root@ubuntu:~# timedatectl
Local time: Wed 2021-08-11 16:05:28 UTC
Universal time: Wed 2021-08-11 16:05:28 UTC
RTC time: Wed 2021-08-11 16:05:29
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
root@ubuntu:~# cat /etc/timezone
Etc/UTC
root@ubuntu:~# ls -l /etc/localtime
lrwxrwxrwx 1 root root 29 Aug 11 15:39 /etc/localtime -> ../usr/share/zoneinfo/Etc/UTC
root@ubuntu:~# timedatectl set-timezone Europe/London
root@ubuntu:~# date
Wed Aug 11 17:05:51 BST 2021
root@ubuntu:~# timedatectl
Local time: Wed 2021-08-11 17:05:59 BST
Universal time: Wed 2021-08-11 16:05:59 UTC
RTC time: Wed 2021-08-11 16:06:00
Time zone: Europe/London (BST, +0100)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
root@ubuntu:~# cat /etc/timezone
Europe/London
root@ubuntu:~# ls -l /etc/localtime
lrwxrwxrwx 1 root root 35 Aug 11 17:05 /etc/localtime -> ../usr/share/zoneinfo/Europe/London
Эти шаги - еще один способ автоматизировать изменение часового пояса.
/etc/localtime
dpkg-reconfigure --frontend noninteractive tzdata
Вы видите, что эти шаги обновят файл /etc/timezone
.
root@ubuntu:~# date
Wed Aug 11 16:09:30 UTC 2021
root@ubuntu:~# ln -f -s /usr/share/zoneinfo/Europe/London /etc/localtime
root@ubuntu:~# dpkg-reconfigure --frontend noninteractive tzdata
Current default time zone: 'Europe/London'
Local time is now: Wed Aug 11 17:10:30 BST 2021.
Universal Time is now: Wed Aug 11 16:10:30 UTC 2021.
root@ubuntu:~# date
Wed Aug 11 17:10:34 BST 2021
root@ubuntu:~# cat /etc/timezone
Europe/London
root@ubuntu:~# ls -l /etc/localtime
lrwxrwxrwx 1 root root 33 Aug 11 17:10 /etc/localtime -> /usr/share/zoneinfo/Europe/London