
Я настроил базовый Samba Shir для обмена медиафайлами по протоколу 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
Когда я создаю каталог, вызываемый example
с помощью SMB в Windows, структура каталога выглядит следующим образом:
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»: Операция не разрешена
Тем не менее, я могу удалить папку с помощью SMB в Windows. Что здесь происходит, и как я могу разрешить любому локальному пользователю unix удалять или изменять файлы, созданные гостем через SMB?
решение1
Флаг t
в разрешениях родительского каталога объявляет, что только владелец каталога (или root) может удалить из него файл или каталог.
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