Это едва объяснено в Реализации SELinux как Модуль безопасности Linux
Это приводит к заполненной selinuxfs файловой системе и настраивает специальный пустой узел устройства, используемый SELinux, когда это закрывает несанкционированные файлы после изменения контекста execve.
По-видимому, программы не могут использовать /dev/null
непосредственно, в то время как в SELinux-контексте и им была нужна их собственная версия. Это было раньше известно как open_devnull, и его начало предоставляет еще несколько подробной информации о том, почему это было необходимо:
Этот патч против 2.6.6-rc3 изменений модуль SELinux, чтобы попытаться сбросить любые дескрипторы это закрывается на должностном лице (из-за отсутствия разрешения новым доменом в наследованный открытый файл) для обращения к пустому устройству. Это решает проблему SELinux стимулирование проступка программы, особенно из-за наличия дескрипторов 0-2 закрытых, когда новому домену не предоставляют доступ к tty вызывающей стороны. Это должно, прежде всего, обратиться к случаю, где вызывающей стороне доверяют относительно нового домена, поскольку недоверяемый случай вызывающей стороны уже обрабатывается через AT_SECURE и glibc безопасный режим.
Ваш пользователь deluge
имеет / bin / false
в качестве оболочки по умолчанию - это то, что запускает su
и передает -c
] вариант (или запуск без каких-либо параметров, если вы просто выполняете su deluge
). Вы можете использовать параметр - shell
для adduser
, чтобы установить оболочку при создании пользователя. Например:
sudo adduser --shell /bin/sh --disabled-password --system \
--home /var/lib/deluge --gecos "Deluge server" --group deluge
Или используйте chsh
, чтобы изменить оболочку для уже созданного пользователя:
sudo chsh -s /bin/sh deluge
Или вы можете использовать - shell
(или -s
]) с параметром su
для переопределения / etc / passwd
:
su deluge -s /bin/sh -c "flexget --test execute"
В зависимости от того, что еще вы делаете с пользователем, / bin / bash
может быть более подходящая оболочка для использования.