Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> главная —> Архив —> SAMBA+ACL

SAMBA + правка расширенных пермишенов (ACL) через виндовые галочки

Автор: lissyara.


Эта статья в архиве. Новая версия доступна по адресу: http://www.lissyara.su/?id=1791

   Возникла необходимость сделать в филиалы файлопомойки не на винде. Альтернатива известна - samba. Однако, было требование - на местах есть админы, и файлопомойкой должны рулить они. Галочками, из-под винды. Ибо нехорошо травмировать несчастных виндовых админов вещщами типа getfacl/setfacl. Им и так тяжело :).
   На этом моменте затруднений возникло немного (собственно, на галочках - тока одно, ибо в мане по smb.conf всё хорошо написано), одно из самых главных - я не мог воткнуть машину в домен, но к делу оно отношения не имеет.
   Итак. Задача - самба с галками, в домене. Поехали:
lissyara$ cd /usr/ports/net/samba3/
lissyara$ make install clean

   Лезет синее окошко, где выбираем такие опции:
     +--------------------------------------------------------------------+
     |                    Options for samba 3.0.25a,1                     |
     | +----------------------------------------------------------------+ |
     | |  [X] LDAP         With LDAP support                            | |
     | |  [X] ADS          With Active Directory support                | |
     | |  [X] CUPS         With CUPS printing support                   | |
     | |  [X] WINBIND      With WinBIND support                         | |
     | |  [X] ACL_SUPPORT  With ACL support                             | |
     | |  [ ] FAM_SUPPORT  With File Alteration Monitor                 | |
     | |  [ ] SYSLOG       With Syslog support                          | |
     | |  [ ] QUOTAS       With Disk quota support                      | |
     | |  [X] UTMP         With UTMP accounting support                 | |
     | |  [ ] MSDFS        With MSDFS support                           | |
     | |  [ ] PAM_SMBPASS  With PAM authentication vs passdb backends   | |
     | |  [ ] CLUSTER      With experimental cluster support            | |
     | |  [ ] DNSUPDATE    With dynamic DNS update                      | |
     | |  [ ] EXP_MODULES  With experimental modules                    | |
     | |  [X] POPT         With system-wide POPT library                | |
     |-+----------------------------------------------------------------+-|
     |                       [  OK  ]       Cancel                        |
     +--------------------------------------------------------------------+

   Собственно, у вас они могут и не все быть такие, однако, из необходимых - это winbindd, поддержка ACL и AD. ПОсле инсталляции, идём ставить керберос:
lissyara$ cd /usr/ports/security/heimdal
lissyara$ make install clean

   Тут тоже имеем голубенькое окошко:
     +--------------------------------------------------------------------+
     |                    Options for heimdal 0.7.2_2                     |
     | +----------------------------------------------------------------+ |
     | |  [ ] LDAP      Use OpenLDAP as the KDC backend                 | |
     | |  [ ] CRACKLIB  Use CrackLib for password quality checking      | |
     | |  [ ] X11       Build X11 utilies                               | |
     | |                                                                | |
     | |                                                                | |
     | |                                                                | |
     | |                                                                | |
     | |                                                                | |
     |-+----------------------------------------------------------------+-|
     |                       [  OK  ]       Cancel                        |
     +--------------------------------------------------------------------+

   В нём я ничё не выбрал - у меня будет LDAP из AD, проверку паролей выполняют политики домена, а иксов на сервере отродясь не держал.
   После инсталляции, рисуем конфиги:
/etc/krb5.conf
#

[libdefaults]
        default_realm = MY-DOMAIN.LOCAL

[realms]
        MY-DOMAIN.LOCAL = {
                kdc = MY-DOMAIN.LOCAL
                admin_server = MY-DOMAIN.LOCAL
        }

[domain_realm]
        .my-domain.local = MY-DOMAIN.LOCAL

[logging]
        kdc = FILE:/var/log/krb5kdc.log
        admin_server = FILE:/var/log/kadmin.log
        default = FILE:/var/log/krb5lib.log

   Комментарий к конфигу кербероса - у меня, с этой машины, домен пингуется и резольвится по имени:
lissyara$ ping my-domain.local
PING my-domain.local (192.168.0.103): 56 data bytes
64 bytes from 192.168.0.103: icmp_seq=0 ttl=126 time=0.311 ms
64 bytes from 192.168.0.103: icmp_seq=1 ttl=126 time=0.398 ms
64 bytes from 192.168.0.103: icmp_seq=2 ttl=126 time=0.391 ms
64 bytes from 192.168.0.103: icmp_seq=3 ttl=126 time=0.470 ms
^C
--- my-domain.local ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.311/0.393/0.470/0.056 ms
lissyara$ host my-domain.local
my-domain.local has address 192.168.0.42
my-domain.local has address 192.168.0.43
my-domain.local has address 192.168.0.103
my-domain.local mail is handled by 10 exchserv.my-domain.local.
lissyara$

Поэтому я указал имя домена - контроллеров три, и в случае падения какого-то - автоматически подцепится другой.
/etc/hosts
::1                     localhost.my-domain.local localhost
127.0.0.1               localhost.my-domain.local localhost
192.168.31.10		smbsrv.my-domain.local smbsrv
192.168.31.10		smbsrv.my-domain.local.

   Надо заметить, что эти данные соответствуют имени хоста:
lissyara$ hostname
smbsrv.my-domain.local
lissyara$

/usr/local/etc/smb.conf
# SAMBA
[global]
	# Рабочая группа
        workgroup	= MY-DOMAIN
	# тип безопасности - Актив Директори
        security	= ADS
	# Сервер паролей - тут указывается контроллер домена
	# но у меня их несколько - поэтому я указал имя домена
	# благо оно резольвится в их имена.
        password server	= MY-DOMAIN.LOCAL
	# область kerberos
        realm		= MY-DOMAIN.LOCAL
	# имя машины в "сетевом окружении"
        netbios name	= SMBSRV
	# комментарий к имени машины
        server string	= SAMBA shares server
	# уровень логгирования - 0-10 - но никогда не оставляейте
	# в 10 - очень быстро засрёт раздел с логами
#       log level	= 10
	# файл логов - подробности о значении переменных
	# есть в man smb.conf
        log file	= /var/log/samba/%m.%U.log
	# максимальный размер файла лога (kB)
        max log size	= 50000
	# диапазон отмапленых winbindd`ом uid пользователей
        idmap uid	= 10000-20000
	# диапазон отмапленых winbindd`ом gid пользователей
        idmap gid	= 10000-20000
	# использовать дефолтовый домен (имя юзера можно
	# указывать без домена)
        winbind use default domain = yes
	# кодировка выводимых сообщений
        display charset	= koi8-r
	# кодировка в которой хранить на диске
        unix charset	= koi8-r
	# в какой кодировке общаться с досовскими клиентами
        dos charset	= 866
        # for mail
        template homedir = /shares/mail/%U

[printers]
        comment			= All Printers
        path			= /var/spool/samba
        printable		= Yes
#       browseable		= No
        use client driver	= yes
        public			= yes

# шара 'data'
[data]
	# каммент к шаре
        comment                 = Shares for Documents
	# путь к шаре на диске
        path                    = /shares/data
	# список тех, кому разрешён доступ на чтение
        read list               = "@MY-DOMAIN\Domain Users"
	# список тех, кому разрешён доступ на запись
        write list              = "@MY-DOMAIN\Domain Users"
	# список тех, кому разрешёно ставить те самые галки,
	# ради которых всё затевалось. инттересная особенность, в которую
	# до конца не вкурил - в одинаковых конфигурациях, иногда можно
	# указывать без домена, а иногда домен необходим.
	# Все операции этих пользователей выполняются от рута!
        admin users             = "@MY-DOMAIN\Admin Users", MY-DOMAIN\lissyara
	# ДОступ к шаре тока на чтение
        read only               = No
	# маска для создаваемых файлов
        create mask             = 0660
	# маска для создаваемых директорий
        directory mask          = 0770
	# наследовать владельца (вышестоящей директории)
        inherit owner           = yes
	# наследовать ACL 
        inherit acls            = yes
	# наследовать права
        inherit permissions     = yes
	# позвоялет редактору прав из винды корректно обрабатывать
	# наследуемые права
        map acl inherit         = yes
	# блокировки - иногда бывают грабли без этого пункта
        locking                 = no

/etc/nsswitch.conf
group: files winbind
passwd: files winbind
group_compat: nis
passwd_compat: nis
hosts: files dns
networks: files
shells: files

   После чего, получаем билет от кербероса (в этом и следующем действии используется доменный пользователь. Иногда, его приходится указывать как lissyara@MY-DOMAIN.LOCAL - иначе не прокатывает):
lissyara$ kinit lissyara
lissyara@MY-DOMAIN.LOCAL's Password:
kinit: NOTICE: ticket renewable lifetime is 1 week
lissyara$

   И вводим машину в домен:
lissyara$ net join -U lissyara
lissyara's password:
Using short domain name -- MY-DOMAIN
Joined 'SMBSRV' to realm 'MY-DOMAIN.LOCAL'
lissyara$

   Можно добавлять строчку в /etc/rc.conf:
samba_enable="YES"

и запускать самбу:
lissyara$ /usr/local/etc/rc.d/samba start
Removing stale Samba tdb files: . done
Starting nmbd.
Starting smbd.
Starting winbindd.
lissyara$

   Для вящей красоты, можно сделать так:
lissyara$ id administrator
uid=10001(administrator) gid=10002(domain users) groups=10002(domain users)
lissyara$ chown Administrator:"Domain Users" /shares/data
lissyara$ ll /shares | grep data
drwxr-xr-x  4 administrator  domain users      512 15 июн 12:31 data
lissyara$

   Вот, пожалуй и всё. Галочки прекрасно ставятся, поведение как у винды... Тока денег платить не надо, да активации не просит :)

P.S. Где-нить в процессе, до запуска самбы, не забываем включить ACL на самой файловой системе, где у нас шары, что-то типа такого:
lissyara$ umount /shares
lissyara$ tunefs -a enable /shares
tunefs: ACLs set
lissyara$ mount /shares
lissyara$ mount | grep acl
/dev/ad0s1g on /shares (ufs, local, soft-updates, acls)
lissyara$

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-ке что-то измениться

lissyara, 2007-06-15 в 14:02:50

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 и др. танцев с бубном красиво не лечится ...

lissyara, 2007-06-15 в 19:44:50

э...
и что? если имеется ввиду перенос данных - то можно перенести и /var/db/samba

LMik, 2007-06-28 в 9:50:05

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

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)
это короткий сид, используемый для аутентификации пользователя на локальном компьютере, для аутонтификации в сети используется полный(длинный сид). А вот почему передается короткий - пока даже и не скажу... нужно в гугл

moro, 2007-07-24 в 11:20:45

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)

Konstantin, 2007-08-01 в 13:13:49


GR, 2007-06-15 в 19:37:56

Угу map WidowsID --> UID на каждом таком серваке будет уникальным. Увы без правки схемы AD и др. танцев с бубном красиво не лечится ...


лечится, использованием idmap_rid

twincode, 2007-08-14 в 10:07:40

У меня одна бага проявилась виндовые права может менять только тот кто создал ресурс. В чем может быть причина?

lissyara, 2007-10-30 в 15:54:43

На самбе 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.

Dmitry, 2008-07-13 в 19:27:03

Сделал всё по статье, но галочки не работали. За что боролись-то? )))
В-общем, в конфиг самбы надо добавить
nt acl support = yes
и все галочки будут работать как родные
(Исправьте конфиг, пожалста)

lissyara, 2008-07-13 в 22:08:36

Хау-Ту не подразумевает отключения думалки, и тем более не отвменяет чтения документации.
Также могут быть различия между версиями самбы.

Dmitry, 2008-07-13 в 22:56:29

Юмор оценил ))
Перефразируем так - "Для версии самбы 3.0.28 в конфиг включить указанную строку" (FreeBSD 7.0, GENERIC kernel)

mozgokot, 2008-07-28 в 0:23:09

Добрый вечер!
В CentOS 5.2 все равно галки не работают (

Точнее они позволяют добавить ACL (юзера или группу), но при этом эти ACL наследуются вложенными объектами и там их удалить не получается. При нажатит Apply ACL восстанавливаются. Перелопатил кучу источников, ответа не нашел.

Изменения
inherit acls, inherit permissions ниче не дают. ACLки удаляются только в консоли линуха.

Система CentOS 5.2, Samba 3.0.28, Win2003R2

Если есть идеи помогите плз

lissyara, 2008-07-28 в 9:11:55

1. Прочтите текст в окошке который стёрли до того как ввести сообщение.
2. Прочтите камменты к статье.
3. Подумайте.

Oloremo, 2008-09-18 в 11:56:04

Один вопрос - БЕЗ ADS ACL не работают?

z-16-h, 2008-09-26 в 10:56:29

ПРО ГАЛОЧКИ В WinXP pro.

Чуть не застрелил два компа (сервант и клиента).

Подключил шару Фряшную, пытался найти в свойствах права на доступ юзеров на папки.... час сорок фряху пытал, проверят конфиги, прочее..... пока не сообразил, что у меня на клиенте (WinXP pro) стоит галочка:

Пуск -> Настройка -> Панель управления -> Свойства папки.

Закладка "Вид" -> Убрать галочку с "Использовать простой общий доступ к файлам (рекомендуется)"

Александр, 2008-09-30 в 16:26:38

На этапе ввода домен, незнает команду net join -U подскажите где копать?

lissyara, 2008-09-30 в 17:25:08

Ссылка на форум для красоты дана?
Вот по ссылке и копать.

Евгений, 2011-01-31 в 22:46:54

Здравствуйте!
[2011/02/01 01:19:22,  0] smbd/service.c:191(set_current_service)
 chdir (/usr/home/filez/transmission/downloads) failed
вот такая у меня проблема. на папку еще имеет права трансмиссия и периодически пропадает из общего доступа эта папка и в логах такая срочка. что делать?



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0492 секунд
Из них PHP: 49%; SQL: 51%; Число SQL-запросов: 54 шт.
Исходный размер: 54252; Сжатая: 12342