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

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