Я хочу запустить unshare -r -n <prog>
внутри контейнера.
Запуск «unshare -h» работает (поэтому он доступен), но «unshare ls» дает «операция не разрешена» (независимо от того, используются ли опции «-r -n»).
Полная история:
Контейнер запускает веб-сервер (используя Flask), который запускает оболочку подпроцесса. Эта оболочка пытается изолировать исполняемый файл
timeout 10 unshare -r -n sandboxed_app arg1 arg2
В связанном вопросе ( Docker: как избежать операции, не разрешенной в Docker Container? ), предлагается ответить на вопрос о выборе флага --privileged
, но он здесь не применим, поскольку я хочу ограничить пользователя привилегии в этом контейнере (т.е. запуск с --user nobody)
$ docker run -it python:3.6-stretch /bin/bash
root@df7e28742ac5:/# unshare -h
Usage:
unshare [options] <program> [<argument>...]
<snip>
root@df7e28742ac5:/# unshare ls
unshare: unshare failed: Operation not permitted