Tôi có hai máy chủ trên cùng một mạng. Một đang chạy Windows Server 2016 và một đang chạy CentOS 8. Máy chủ Windows là kho lưu trữ tệp chính của tôi, đó là nơi chứa tất cả dữ liệu của tôi. Máy chủ CentOS đã gắn phần chia sẻ Windows và có thể truy cập các tệp của nó.
Trên CentOS, tôi đã thiết lập chia sẻ samba. Tại sao? Bởi vì tôi có một ứng dụng web chạy trên cùng một máy chủ và tôi muốn ứng dụng web kiểm soát ai có thể truy cập tệp nào. Vì vậy, thay vì để người dùng (nội bộ) của chúng tôi trực tiếp gắn phần chia sẻ Windows, họ sẽ gắn phần chia sẻ CentOS, đây sẽ là quyền truy cập "gác cổng" vào các tệp.
Trong thư mục samba, có các thư mục cho mỗi người dùng và cấu hình để cho phép người dùng truy cập vào các thư mục của họ. Ứng dụng web được định cấu hình để thêm các liên kết tượng trưng vào các thư mục này liên kết đến các tệp "thực".
Đây là vấn đề. Nếu tôi thêm tệp "bình thường" vào thư mục của người dùng, họ có thể truy cập tệp đó bình thường. Nhưng nếu tôi thêm một liên kết tượng trưng (vào một tệp trong chia sẻ Windows được gắn kết), nó sẽ không xuất hiện cho họ. Tôi khá chắc chắn rằng đây là sự cố SELinux.
Đây là cách mọi thứ được thiết lập.
Chia sẻ Windows được gắn kết
Sudo mount -t cifs //WindowsShare/data /media/WinShare \
-o ip=192.168.1.5,tên người dùng=người dùng,gid=sambashare
ls -alhZ /media/WinShare
drwxr-xr-x. 2 gốc sambashare system_u:object_r:cifs_t:s0 0 ngày 10 tháng 1 16:57 tệp
Chia sẻ samba được tạo và sử dụng /srv/smb
(tất cả người dùng samba đều ở trong sambashare
tập đoàn)
ls -alhZ /srv
drwxrwx---. 2 gốc sambashare unconfined_u:object_r:samba_share_t:s0 6 ngày 13 tháng 1 11:20 smb
Các /etc/samba/smb.conf
có những điều sau đây:
[toàn cầu]
cho phép liên kết rộng không an toàn = có
phần mở rộng unix = không
[adminChia sẻ]
đường dẫn = /srv/smb
liên kết rộng = có
theo liên kết tượng trưng = có
Để thử nghiệm, tôi đã thêm một liên kết tượng trưng và một tệp
ln -s /media/WinShare/files/test.pdf /srv/smb/test.pdf
chạm /srv/smb/file.bin
Sau đó, tôi đã cố gắng gắn kết \CentOS\adminChia sẻ
trong Windows VM và tôi không thấy thử nghiệm.pdf
tập tin nhưng tôi thấy tập tin.bin
.
Làm cách nào tôi có thể cấp quyền truy cập chia sẻ samba của CentOS vào dữ liệu Windows Server được gắn kết? Khi thiết lập máy chủ CentOS, tôi đã chạy:
Sudo semanage fcontext -a -t samba_share_t "/srv/smb(/.*)?"
Đây là những gì cho phép tôi nhìn thấy tập tin.bin
, nhưng tôi vẫn không thể nhìn thấy tập tin.pdf
. Tôi đã tìm thấy cái này, nhưng tôi không biết liệu mình có muốn thay đổi không mọi thứ:
sudo setsebool -P samba_export_all_rw=1
Làm cách nào tôi có thể cho phép samba truy cập /media/WinShare
thư mục? Điều này sẽ làm việc?
Sudo semanage fcontext -a -t samba_share_t "/media/WinShare(/.*)?"