Оказывается, по крайней мере до NFSv4.1 NFS не имеет полной поддержки контекстов SELinux; вы можете установить контекст только для каждого монтирования, а не для файла/каталога.
Итак, сначала нам нужно разрешить vncserver доступ к домашним каталогам NFS. Это было исправлено выше по течению в tigervnc v1.12. Если это недоступно для ОС, мы можем просто получить новую конфигурацию SELinux из основной ветки разработки и установить ее в нашей системе. Это было задокументировано здесь: https://github.com/TigerVNC/tigervnc/issues/1189. Вот важные шаги:
- Получите и извлеките исходники tigervnc v1.12.
- Перейдите в <источник тигров>/unix/vncserver/selinux
- Создайте новый файл политики SELinux (vncserver.pp), запустив make vncserver.pp.
- Сообщите SELinux, что мы используем домашние каталоги NFS, запустив «setsebool -P use_nfs_home_dirs on». Параметр -P делает его постоянным.
- Установите новую политику SELinux: «semodule -X 300 -i vncsession.pp».
Следующая проблема, с которой мы сталкиваемся, заключается в том, что vncserver не ожидает монтирования NFS. Многие руководства посоветуют вам добавить «After=remote-fs.target», «After=home.mount» или «RequiresMountsFor=/home». Однако это не работает с файловыми системами, смонтированными с помощью autofs (по крайней мере, для меня).
Вместо этого нам нужно дождаться появления autofs. Добавьте «After=autofs.target» в раздел [Unit] вашего файла [email protected]. У меня он находился по адресу /usr/lib/systemd/system/[email protected]. Видеть: https://github.com/TigerVNC/tigervnc/issues/1284
На этом этапе продолжайте следовать документации вашей ОС для настройки сервера VNC.