なぜユーザーは誰も所有していないディレクトリを削除できないのでしょうか?

なぜユーザーは誰も所有していないディレクトリを削除できないのでしょうか?

資格情報なしでローカルネットワーク上のSMB経由でメディアファイルを共有するために基本的なsamba shireを構成しました(つまり、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+found1 つのデータ ディレクトリに残し、マウント ポイントではなくそのデータ ディレクトリを共有します。

# 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

関連情報