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

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

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

관련 정보