동일한 네트워크에 두 개의 서버가 있습니다. 하나는 Windows Server 2016을 실행하고 다른 하나는 CentOS 8을 실행합니다. Windows 서버는 제 기본 파일 저장소이며 모든 데이터가 있는 곳입니다. CentOS 서버에는 Windows 공유가 마운트되어 있으며 해당 파일에 액세스할 수 있습니다.

CentOS에서 삼바 공유를 설정했습니다. 왜요? 동일한 서버에서 실행 중인 웹 앱이 있고 웹 앱에서 누가 어떤 파일에 액세스할 수 있는지 제어하기를 원하기 때문입니다. 따라서 (내부) 사용자가 Windows 공유를 직접 탑재하는 대신 파일에 대한 "게이트키핑" 액세스가 될 CentOS 공유를 탑재하게 됩니다.

samba 폴더에는 각 사용자에 대한 폴더와 사용자가 자신의 폴더에만 액세스할 수 있도록 하는 구성이 있습니다. webapp는 "실제" 파일에 연결되는 이러한 폴더에 심볼릭 링크를 추가하도록 구성되어 있습니다.

이것이 문제가 있는 곳입니다. 사용자의 폴더에 "일반" 파일을 추가하면 사용자가 액세스할 수 있습니다. 그러나 (마운트된 Windows 공유의 파일에) 심볼릭 링크를 추가하면 해당 링크가 나타나지 않습니다. 이것이 SELinux 문제라고 확신합니다.

설정 방법은 다음과 같습니다.

  • Windows 공유가 마운트되었습니다.

    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 Jan 10 16:57 files
    
  • 삼바 공유가 생성되어 사용 /srv/smb됩니다(모든 삼바 사용자가 sambashare그룹에 있음) .

    ls -alhZ /srv
    drwxrwx---.  2 root sambashare unconfined_u:object_r:samba_share_t:s0    6 Jan 13 11:20 smb
    
  • 다음이 /etc/samba/smb.conf있습니다.

    [global]
        allow insecure wide links = yes
        unix extensions = no
    
    [adminShare]
        path = /srv/smb
        wide links = yes
        follow symlinks = yes
    
  • 테스트로 심볼릭 링크와 파일을 추가했습니다.

    ln -s /media/WinShare/files/test.pdf /srv/smb/test.pdf
    touch /srv/smb/file.bin
    

그런 다음 \\CentOS\adminShareWindows VM 에 마운트하려고 시도했지만 test.pdf파일이 보이지 않지만 file.bin.

CentOS samba 공유에 탑재된 Windows Server 데이터에 대한 액세스 권한을 부여하려면 어떻게 해야 합니까? CentOS 서버를 설정할 때 다음을 실행했습니다.

sudo semanage fcontext -a -t samba_share_t "/srv/smb(/.*)?"

이것이 file.bin내가 볼 수 있게 해주었지만 여전히 볼 수 없습니다 file.pdf. 나는 이것을 찾았지만 모든 것을 변경하고 싶은지 모르겠습니다 .

sudo setsebool -P samba_export_all_rw=1

삼바가 /media/WinShare폴더에 액세스하도록 허용하려면 어떻게 해야 합니까? 이것이 효과가 있을까요?

sudo semanage fcontext -a -t samba_share_t "/media/WinShare(/.*)?"
answer

나는 그것을 고쳤다! Windows 공유를 마운트하고 컨텍스트를 samba_share_t.

마운트할 때 추가하십시오 context=unconfined_u:object_r:samba_share_t:s0.

sudo mount -t cifs //WindowsShare/data /media/WinShare \
    -o ip=192.168.1.5,username=user,gid=sambashare,context=unconfined_u:object_r:samba_share_t:s0