Команда getsebool -a | grep ssh
в моем CentOS 7 показывает
fenced_can_ssh --> off
selinuxuser_use_ssh_chroot --> off
ssh_chroot_rw_homedirs --> off
ssh_keysign --> off
ssh_sysadm_login --> off
поэтому, исходя из вашего вопроса, команда
setsebool -P fenced_can_ssh on
должен это исправить.
Но вы также можете пойти «сложным» путем и установить пакеты setroubleshoot-server
и policycoreutils-python
с:
yum -y install setroubleshoot-server policycoreutils-python
, а затем временно установите режим SELinux на permissive
с помощью
setenforce Permissive
После этого попробуйте все, что раньше не работало. Теперь это должно работать.
Теперь взгляните на следующий файл /var/log/audit/audit.log
. Обычно он показывает обнаруженные SELinux проблемы.
grep -i "denied" /var/log/audit/audit.log
Если в журнале нет сообщений об отказе, возможно, SELinux считает, что событие создаст слишком много журнала, поэтому не записывает его. В этом случае вы можете включить регистрацию всех событий с помощью
semodule -DB
Но убедитесь, что вы вернули его в нормальное состояние с помощью semodule -B
в конце устранения неполадок.
Если вы обнаружили проблемы, теперь вы можете использовать инструмент audit2allow
для создания модуля политики для ваших нужд. audit2allow
имеет много опций, поэтому вам следует сначала прочитать РАЗРЕШЕНИЕ ДОСТУПА :AUDIT2ALLOW , чтобы привыкнуть к audit2allow
.
Не забудьте снова включить SELinux и (, если изменено, )включить сокращенное ведение журнала!
setenforce permissive
semodule -B
Это не полный ответ, так как потребуется кодирование с помощью libevdev , но должна быть возможность «захватить» для монопольного чтения каждое из двух устройств ввода и создать новое виртуальное устройство Uinput. объединение событий от них в единый поток. Доступны отдельные примеры C событий чтения и записи событий, но эта отдельная -страница учебник на Python содержит много интересных частей примера сборки -блока (тот же URL, разные точки на странице):
Чтение событий с нескольких устройств здесь
Получение монопольного доступа к устройству здесь
Создайте устройство uinput с возможностями другого устройства здесь
Ввод ввода здесь
Существует программа на Rust evsieve , которая может объединять и отображать устройства evdev. Вы должны проверить, можно ли настроить его так, чтобы он делал то, что вам нужно.