資格情報なしで(たとえば、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