Здравствуйте.
[ 1. ДАНО ]
Домашняя ЛВС.
Сервер - Ubuntu Server 16.04.1 и Samba 4.3.11.
Клиенты - Win7Pro (учётка amok — в Самбе/Убунте есть), WinXP (учётка XPMUser — в Самбе/Убунте отсутствует).
[ 2. ЗАДАЧА ]
Сделать общедоступную шару для win-клиентов с полным беспределом: все могут всё (создавать файлы и каталоги любого уровня вложенности, удалять всё, запускать *.exe).
[ 3. ЧТО СДЕЛАНО ]
Создал каталог /usr/local/samba_shara, сменил пользователя/группу на nobody/nogroup и выставил ему права 0777.
Частично smb.conf
[global]
server role = standalone server
security = user
workgroup = WORKGROUP
guest account = nobody
map to guest = bad user
[shara]
path = /usr/local/samba_shara
browseable = yes
writable = yes
guest ok = yes
force user = nobody
force group = nogroup
force create mode = 0777
force directory mode = 0777
Провожу эксперимент:
- Создаю с win-клиента известной Самбе учёткой amok в шаре новый файл и каталог
- Копирую с win-клиента известной Самбе учёткой amok в шару существующий файл и каталог
- Создаю с другого win-клиента не известной Самбе учёткой XPMUser в шаре новый файл и каталог
- Копирую с другого win-клиента не известной Самбе учёткой XPMUser в шару существующий файл и каталог
Результат ниже:
$ ls -l --group-directories-first /usr/local/samba_shara/
drwxrwxr-x 2 nobody nogroup 4096 Feb 8 00:40 copied by amok
drwxrwxrwx 2 nobody nogroup 4096 Feb 9 00:17 copied by XPMUser
drwxrwxr-x 2 nobody nogroup 4096 Feb 9 00:15 created by amok
drwxrwxrwx 2 nobody nogroup 4096 Feb 9 00:17 created by XPMUser
-rwxrwxr-x 1 nobody nogroup 0 Feb 8 00:39 copied by amok.txt
-rwxrwxrwx 1 nobody nogroup 0 Feb 8 00:53 copied by XPMUser.txt
-rwxrwxrwx 1 nobody nogroup 0 Feb 9 00:05 created by amok.txt
-rwxrwxrwx 1 nobody nogroup 0 Feb 9 00:17 created by XPMUser.txt
Как видно, в требуемые 0777 попадают не все файлы/каталоги! Более того, для каталогов с точки зрения итоговых прав доступа есть разница кто их создаёт/копирует — amok или XPMUser! Но и это не всё — Самба ещё умудряется различать скопированный и созданный именно amok'ом файлы.
При создании amok'ом нового файла в шаре из лога /var/log/samba/log.MACHINE удалось выудить это:
$ tail -f /var/log/samba/log.fat | grep "Новый"
...
unix_mode(Новый текстовый документ.txt) returning 0777
nobody opened file Новый текстовый документ.txt read=Yes write=Yes (numopen=2)
set_file_oplock: granted oplock on file Новый текстовый документ.txt, 802:6600f6:0/2176840990, tv_sec = 589b87fe, tv_usec = 41953
...
При создании amok'ом нового каталога в шаре из лога /var/log/samba/log.MACHINE удалось выудить это:
$ tail -f /var/log/samba/log.fat | grep "Новая папка"
...
unix_mode(Новая папка) returning 0777
open_file_ntcreate: FILE_OPEN requested for file Новая папка and file doesn't exist.
unix_convert called on file "Новая папка"
unix_convert begin: name = Новая папка, dirpath = , start = Новая папка
New file Новая папка
Новая папка reduced to /usr/local/samba_shara/Новая папка
open_directory: opening directory Новая папка, access_mask = 0x17019b, share_access = 0x0 create_options = 0x1, create_disposition = 0x2, file_attributes = 0x10
unix_mode(Новая папка) returning 0777
...
[ 4. ПРОБЛЕМА/ВОПРОСЫ ]
- Почему несмотря на заданную опцию force user права доступа вновь создаваемых файлов/каталогов зависят от того, из-под какой именно win-учётки их создают?
- Каков алгоритм формирования итоговых прав вновь создаваемых в шаре Самбы файлов/каталогов (где задаются и от чего зависят изначальные права; количество и порядок наложения масок самой Самбы на эти права; участвует ли тут файловая система Убунты со своим umask, если да, то на каком этапе; участвует ли клиентская Windows)? Почему при заданных опциях «force create mode = 0777» и «force directory mode = 0777» итоговые права отличны от 0777?
- Где найти свежий/нормальный/с_примерами список-описание опций smb.conf (ru/eng)? Этот видел.
Помогите, пожалуйста, решить данную, как мне сначала казалось — простейшую, задачу. Без нормальной теоретической подготовки я могу ещё долго безрезультатно проводить натурные эксперименты и заниматься хернёй высчитывая от балды побитово права и umask'и :(
Спасибо!
P. S. Был удивлён, что log level = 10 Самбы стабильно «вешает» tail -f :)