У меня два сервера в одной сети. Один работает под управлением Windows Server 2016, а другой — под управлением CentOS 8. Сервер Windows — это мое основное файловое хранилище, именно там находятся все мои данные. На сервере CentOS подключен общий ресурс Windows, и он может получить доступ к своим файлам.
В CentOS я настроил общий ресурс samba. Почему? Потому что у меня есть веб-приложение, работающее на том же сервере, и я хочу, чтобы веб-приложение контролировало, кто может получить доступ к какому файлу. Таким образом, вместо того, чтобы наши (внутренние) пользователи монтировали общий ресурс Windows напрямую, они будут монтировать общий ресурс CentOS, который будет «контролировать» доступ к файлам.
В папке samba есть папки для каждого пользователя и конфигурация, позволяющая пользователям получать доступ только к своим папкам. Веб-приложение настроено на добавление в эти папки символических ссылок, которые ссылаются на «настоящие» файлы.
Вот в чем проблема. Если я добавлю «обычные» файлы в папку пользователя, они смогут получить к ним доступ. Но если я добавлю символическую ссылку (к файлу в подключенном общем ресурсе Windows), он не появится для них. Я почти уверен, что это проблема SELinux.
Вот как все устроено.
Доля Windows смонтирована
sudo mount -t cifs//WindowsShare/data/media/WinShare \
-o ip=192.168.1.5,имя пользователя=пользователь,gid=sambashare
ls -alhZ /медиа/WinShare
drwxr-xr-x. 2 root sambashare system_u:object_r:cifs_t:s0 0 10 января 16:57 файлы
Общий ресурс samba создан и использует /srv/smb
(все пользователи самбы находятся в самбашар
группа)
ls -alhZ /срв
drwxrwx---. 2 root sambashare unconfined_u:object_r:samba_share_t:s0 6 янв. 13 11:20 кто-то
/etc/самба/smb.conf
имеет следующее:
[Глобальный]
разрешить небезопасные широкие ссылки = да
расширения unix = нет
[админПоделиться]
путь = /srv/smb
широкие ссылки = да
следовать символическим ссылкам = да
В качестве теста добавил симлинк и файл
ln -s /media/WinShare/files/test.pdf /srv/smb/test.pdf
коснитесь /srv/smb/file.bin
Затем я попытался смонтировать \CentOS\adminShare
в виртуальной машине Windows, и я не вижу тест.pdf
файл, но я вижу файл.bin
.
Как я могу предоставить общему ресурсу CentOS samba доступ к смонтированным данным Windows Server? При настройке сервера CentOS я запустил:
sudo semanage fcontext -a -t samba_share_t "/srv/smb(/.*)?"
Это то, что позволило мне увидеть файл.bin
, но я все равно не вижу файл.pdf
. Я нашел это, но я не знаю, хочу ли я изменить все:
sudo setsebool -P samba_export_all_rw=1
Как разрешить Samba доступ к /медиа/WinShare
папка? Будет ли это работать?
sudo semanage fcontext -a -t samba_share_t "/media/WinShare(/.*)?"