사용자가 누구에게도 속하지 않은 디렉터리를 삭제할 수 없는 이유는 무엇입니까?

사용자가 누구에게도 속하지 않은 디렉터리를 삭제할 수 없는 이유는 무엇입니까?

자격 증명 없이(예: 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

관련 정보