
資格情報なしでローカルネットワーク上の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+found
1 つのデータ ディレクトリに残し、マウント ポイントではなくそのデータ ディレクトリを共有します。
# 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