Компы и автомобили
Постановка задачи
Возникла необходимость запилить файл-сервер на Samba и дать ряду пользователей возможность рулить правами доступа на отдельные каталоги. Система — FreeBSD 10.1 amd64, файло будет лежать на ZFS. Версия Samba — 3.6.24.
Исследование задачи показало, что стандартными правами Unix (aka «Unix mode») тут не обойтись. Надо использовать расширенный набор ACL. Например, нужно, чтобы к каталогу имели доступ более одной группы, но не все группы (т. е. разрешения для other тут не прокатит). Ну и на некоторые папки нужно давать доступ не отдельным группам, а прямо отдельным пользователям.
Общие сведения
По дефолту, как известно, в юниксах права на файлы и каталоги расставляются по схеме «ugo» — «user-group-other»). Во фре с помощью утилиты setfacl можно задавать права по двум схемам — POSIX 1.E и NFSv4, в зависимости от файловой системы. По факту же POSIX 1.E здесь сильно редуцирован — до этой самой схемы ugo. Тогда как в действительности POSIX 1.E слегка побогаче (подробности можно вкурить отсюда). Как гласит man setfacl:
The access permissions field contains up to one of each of the following: ‘r’, ‘w’, and ‘x’ to set read, write, and execute per‐ missions, respectively. Each of these may be excluded or replaced with a ‘-’ character to indicate no access.
Что в переводе означает: «Поля с разрешениями содержат букавки r, w или x для чтения, записи или выполнения соответственно».
Но это всё нам не очень интересно, так как у нас ZFS, а на ZFS ACL по умолчанию соответствуют схеме NFSv4.
Тюнинг ZFS
Поэтому прежде чем заюзать всю эту красоту с крутыми ACL на ZFS, необходимо ZFS слегка потюнить. А именно, проделать такое:
В данном случае storage0 — это имя моего ZFS-пула
zfs set aclmode=passthrough делает так, что если над папкой выполняется chmod, то при наличии у папки расширенных ACEs (access control entries) (расширенные — это те, которые помимо стандартных @owner, @group, @other), то эти ACL при этом НЕ ИЗМЕНЯЮТСЯ.
Также там есть режимы:
- discard — т. е. никаких ACL сверх стандартного unix mode сохраняться не будет;
- groupmask — новые ACL по итогу будут выставляться так, чтобы они не превышали тех, которые принадлежат @group, за исключением случая, если UID пользователя в ACL совпадает с UID владельца каталога или файла. В этом случае выставляются права не выше, чем у владельца файла. Пока даже не могу предположить, для чего такой режим может использоваться.
Если коротко, то zfs set aclinherit=passthrough необходима, для того, чтобы ACL свежесоздаваемых файлов и каталогов наследовались от каталога, в котором они создаются. Есть ещё режим passthrough-x — то же самое, что passthrough, только бит «executable» выставляется только в случае, если создающее файл приложение явным образом требует у создаваемого файла выставить бит «executable». Подробности можно вкурить тут.
Правка прав доступа из винды
В условиях задачи была заявлена необходимость дать некоему пользователю возможность управления доступом на каталоги в расшаренных папках. Причём от тонкостей командной строки пользователь бесконечно далёк, но может пользоваться виндовым диалогом прав доступа (который в свойствах папок или файлов в винде на вкладке «Безопасность» находится).
Поэтому устанавливаем владельца всех папок в шаре на определённый аккаунт, который будет админским. Допустим, это будет учётка i.ivanov. Тогда делаем так:
Первый find выставляет права full_set (это сокращение на «Полный доступ») на каталоги, а второй find — на файлы. Два find необходимы потому, что в синтаксисе команды setfacl при установке прав на каталог есть ещё модификатор «:fd:». Он означает, что права нижележащих каталогов должны наследоваться от вышестоящих. У файлов такого модификатора нет (т. е. в ACL на файлы он не предусмотрен). Если попытаться задать права на файл в формате -m u:i.ivanov:full_set:fd:allow, то setfacl выдаст ошибку.
Далее нам надо замапить группы Unix на группы в Samba. Если этого не сделать, то в диалоге «Безопасность» на винде будут видны пользователи файл-сервера (их отдаёт Самба), но не будет видно групп. Если же назначить группу руками через setfacl, то группа будет видна как «Unix Group\unixgroup»:
Но из виндового диалога добавить юниксовые группы не удастся — их там просто не видно. Чтобы они стали видны в этом диалоге, необходимы дополнительные телодвижения. Допустим, у нас есть на файл-сервере группы buhgalteria, common, engineers и bosses. Чтобы эти группы стали видны на Windows, делаем так:
И после этого в диалоге добавления прав будут присутствовать соответствующие группы. Обращаю внимание, что если имена групп NT у вас на русском, то добавлять их в маппинг надо в кодировке UTF-8.
Настройка собственно Samba
Отключаем маппинг атрибутов DOS в файлах на exec-биты и включаем хранение атрибутов DOS в виде дополнительных файлов с атрибутами. Это не обязательно, просто меня бесит, что свеже-создаваемые в SMB-шарах файлы имеют атрибут «исполняемых» при просмотре прямо в консоли сервера. Это криво и несекурно — мало ли, кто там чо зальёт.
# Disable mapping DOS bits
map hidden = no
map system = no
map archive = no
# Use extended attributes to store file modes
store dos attributes = yes
Отключаем unix extensions (они нужны для того, чтобы Самба могла работать с расширениями CIFS от HP — там можно реализовывать симлинки, хардлинки и прочее. Эти расширения могут использовать разные другие SMB-клиенты, но винда их не поддерживает. Клиенты у нас в основном на винде — поэтому unix extensions нам ни к чему. Также выставляем параметры наследования и режима обработки ACL:
- nt acl support — включает режим маппинга NT-like ACL на ACL файловой системы;
- inherit acls — включает режим наследования ACL от каталога, в котором создаются новые файлы и каталоги. Без этого параметра дополнительные ACL не будут наследоваться для новых файлов, будут наследоваться только unix mode разрешения;
- inherit owner — включает режим наследования владельца каталога, в котором создаётся файл. Без этого параметра владельцем будет становиться тот пользователь, который этот файл создаёт. В рамках нашей задачи наследование требуется, поэтому включаем;
- inherit permissions — включает наследование unix mode разрешений;
- map acl inherit — Самба будет мапить флаги «наследовать права от родительского каталога» в NT acls на файловую систему.
И в настройках шары делаем так:
На этом, собственно, всё. А теперь — дискотека! 🙂
SAMBA спрашивает логин и пароль при доступе по сети (еще раз, сори)
Всем огромный привет! У меня CentOS 8 поставил sambу… конфиг:
что не так не пойму, до этого ставил и на ура … может мой конфиг не айс?
Например, нужные пользователи (в т.ч. nobody), не заведены на бэкенде утилитой smbpasswd.
Также у опубликованных директорий могут быть неверные «локальные» права.
Проблемы с форматированием кода.
нужные пользователи (в т.ч. nobody), не заведены на бэкенде >утилитой smbpasswd
Уважаемый,
NDfan , а как это сделать? Ни разу не делал и не в одном мане не находил
smbpasswd -a nobody smbpasswd -e nobody
Если нужен гостевой доступ попробуй так
и всеравно не пускает
А подключение производится с чего?
с Windows 7 по сети
В настройках общего доступа случаем не включен доступ с парольной защитой?
На компе с самбой выполни
а правильный синтаксис, уважаемый?
Сори ключ -L забыл
после ребута, вообще перестало пускать ((( а, вообще, это нормально:
нет, сори, по имени компьютера, а по IP все норм — также не пускает без пароля какого-то))))
Пальцем в небо, закоменьть server min protocol = NT1
не изменилось, зато по netbios name стало пускать с запросом опять логина и пароля ( до этого вообще не пускало)
Смотрю исходный конфиг, и выработанный в ходе беседы, и многое вызывает сомнения. Самое главное — закомментированное имя раздела будет трактоваться интерпретатором не как выключенный блок (подозреваю, цель была такова), а как просто как отсутствующая строка.
А это значит, что весь массив параметров просуммировался с [global] (см. вывод своего testparm), что может приводить к неожиданному поведению.
У меня есть небольшая памятка по настройке (на основе мурзилки от Sander Van Vugt, для подготовки к сертификации по 7-й части), плюс личные модификации.
Наверное, многое можно сделать лучше, но работает штатно. Интеграция с Windows была не очень интересна, но должна частично поддерживаться (подключение к бездоменному stand-alone).
Inherit owner windows and unix
Эта статья в архиве. Новая версия доступна по адресу: http://www.lissyara.su/?id=1791
Возникла необходимость сделать в филиалы файлопомойки не на винде. Альтернатива известна — samba. Однако, было требование — на местах есть админы, и файлопомойкой должны рулить они. Галочками, из-под винды. Ибо нехорошо травмировать несчастных виндовых админов вещщами типа getfacl/setfacl. Им и так тяжело :).
На этом моменте затруднений возникло немного (собственно, на галочках — тока одно, ибо в мане по smb.conf всё хорошо написано), одно из самых главных — я не мог воткнуть машину в домен, но к делу оно отношения не имеет.
Итак. Задача — самба с галками, в домене. Поехали:
Лезет синее окошко, где выбираем такие опции:
Собственно, у вас они могут и не все быть такие, однако, из необходимых — это winbindd, поддержка ACL и AD. ПОсле инсталляции, идём ставить керберос:
Тут тоже имеем голубенькое окошко:
В нём я ничё не выбрал — у меня будет LDAP из AD, проверку паролей выполняют политики домена, а иксов на сервере отродясь не держал.
После инсталляции, рисуем конфиги:
/etc/krb5.conf
Комментарий к конфигу кербероса — у меня, с этой машины, домен пингуется и резольвится по имени:
Поэтому я указал имя домена — контроллеров три, и в случае падения какого-то — автоматически подцепится другой.
/etc/hosts
Надо заметить, что эти данные соответствуют имени хоста:
После чего, получаем билет от кербероса (в этом и следующем действии используется доменный пользователь. Иногда, его приходится указывать как lissyara@MY-DOMAIN.LOCAL — иначе не прокатывает):
И вводим машину в домен:
Можно добавлять строчку в /etc/rc.conf :
и запускать самбу:
Для вящей красоты, можно сделать так:
Вот, пожалуй и всё. Галочки прекрасно ставятся, поведение как у винды. Тока денег платить не надо, да активации не просит 🙂
P.S. Где-нить в процессе, до запуска самбы, не забываем включить ACL на самой файловой системе, где у нас шары, что-то типа такого:
P.S.2 Владельцы контроллера домена с русской виндой, скорей всего, будут летать как фанера над парижем — я слабо представляю в какой кодировке надо подсовывать юзеров в таком случае 🙂
P.S.3 Для тех кто в танке — до кучи можно выбрать фряху из под винды, через управление компьютером -> подключиться к другому. И точно как с виндой рулить подключенными юзерами и даже рестартовать сервисы.
размещено: 2007-06-15,
последнее обновление: 2008-11-11,
автор: lissyara
Kolesya, 2007-06-15 в 13:30:46
самба должна нормально пережевать .
я в консоли (кои8) пишу в smb.conf
write list = «@MY-DOMAIN\Злой перец»
и все и «@MY-DOMAIN\Злой перец» нормально шарится 🙂
s.romanov, 2007-06-15 в 13:39:10
всё замечательно только не забываем про ограничение 256 обьектов на файл, если больше облом. В своё время из-за этого отказался от ACL, внесение изменений в исходники не помогли, может в 7-ке что-то измениться
2 Kolesya
я про chown
2 s.romanov
честно говоря, при использовании более 10 юзеров — имеет смысл пересмотреть структуру AD и заюзать группы
Kolesya, 2007-06-15 в 17:43:54
по поводу групп — согласен с Лисом на 200%.
2 lissyara
Про chown как-то не подумал, у меня юзверы все в буржуйской раскладке и таких вопросов не возникает
GR, 2007-06-15 в 19:37:56
Угу map WidowsID —> UID на каждом таком серваке будет уникальным. Увы без правки схемы AD и др. танцев с бубном красиво не лечится .
э.
и что? если имеется ввиду перенос данных — то можно перенести и /var/db/samba
Пытаюсь поставить галочки администратору — винда замерзает в логах самбы сыпится с большой скоростью
auth/auth_util.c:create_token_from_username(1110)
sid_to_uid for administrator (S-1-22-1-10002) failed
Что делать? куда копать?
Tah, 2007-06-29 в 22:38:59
2lissyara
честно говоря, при использовании более 10 юзеров — имеет смысл пересмотреть структуру AD и заюзать группы
если быть более точным, не более 16-ти групп на обьект. И этого на самом деле более чем достаточно.
2LMik
sid_to_uid for administrator (S-1-22-1-10002)
это короткий сид, используемый для аутентификации пользователя на локальном компьютере, для аутонтификации в сети используется полный(длинный сид). А вот почему передается короткий — пока даже и не скажу. нужно в гугл
uid=10005(moro) gid=10000(domain users) groups=10000(domain users)
добавил в конфиг
winbind enum users = yes
winbind enum groups = yes
и система стала видеть все группы в которые входит юзер на PDC сервере
uid=10005(moro) gid=10000(domain users) groups=10000(domain users), 10010(domain admins), 10001(BUILTIN\administrators), 10002(BUILTIN\users)
GR, 2007-06-15 в 19:37:56
Угу map WidowsID —> UID на каждом таком серваке будет уникальным. Увы без правки схемы AD и др. танцев с бубном красиво не лечится .
лечится, использованием idmap_rid
twincode, 2007-08-14 в 10:07:40
У меня одна бага проявилась виндовые права может менять только тот кто создал ресурс. В чем может быть причина?
На самбе samba-3.0.26a_1,1 не работает наследование. Вернее, работает слишком хорошо — его нельзя галками отменить.
Нормально работает на samba-3.0.25a,1.
=============
тока что напоролся — успел обновить почти филиалы, хорошо не в один день делал.
Пришлось ресторить пакет с того который не успел обновить 🙂
skif, 2008-03-31 в 15:21:09
а тоже самое без домена кто нить делал?
simplexe, 2008-04-17 в 8:59:11
ls -la | grep вася
drwxr-xr-x 2 10051 пользователи дом 512 16 апр 09:22 вася
Anton To, 2008-05-20 в 0:49:55
Параметры create mask и directory mask можно убрать, они не работают, т.к перекрываются параметром inherit permissions = yes.
Но возможно правильней их оставить и поставить
inherit permissions = no (или удалить вообще, т.к. no — по умолчанию)
DarkHost, 2008-05-27 в 15:38:24
Гораздо интереснее была бы статья Samba + UnixACL, да еще чтобы тоже галочки. Поскольку не всем нужен DC.
Сделал всё по статье, но галочки не работали. За что боролись-то? )))
В-общем, в конфиг самбы надо добавить
nt acl support = yes
и все галочки будут работать как родные
(Исправьте конфиг, пожалста)
Хау-Ту не подразумевает отключения думалки, и тем более не отвменяет чтения документации.
Также могут быть различия между версиями самбы.
Dmitry, 2008-07-13 в 22:56:29
Юмор оценил ))
Перефразируем так — «Для версии самбы 3.0.28 в конфиг включить указанную строку» (FreeBSD 7.0, GENERIC kernel)
Добрый вечер!
В CentOS 5.2 все равно галки не работают (
Точнее они позволяют добавить ACL (юзера или группу), но при этом эти ACL наследуются вложенными объектами и там их удалить не получается. При нажатит Apply ACL восстанавливаются. Перелопатил кучу источников, ответа не нашел.
Изменения
inherit acls, inherit permissions ниче не дают. ACLки удаляются только в консоли линуха.
Система CentOS 5.2, Samba 3.0.28, Win2003R2
Если есть идеи помогите плз
1. Прочтите текст в окошке который стёрли до того как ввести сообщение.
2. Прочтите камменты к статье.
3. Подумайте.
Oloremo, 2008-09-18 в 11:56:04
Один вопрос — БЕЗ ADS ACL не работают?
ПРО ГАЛОЧКИ В WinXP pro.
Чуть не застрелил два компа (сервант и клиента).
Подключил шару Фряшную, пытался найти в свойствах права на доступ юзеров на папки. час сорок фряху пытал, проверят конфиги, прочее. пока не сообразил, что у меня на клиенте (WinXP pro) стоит галочка:
Пуск -> Настройка -> Панель управления -> Свойства папки.
Закладка «Вид» -> Убрать галочку с «Использовать простой общий доступ к файлам (рекомендуется)»
На этапе ввода домен, незнает команду net join -U подскажите где копать?
Ссылка на форум для красоты дана?
Вот по ссылке и копать.
Здравствуйте!
[2011/02/01 01:19:22, 0] smbd/service.c:191(set_current_service)
chdir (/usr/home/filez/transmission/downloads) failed
вот такая у меня проблема. на папку еще имеет права трансмиссия и периодически пропадает из общего доступа эта папка и в логах такая срочка. что делать?
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов. 2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540 2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма 2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh 2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ 2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией. 2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat 2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp. 2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл. 2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления… 2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий. 2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp. 2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG 2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк 2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты. 2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации. 2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =) 2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы — ZFS 2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к 2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача — объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах. 2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела 2010-04-30, gonzo111
proftpd file auth"a
Proftpd — квоты и авторизация из файлов, без использования базы данных и/или системных пользователей 2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email. 2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию… 2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон. 2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы 2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org. 2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов. 2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента 2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding. 2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики 2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams — примеры конфигов с объяснениями. Установка SqStat. 2009-12-19, schizoid
mpd5 + radius + ng_car + Abills
Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car 2009-11-16, lissyara
UFS->ZFS
Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386. 2009-11-13, gx_ua
fusefs-ntfs
Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD 2009-11-12, Morty
LiveCD
Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД. 2009-09-27, lissyara
Samba как PDC
Контроллер домена — аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =) 2009-08-30, terminus
ipfw nat
Подробное руководство по ipfw nat, сложные случаи конфигурации. 2009-08-24, levantuev
HotSpot
Установка Hotspot системы в общественное заведение.
|
Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.