Установка времени хоста из док-контейнера дает ошибку разрешения даже с CAP_SYS_TIME
Я пытаюсь проверить docker
использование возможностей. Итак, для этого я пытаюсь запустить контейнер с --cap-add=SYS_TIME
возможность, которая должна позволить процессу установить системное время, однако это вывод, который я получаю:
$ sudo docker run --cap-add = SYS_TIME --rm -it ubuntu bash root @617c9eb44965:/# date -s '+2 часа' дата: невозможно установить дату: операция не разрешена Вт 6 марта 10:17:46 UTC 2018 корень @617c9eb44965:/#
Если я заменю --cap-add
с --cap-drop
ничего не меняется в выводе:
$ sudo docker run --cap-drop = SYS_TIME --rm -it ubuntu bash root @ 46dbb20ad793: / # date -s '+2 часа' дата: невозможно установить дату: операция не разрешена Вт 6 марта 10:19:03 UTC 2018
Меня удивляет, что date
команда по-прежнему выводит дату, увеличенную на 2 часа, вместо того, чтобы просто умереть с ошибкой (код выхода 1
).
Единственное, о чем я могу думать, это то, что seccomp /selinux вступают в игру, но я не знаю, как это проверить.
Может ли кто-нибудь объяснить мне, как я могу убедиться в том, что вызывает ошибку "Операция не разрешена", даже если возможность явно задана, и как это исправить?
Системная информация:
$ uname -a
Linux ws77 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
$ docker -v
Docker version 1.13.1, build 092cba3
Пожалуйста, не упоминайте --privileged
, Он сломан, и я хочу сделать это надлежащим образом, используя средства /seccomp /selinux и т. Д.