Я запускаю Ubuntu Xenial 16.04 в AWS EC2, я установил SELinux и изменил его режим на Enforcing. Я настроил тип selinux ssh_port_t на порт 22. Хотя я создал перенаправление портов через ssh, я обнаружил, что туннель не работает должным образом.
В файле журнала /var/log/syslog он выдает
kernel: [ 311.860046] audit: type=1400 audit(1519664302.158:506): avc: denied { getattr } for pid=1367 comm="sshd" path="/run/resolvconf/resolv.conf" dev="tmpfs" ino=267 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:init_var_run_t:s0 tclass=file permissive=0
Команда SELinux запретила sshd /run/resolvconf/resolv.conf
$ readlink -f /etc/resolv.conf
/run/resolvconf/resolv.conf
$ ls -Z /etc/resolv.conf
unconfined_u:object_r:etc_t:SystemLow /etc/resolv.conf
$ ls -Z /run/resolvconf/resolv.conf
system_u:object_r:init_var_run_t:SystemLow /run/resolvconf/resolv.conf
Файл /run/resolvconf/resolv.conf по умолчанию init_var_run_t, я попытался изменить его, чтобы ввести default_t, var_run_t, sshd_var_run_t с помощью команды
# sudo semanage fcontext -a -t $TYPE /var/run/resolvconf/resolv.conf
sudo semanage fcontext -m -t $TYPE /var/run/resolvconf/resolv.conf
sudo restorecon -F -R /run/resolvconf/resolv.conf
Когда я изменил ее на sshd_var_run_t, туннель работает. Но другая утилита также должна использовать файл /run/resolvconf/resolv.conf, например.
Если я изменил режим SELinux на разрешающий, туннель работал хорошо, SELinux только записывал информацию в системный журнал.
Но мое требование чтобы система работала хорошо в режиме Enforcing. Как я должен работать с файлом /run/resolvconf/resolv.conf или что делать, чтобы решить проблему.