system() и наследуют возможности lxc
В системе Linux пользователь без полномочий root создает программу / процесс на C++. Этот процесс имеет возможности CAP_DAC_OVERRIDE
, CAP_SYS_ADMIN
а также CAP_SYS_RAWIO
с режимом effective, permitted, inheritable
, Эти возможности прикреплены к файлу, который может быть прочитан lxc.
Этот процесс вызывает system("dumpe2fs -h /dev/sda1...")
прочитать информацию о разделе на жестком диске.
Когда это вызывает system("...")
Дочерний процесс dumpe2fs
создано. Но dumpe2fs
похоже, не наследует три возможности, как ожидалось.
Как я могу заставить дочерний процесс наследовать возможности?
1 ответ
"Когда он вызывает system("..."), создается дочерний процесс dumpe2fs."
Я считаю, что system() вызывает оболочку по умолчанию и запускает dumpe2fs
Команда в этом. Таким образом, это не будет дочерний процесс, работающий непосредственно под текущим процессом, как в fork()
вызов.
Вам нужно что-то вроде функции execve для этого.
Возможно, вы захотите взглянуть на другие функции этого семейства, чтобы выполнить ваши конкретные требования: http://man7.org/linux/man-pages/man3/exec.3.html