Как я могу запускать команды dracut внутри некорневого кода C? - PullRequest
0 голосов
/ 15 июня 2019

Я разрабатываю инструмент, который модифицирует разделы и диски LUKS.Все работает очень хорошо.До сих пор ...

Чтобы правильно обращаться с дисками как пользователь без полномочий root, я добавил несколько правил polkit для изменения пароля, открытия раздела, изменения crypttab и многих других.

Но яЯ вижу проблемы, когда я меняю crypttab и мне нужно запустить dracut, чтобы применить некоторые модули dracut (dracut --force).Специально, последний.

Мой пользователь входит в группу администраторов, и я добавил правило в файл sudoers, чтобы не спрашивать пароль sudo при выполнении моего приложения.

Итак, я решил использоватьэтот код:

gchar *dracut[] = {"/usr/bin/sudo", "/usr/bin/dracut", "--force", NULL};

if ((child = fork()) > 0) {
    waitpid(child, NULL, 0);
} else if (!child) {
    execvp("/usr/bin/sudo", dracut);
}

Не работает, поскольку SELinux не позволяет запустить эту команду:

SELinux is preventing /usr/bin/sudo from getattr access on the chr_file /dev/hpet.

*****  Plugin catchall (100. confidence) suggests   **************************

If you believe that sudo should be allowed getattr access on the hpet chr_file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'sudo' --raw | audit2allow -M my-sudo
# semodule -X 300 -i my-sudo.pp


Additional Information:
Source Context                system_u:system_r:xdm_t:s0-s0:c0.c1023
Target Context                system_u:object_r:clock_device_t:s0
Target Objects                /dev/hpet [ chr_file ]
Source                        sudo
Source Path                   /usr/bin/sudo
Port                          <Unknown>
Host                          <Unknown>
Source RPM Packages           sudo-1.8.25p1-4.el8.x86_64
Target RPM Packages           
Policy RPM                    selinux-policy-3.14.1-61.el8.noarch
Selinux Enabled               True
Policy Type                   targeted
Enforcing Mode                Enforcing
Host Name                     jcfaracco@hostname
Platform                      Linux jcfaracco@hostname 4.18.0-80.el8.x86_64 #1
                              SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64
Alert Count                   9
First Seen                    2019-06-14 19:32:42 -03
Last Seen                     2019-06-14 19:42:46 -03
Local ID                      772b2c41-2302-4ee0-8886-52789eb63e22

Raw Audit Messages
type=AVC msg=audit(1560552166.658:199): avc:  denied  { getattr } for  pid=2291 comm="sudo" path="/dev/hpet" dev="devtmpfs" ino=10776 scontext=system_u:system_r:xdm_t:s0-s0:c0.c1023 tcontext=system_u:object_r:clock_device_t:s0 tclass=chr_file permissive=0


type=SYSCALL msg=audit(1560552166.658:199): arch=x86_64 syscall=stat success=no exit=EACCES a0=7ffd4a6dffb0 a1=7ffd4a6def20 a2=7ffd4a6def20 a3=7fe845a73181 items=0 ppid=1756 pid=2291 auid=4294967295 uid=982 gid=980 euid=0 suid=0 fsuid=0 egid=980 sgid=980 fsgid=980 tty=tty1 ses=4294967295 comm=sudo exe=/usr/bin/sudo subj=system_u:system_r:xdm_t:s0-s0:c0.c1023 key=(null)ARCH=x86_64 SYSCALL=stat AUID=unset UID=gnome-initial-setup GID=gnome-initial-setup EUID=root SUID=root FSUID=root EGID=gnome-initial-setup SGID=gnome-initial-setup FSGID=gnome-initial-setup

Hash: sudo,xdm_t,clock_device_t,chr_file,getattr

Знаете ли вы, как решить эту проблему?Любая другая идея вызвать dracut внутри кода на C тоже приветствуется.В случае любого другого умного способа выполнить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...