, который я хочу, позволяют пользователю выполняться *только*, проверяют с помощью ping-запросов утилиту с помощью SELinux

Практически любое приложение с графическим интерфейсом пользователя (в системах X Window) можно открыть из окна терминала внутри этого графического интерфейса. Чтобы открыть любое приложение с графическим интерфейсом, введите имя исполняемого файла в приглашении оболочки. Большинство файловых браузеров принимают каталог в качестве аргумента командной строки, поэтому обычно следует передавать . в качестве параметра.

Вот несколько примеров для некоторых популярных систем, большинство систем на базе X работают аналогично.

В Gnome вы можете запустить nautilus (файловый браузер по умолчанию) напрямую, или в Gnome 2 вы можете использовать gnome-open , чтобы открыть любой файл (включая каталоги) с помощью настроенное приложение-обработчик файлов Gnome:

$ nautilus .

или

$ gnome-open .

В KDE есть два популярных файловых браузера, мне неизвестна команда, аналогичная gnome-open , хотя gnome-open может быть запущен в KDE, но по умолчанию он открывает приложения Gnome.

$ dolphin .

или

$ konquerer .

В OS X , как упоминалось в комментариях, можно использовать аналогичную программу командной строки open .

$ open .

Что делать, если вы не знаете исполняемого имени файлового браузера вашей системы?

Если вы используете Gnome 2, используйте gnome-open. Если в OS X, вызовите open. . Каждый из них будет запускать настроенный файловый браузер для вашей среды графического интерфейса.

Если вы не знаете о такой команде в своей оконной системе, вот один из способов узнать в системе с помощью команды ps , которая понимает параметры -u USER и -o FORMAT :

  1. В окне терминала введите ps -u $ USER -o comm> / tmp / $$ A
  2. В графическом интерфейсе запустите обозреватель файлов.
  3. Вернувшись в окно терминала, введите ps -u $ USER -o comm> / tmp / $$ B (обратите внимание на суффикс B , это другой , чем шаг 1).
  4. Также в терминале введите diff / tmp / $$ [AB] .

Должно отображать имя вашего файлового браузера. Возможно, вы могли видеть более одного имени, если бы другая программа запускалась под вашим идентификатором пользователя во время между вызовами ps .

Например:

$ ps -u $USER -o comm > /tmp/$$A
$ # open file browser in gui
$ ps -u $USER -o comm > /tmp/$$B
$ diff /tmp/$$[AB]
95a96
> nautilus
1
31.08.2018, 00:42
1 ответ
Логическое значение

allow_guest_exec_contentопределяет, может ли пользователь в guest_tзапускать файлы в домашних или временных каталогах. В противном случае пользователю по-прежнему разрешено запускать другие исполняемые файлы, если это разрешено политикой.

Эталонная политика SELinux предоставляет интерфейсы для предоставления определенного доступа. Эти интерфейсы перечислены в политике SELinux документации(ваш дистрибутив, вероятно, предоставляет их в selinux-policy-docпакете ).

Чтобы разрешить гостевому пользователю использовать ping, вы можете использовать интерфейс netutils_exec_ping.

Затем создайте модуль для своей пользовательской политики, например мой _гость.те:

policy_module(my_guest, 1.0)

gen_require(`
    type guest_t;
    role guest_r;
')

netutils_run_ping(guest_t, guest_r)

и скомпилируйте его с:

make -f /usr/share/selinux/devel/Makefile my_guest.pp

В зависимости от того, какой доступ к сети вы хотите разрешить, вы можете найти подходящий интерфейс и использовать его таким же образом для расширения модуля my_guest.

0
28.01.2020, 00:29

Теги

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