cifs를 통해 클라이언트 간에 데이터를 공유하기 위해 삼바 서버를 설정하려고 합니다. 테스트로서 동일한 시스템에 삼바 공유를 마운트하고 디렉토리 내용에 액세스하려고 시도했습니다. 설치 명령은 다음과 같습니다.
mount -t cifs -o username=sthomaso,workgroup=WORKGROUP //server/scratch /mnt/server/scratch
...비밀번호를 입력하면 제대로 작동합니다. 가능하더라도 cd /mnt/server/scratch
디렉토리의 내용을 나열하려고 하면 ls
오류가 발생합니다 ls: reading directory .: Permission denied
.
서버에서 내 것은 다음 /etc/samba/smb.conf
과 같습니다.
[global]
security = user
workgroup = WORKGROUP
[homes]
writeable = yes
[scratch]
path = /var/scratch
valid users = @feausers
writeable = yes
다음 명령을 사용하여 "sthomaso" 사용자를 tdbsam에 추가합니다.
pdbedit -a -u sthomaso
사용자 "sthomaso"는 "feausers" 그룹에 속하며 "groups sthomaso" 명령을 사용하여 확인됩니다.
/bin/ls -lF /var | grep scratch
보여주다:
drwxrwx--T. 2 root feausers 4096 Jun 14 14:40 scratch/
/var/log/samba/log.smbd
성공적인 연결 확인이 포함되어 있습니다.
<snip> smbd/service.c:1070(make_connection_snum)
<snip> connect to service scratch initially as user sthomaso (uid=500, gid=501) (pid 99999)
공유를 성공적으로 마운트한 것 같습니다. 그런데 디렉터리를 읽을 수 없고 파일에 액세스할 수 없는 이유는 무엇입니까?
답변1
참고로 저는 Red Hat으로부터 도움을 받았습니다. 문제는 SELinux가 권한을 제한하고 있다는 것입니다. SELinux가 제공하는 제어 기능이 필요하지 않으므로 /etc/selinux/config를 편집하고 재부팅하여 비활성화합니다.
답변2
이 질문에 대한 보다 적절한 답변은 문서 상단에 나와 있습니다 /etc/samba/smb.conf.example
.
Use the samba_export_all_ro or samba_export_all_rw Boolean to share system directories. To share such directories and only allow read-only permissions:
setsebool -P samba_export_all_ro on
To share such directories and allow read and write permissions:
setsebool -P samba_export_all_rw on
또한 auditd에 의해 생성된 setroubleshoot 로그를 보면 1-100의 상대적 신뢰도로 문제를 잠재적으로 해결하는 방법에 대한 몇 가지 제안을 제공합니다.
이러한 로그와 권장 사항을 보려면 다음을 실행하세요.sealert -a /var/log/audit/audit.log
즉, 이 문제를 해결하려면 다음 명령을 실행하십시오.setsebool -P samba_export_all_rw on
그런 다음 서비스를 다시 시작하십시오.
편집하다:
또한 다음 명령을 사용하여 적절한 selinux 컨텍스트를 samba 공유에 적용해야 합니다.
semanage fcontext -a -t samba_share_t "/PATH_TO_SHARE(/.*)?"