Как Samba формирует права на создаваемые в шаре файлы/каталоги?

Как Samba формирует права на создаваемые в шаре файлы/каталоги?

[ 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

  1. Создаю с win-клиента известной Самбе учёткой amok в шаре новый файл и каталог
  2. Копирую с win-клиента известной Самбе учёткой amok в шару существующий файл и каталог
  3. Создаю с другого win-клиента не известной Самбе учёткой XPMUser в шаре новый файл и каталог
  4. Копирую с другого win-клиента не известной Самбе учёткой XPMUser в шару существующий файл и каталог

Как видно, в требуемые 0777 попадают не все файлы/каталоги! Более того, для каталогов с точки зрения итоговых прав доступа есть разница кто их создаёт/копирует — amok или XPMUser! Но и это не всё — Самба ещё умудряется различать скопированный и созданный именно amok'ом файлы.

При создании amok'ом нового файла в шаре из лога /var/log/samba/log.MACHINE удалось выудить это:

При создании amok'ом нового каталога в шаре из лога /var/log/samba/log.MACHINE удалось выудить это:

[ 4. ПРОБЛЕМА/ВОПРОСЫ ]

  1. Почему несмотря на заданную опцию force user права доступа вновь создаваемых файлов/каталогов зависят от того, из-под какой именно win-учётки их создают?
  2. Каков алгоритм формирования итоговых прав вновь создаваемых в шаре Самбы файлов/каталогов (где задаются и от чего зависят изначальные права; количество и порядок наложения масок самой Самбы на эти права; участвует ли тут файловая система Убунты со своим umask, если да, то на каком этапе; участвует ли клиентская Windows)? Почему при заданных опциях «force create mode = 0777» и «force directory mode = 0777» итоговые права отличны от 0777?
  3. Где найти свежий/нормальный/с_примерами список-описание опций smb.conf (ru/eng)? Этот видел.

Помогите, пожалуйста, решить данную, как мне сначала казалось — простейшую, задачу. Без нормальной теоретической подготовки я могу ещё долго безрезультатно проводить натурные эксперименты и заниматься хернёй высчитывая от балды побитово права и umask'и :(

P. S. Был удивлён, что log level = 10 Самбы стабильно «вешает» tail -f :)

Не шмогла.

Почистил содержимое папки и снова провёл эксперимент по наполнению:

Не понял, к чему был ваш комментарий. На всякий случай напомню часть своей задачи: «хочу чтобы всё в шаре было 0777». У вас так?

У меня так, как приведено выше. Со всех машин (win) всё доступно и всё работает (что соответствует требованиям), можно исправить create mask, directory mask на желаемые.

попробуй прямо на сервере из-под юзеров amok и nobody файлы и каталоги посоздавать в твоей шаре. посмотри что без самбы будет.

можно попробовать разрулить на уровне фс при помощи acl.

Что вы вкладываете в эти понятия? Ещё раз повторюсь, хочу получить 0777 для всего в шаре, и не получаю.

И помимо просто «работает» мне бы ещё хотелось разобраться «как и почему». Вам удалось?

Вот, например, почему советуете заменить/добавить? опции create mask, directory mask. У меня же есть force create mode, force directory mode — их недостаточно или я их неверно использую под свою задачу?

Из-под amok на Убунте:

Т. е. то, как и должно быть — 0775 для каталога и 0664 для файла — учитывая umask 0002 для amok.

Как из-под nobody что-то создать — не знаю (пробовал "su - nobody" — пароль какой-то требует). Также как и узнать какая у него umask.

Я пока не хочу применять другие методы. Хотелось бы разобраться с этим.

Самба шара раздаётся от пользователя, который был определён в конфиге. Владелец шары этот же пользователь. Все создаваемые файлы/каталоги принадлежат этому пользователю и он имеет право делать что хочет:

[ 2. ЗАДАЧА ] Сделать общедоступную шару для win-клиентов с полным беспределом: все могут всё (создавать файлы и каталоги любого уровня вложенности, удалять всё, запускать *.exe).

Хорошо, я понял: у вас всё работает так, как вам нужно. Только вот вы цитируете п. 2 из стартового сообщения и почему-то на нём останавливаетесь. А ведь главный там — п. 4 :)

Очевидно я сконцентрировался на *ЗАДАЧЕ* и моё решение её выполняет вполне с любых клиентов.

Спасибо за информацию.

Теперь буду ждать тех, кто сконцентрируется на ВОПРОСАХ :)

ну, попробуй в секции global прописать obey pam restrictions = no. говорять в убунтах оно yes по дефолту. проверь, короче.

Да, было прописано по умолчанию:

Заменил на no и, вроде, заработало.

Можешь кратко объяснить взаимосвязь?

так вроде или заработало?

Можешь кратко объяснить взаимосвязь?

самба пускает на каждого юзера по процессу, который, который, внезапно, работает в _системе_ с _правами_ этого юзера. наложи на эту мысль то, что ты знаешь о pam, ну и учти, что obey pam restrictions - это «придерживаться ограничений pam».

«Не придерживаться» же?

вот тут вроде чего-то про это есть.

мой гуглопереводчик врет?

А, я с мобильника просмотрел, что ты про сам параметр писал, а не про случай, когда он «no»

Я уже пытался мучить эту официальную доку. Там везде при описании опций конфига стоят ссылки на несуществующий HTML-файл smb.conf.5.html

Придётся юзать man smb.conf.

О PAM я не знаю ничего. Однако вон Wiki подсказывает, что это придумка для авторизации. Поэтому я и не понимаю, как что-то связанное с авторизацией, влияет на права создаваемых файлов?! Раз файл нам уже позволяют создать, значит авторизацию мы так или иначе прошли? Причём в моём случае как таковой авторизации-то и не нужно, ибо разрешён безавторизационный доступ guest (предположу, что авторизация есть всегда, даже когда её формально быть не должно, но это сути дела не меняет).

Погонял ещё тесты, в т. ч. с вложениями: всё пляшет, так что большое спасибо!

Косяк с результирующими правами, отличными от требуемых 0777, возникает из-за того, что из-за этого PAM на права создаваемого файла накладывается какая-то маска?

Pam не только авторизация но и сессии. Погугли linux pam restrictions.

Начал гуглить, но что-то объём информации огромен и неясно с какой стороны подступиться.

Пока пытаюсь осмыслить логически, по-простому.

Очевидно, что включённая опция конфига obey pam restrictions = yes для знакомого Самбе (и Убунте) пользователя amok добавляет ещё одну итерацию где-то, в результате получается, что при неких операциях с файлом/каталогом на заданные в Самбе принудительные права 0777, накладывается маска umask 0002 (которая действительно равна 0002 для пользователя amok в Убунте).

Вопрос в том, почему при создании файла в шаре маска не срабатывает, а при копировании — срабатывает. И то и другое действие осуществляет amok. Получается, что PAM не участвует при создании файла в шаре, но активируется при копировании?

C каталогами ещё непонятнее: тут PAM работает всегда, и при создании в шаре каталога, и при копировании в неё существующего.

📎📎📎📎📎📎📎📎📎📎