자격 증명 없이(예: SMB 게스트로) 로컬 네트워크에서 SMB를 통해 미디어 파일을 공유하도록 기본 삼바 샤이어를 구성했습니다.
/etc/samba/smb.conf
[media]
Comment = Media directory
Path = /mnt/media
Browseable = yes
Writeable = Yes
create mask = 0666
directory mask = 0777
Public = yes
Windows에서 using SMB라는 디렉터리를 만들면 example
디렉터리 구조는 다음과 같습니다.
ls -alh
total 28K
drwxrwxrwt 4 root root 4.0K Oct 21 13:44 ./
drwxr-xr-x 3 root root 4.0K Oct 20 13:33 ../
drwxrwxrwx 2 nobody nogroup 4.0K Oct 21 13:44 example/
drwx------ 2 root root 16K Oct 20 13:36 lost+found/
lsattr
--------------e----- ./example
표준 사용자 계정을 사용하여 시스템에서 디렉터리를 삭제하려고 하면 오류 메시지가 나타납니다.
rmdir: 'example'을 삭제할 수 없습니다: 작업이 허용되지 않습니다
하지만 Windows에서는 SMB를 사용하여 폴더를 삭제할 수 있습니다. 무슨 일이 일어나고 있나요? 로컬 UNIX 사용자가 SMB를 통해 게스트 생성 파일을 삭제하거나 수정하도록 허용하려면 어떻게 해야 합니까?
답변1
상위 디렉터리의 권한에 있는 플래그는 t
해당 디렉터리(또는 루트 디렉터리)의 소유자만 해당 디렉터리에서 파일이나 디렉터리를 삭제할 수 있음을 선언합니다.
Samba는 사용자 계정 액세스를 제공하도록 구성된 것으로 보입니다 nobody
. 귀하는 아니므 nobody
로 디렉토리를 삭제할 권한이 없습니다.
최상위 수준에서는 파일과 디렉터리를 생성하지 않는 것이 좋습니다. 데이터 디렉토리를 유지 lost+found
하고 마운트 지점 대신 해당 데이터 디렉토리를 공유하십시오.
# Remove global write permission from the mountpoint
chmod go-w,-t /mnt/media
# Create your files and directories in here
mkdir -m777 /mnt/media/data
이제 Samba 데이터 경로를 수정하세요.
[media]
comment = Media directory
path = /mnt/media/data
browseable = yes
read only = no
guest ok = yes
force directory mode = 0777
force create mode = 0666