Установка времени хоста из контейнера докера вызывает ошибку разрешения даже с CAP_SYS_TIME

Я пытаюсь проверить использование возможностей docker. Поэтому для этого я пытаюсь запустить контейнер с возможностью --cap-add=SYS_TIME, что должно позволить процессу устанавливать системное время, однако это результат, который я получаю:

$ sudo docker run --cap-add=SYS_TIME --rm -it ubuntu bash root@617c9eb44965:/# date -s '+2 hours' date: cannot set date: Operation not permitted Tue Mar 6 10:17:46 UTC 2018 root@617c9eb44965:/#

Если я замените --cap-add на --cap-drop, ничего не изменяется в выходе:

$ sudo docker run --cap-drop=SYS_TIME --rm -it ubuntu bash root@46dbb20ad793:/# date -s '+2 hours' date: cannot set date: Operation not permitted Tue Mar 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 и т. Д.

0
задан 6 March 2018 в 12:27

0 ответов

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

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