ユーザーが誰にも属していないディレクトリを削除できないのはなぜですか?

ユーザーが誰にも属していないディレクトリを削除できないのはなぜですか?

資格情報なしで(たとえば、SMBゲストとして)、ローカルネットワークでSMBを介してメディアファイルを共有するようにデフォルトのSambaシャイアを設定しました。

/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

関連情報