CentoOS 7 Samba 공유 USB NTFS

CentoOS 7 Samba 공유 USB NTFS

내 상황의 모든 세부 사항을 포괄하는 답변을 찾을 수 없는 것 같습니다. 나는 다음의 지시를 따랐다.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열쇠는 어디에 있습니까? 나에게는 충분하지만 일부는 더 자세히 표시하기 위한 것입니다.Zlgetfacls

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 | lessvar 폴더에는 서비스에 대한 로그가 거의 없으므로 systemd를 사용하여 이를 포함할 수 있습니다.
smbpasswd
smbstatus
sudo pdbedit -L
cat /etc/passwd | grep <user>

관련 정보