timedatectl на сервере ubuntu 20.04

У меня есть сервер 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
1
задан 11 August 2021 в 03:32

1 ответ

Я не смог продублировать вашу ошибку на обычном образе 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

Эти шаги - еще один способ автоматизировать изменение часового пояса.

  1. Обновите ссылку /etc/localtime
  2. Запустите 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
1
ответ дан 20 August 2021 в 10:28

Другие вопросы по тегам:

Похожие вопросы: