Am două servere în aceeași rețea. Unul rulează Windows Server 2016 și altul rulează CentOS 8. Serverul Windows este magazinul meu principal de fișiere, acolo sunt toate datele mele. Serverul CentOS are partajarea Windows montată și își poate accesa fișierele.
Pe CentOS, am configurat o partajare samba. De ce? Pentru că am o aplicație web care rulează pe același server și vreau ca aplicația web să controleze cine poate accesa ce fișier. Deci, în loc să îi obligă pe utilizatorii noștri (interni) să monteze direct partajarea Windows, aceștia vor monta partajarea CentOS, care va fi accesul „gatekeeping” la fișiere.
În folderul samba, există foldere pentru fiecare utilizator și o configurație care să permită utilizatorilor accesul doar la folderele lor. Aplicația web este configurată să adauge legături simbolice în aceste foldere care leagă la fișierele „adevărate”.
Aici este problema. Dacă adaug un fișier „normal” în folderul unui utilizator, acesta îl poate accesa foarte bine. Dar dacă adaug un link simbolic (la un fișier din partajarea Windows montată), nu apare pentru ei. Sunt destul de sigur că aceasta este o problemă cu SELinux.
Iată cum sunt configurate lucrurile.
Partajarea Windows este montată
sudo mount -t cifs //WindowsShare/data /media/WinShare \
-o ip=192.168.1.5,username=user,gid=sambashare
ls -alhZ /media/WinShare
drwxr-xr-x. 2 root sambashare system_u:object_r:cifs_t:s0 0 ianuarie 10 16:57 fișiere
O cotă samba este creată și utilizată /srv/smb
(toți utilizatorii de samba sunt în sambashare
grup)
ls -alhZ /srv
drwxrwx---. 2 root sambashare unconfined_u:object_r:samba_share_t:s0 6 ianuarie 13 11:20 smb
The /etc/samba/smb.conf
are urmatoarele:
[global]
permit link-uri largi nesigure = da
extensii unix = nr
[adminShare]
cale = /srv/smb
link-uri largi = da
urmați legăturile simbolice = da
Ca test, am adăugat un link simbolic și un fișier
ln -s /media/WinShare/files/test.pdf /srv/smb/test.pdf
atingeți /srv/smb/file.bin
Apoi am încercat să montez \CentOS\adminShare
într-un VM Windows și nu văd test.pdf
fișier dar văd fişier.bin
.
Cum pot acorda accesului partajării CentOS Samba la datele montate pe Windows Server? Când am configurat serverul CentOS, am rulat:
sudo semanage fcontext -a -t samba_share_t "/srv/smb(/.*)?"
Asta mi-a permis să văd fişier.bin
, dar tot nu văd fişier.pdf
. Am găsit asta, dar nu știu dacă vreau să schimb Tot:
sudo setsebool -P samba_export_all_rw=1
Cum pot permite samba să acceseze /media/WinShare
pliant? Ar funcționa asta?
sudo semanage fcontext -a -t samba_share_t "/media/WinShare(/.*)?"