내 상황의 모든 세부 사항을 포괄하는 답변을 찾을 수 없는 것 같습니다. 나는 다음의 지시를 따랐다.CentOS7에서 Samba와 마운트된 드라이브 공유, 하지만 여전히 문제가 있습니다. CentOS 7과 NTFS USB 드라이브가 연결되어 있습니다. Samba를 사용하여 이 드라이브를 다른 Windows 컴퓨터(Windows 10)와 공유하고 싶습니다. 드라이브를 /mymnt/win 폴더에 성공적으로 탑재했으며 Linux 호스트에서 드라이브를 읽고 Windows 10 시스템에서 공유를 볼 수 있습니다. 그러나 Windows에서 공유를 탐색하려고 하면 "\mediapc\LewisData7TB에 액세스할 수 있는 권한이 없습니다"라는 메시지가 나타납니다. Windows에서 익명으로 순수 Linux 공유에 액세스할 수도 있습니다.
관련 /etc/fstab 파일 항목은 다음과 같습니다.
/dev/sda2 /mymnt/win ntfs-3g rw,umask=0000, 기본값 0 0 -o context="system_u:object_r:samba_share_t:s0"
다음은 내 /etc/samba/smb.conf 파일입니다(homes/printers/print$는 모두 주석 처리되어 있습니다).
[global]
workgroup = LEWISFAM
server string = Samba Server %v
netbios name = mediapc
dns proxy = no
security = user
map to guest = Bad User
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[Anonymous]
path = /shares/anonymous
guest ok = yes
browsable = yes
writeable = yes
[LewisData7TB]
path = /mymnt/win
browsable =yes
writable = yes
guest ok = yes
read only = no
SELinux를 구성하려고 할 때 다음 명령을 실행합니다.
chcon -t samba_share_t /mymnt/win/
다음 오류가 발생합니다.
chcon: /mymnt/win/의 컨텍스트를 system_w:object_r:samba_share_t:s0으로 변경할 수 없습니다. 작업이 지원되지 않습니다.
그래서 제 목표는 Windows에서 이 드라이브에 대한 읽기/쓰기에 액세스하는 것입니다. 하지만 아직 거기까지는 도달하지 못했습니다.
답변1
진행 과정의 일부 형태로 더 많은 오류 메시지를 게시하려고 했지만 몇 가지 명령을 다시 시도하고 싶었고 그 중 하나가 내 여정을 성공적으로 종료했다는 사실을 발견했으며 이미 게시된 답변을 볼 수 없었기 때문에 다음부터 시작하겠습니다. Kenneth, 나에게 도움이 되었던 내용을 여기에 직접 추가했습니다.
이로 인해 exFAT USB 외장 하드 드라이브가 있는 Fedora Linux 35 워크스테이션에서 문제가 발생했습니다. 저는 이미 내 사용자 계정에서만 사용할 수 있었던 Files/Nautilus에서 잘 사용하고 있었습니다.
Samba를 처음 접하는 사람이 아닌지 확인하기 위해 man smb.conf
더 많은 지식을 가지고 /etc/samba/smb.conf
파일을 편집하고 testparm
구성을 확인하는 등의 명령을 사용했습니다.
sudo mount /dev/sd?? '/mnt/...' -o 'nosuid,nodev,nofail,noauto,x-gvfs-show,context="system_u:object_r:samba_share_t:s0"'
https://ask.fedoraproject.org/en/question/62838/selinux-ntfs-samba-share-problemworkaround/
내 솔루션을 완료하는 명령은 다음과 같습니다.
Fedora Linux 배포판의 튜토리얼 페이지에서 찾은 파일 시스템 속성을 마스킹하는 것과 동일한 방법을 사용합니다.https://docs.fedoraproject.org/en-US/quick-docs/samba/ https://www.tecmint.com/setup-samba-file-sharing-for-linux-windows-clients/
sudo semanage fcontext --add --type "samba_share_t" /mnt/...
sudo restorecon -R /mnt/...
다음과 같은 보다 광범위한 명령을 사용하여 이것이 필요한지 테스트할 수 있었습니다.
> sudo setenforce Permissive
> sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
https://www.thegeekdiary.com/centos-redhat-how-to-set-selinux-modes/
또한 설치되지 않은 경우 기본 디렉터리는 이고 mnt_t
, 설치되어 Samba를 사용할 수 없는 경우 기본 디렉터리는 dosfs_t
.
나는 다음 명령으로 이것을 확인했습니다.
ls -ldZ
열쇠는 어디에 있습니까? 나에게는 충분하지만 일부는 더 자세히 표시하기 위한 것입니다.Z
l
getfacls
https://superuser.com/questions/617777/how-do-i-auto-mount-a-usb-drive-that-all-users-can-write-to
마운트 옵션 도 고려했지만 user
지금은 필요하지 않습니다. 적어도 이 문제를 해결하는 데는 필요하지 않습니다.
2개의 다른 SELinux 명령이 도움이 될 수 있지만 "-d" 옵션이 있든 없든 이를 사용하여 콘솔이나 로그 출력을 생성할 수 없었 audit2why
습니다 audit2allow
.
https://opensource.com/article/18/12/troubleshooting-hardware-problems-linux
방화벽 명령을 사용하면 다른 시스템을 연결할 수 있습니다.
다음을 사용하여 로컬에서 테스트할 수 있습니다.
> smbclient --user="<user>%<password>" -L '//<machine>/<share>'
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
... Disk
smbtest Disk testing
IPC$ IPC IPC Service (Samba #.#.#)
SMB1 disabled -- no workgroup available
> smbclient --user="<user>%<password>" '//<machine>/<share>' --command 'ls'
`NT_STATUS_ACCESS_DENIED listing \*`
> journalctl -u smb -b
......
chdir_current_service: vfs_ChDir(<path>) failed: Permission denied. Current token: uid=#, gid=#, 1 groups: #
......
...NT_STATUS_INTERNAL_ERROR...
/etc/fstab
디스크 GUI를 통해 사용자 정의 수동 설치 라인을 설정하고 내 사용자 대신 내 사용자 아래에 수동으로 설치했습니다. 더 /mnt/...
많은 /run/...
사용자 및 그룹에 대해 권한을 열려고 시도했지만 다른 사용자에게는 항상 읽기 권한이 있으므로 오해의 소지가 있습니다. .
이 기사와 같은 다른 방법을 시도했지만 혼란스러운 오류 메시지를 발견하고 완전히 효과가 없다고 생각했습니다. CentOS7에서 Samba와 마운트된 드라이브 공유
mount: <path>: wrong fs type, bad option, bad superblock on /dev/sd??, missing codepage or helper program, or other error.
SELinux: mount invalid. Same superblock, different security settings for (dev sd??, type exfat)
> sudo semanage fcontext --add --type "samba_share_t" '/mnt/...'
ValueError: File specification can not include spaces
어쨌든 언급된 마스킹 옵션을 설치해야 하기 때문에 이는 올바르지 않으므로 접미사 또는 와일드카드가 있는 부분 이름과 같은 올바른 파일 컨텍스트 패턴을 알아낼 필요가 없습니다 (/.*)?
. 다음 아이디어 명령이 있습니다 sudo semanage fcontext -l | less
.
다시 설치하여 보안 설정을 변경할 수 없다는 것을 알았기 때문에 이것은 나에게 효과가 없었습니다. 따라서 나중에 context
완료되었다고 생각한 옵션에서만 작동했습니다.
이제 파일 시스템 테이블 파일을 업데이트했지만 터미널을 사용하여 드라이브를 마운트하는 것과 디스크 GUI를 사용하는 것 사이에는 여전히 이상한 점이 있을 수 있습니다. 동일한 옵션 행과 올바른 순서가 있다고 생각하지만 한 가지 방법은 여전히 dosfs_t
..
기타 유용한 명령:
sudo umount '/mnt/...'
lsblk
dmesg | less
var 폴더에는 서비스에 대한 로그가 거의 없으므로 systemd를 사용하여 이를 포함할 수 있습니다.
smbpasswd
smbstatus
sudo pdbedit -L
cat /etc/passwd | grep <user>