LINUX.ORG.RU
ФорумAdmin

Samba 4 ads, ldap, krb, не работают права по группам

 , ,


0

1

Приветствую!

Имеется следующая проблема: в сетевых шарах права на группу не работают. Для примера, возьму шару scan: # ls -la /data/scan/| grep test1

 
drwxrwx---   2 root          users     4096 дек  8 10:43 test1 

Пытаюсь зайти из винды в эту шару: \\fileskladtest\scan\test1. Юзером, принадлежащим группе users: Windows не может получить доступ к \\fileskladtest\scan\test1 Разрешение на доступ к \\fileskladtest\scan\test1 отсутствует.

То же самое через консоль:

 
C:\>net use \\fileskladtest\scan\test1 /user:tu3 
Недействительный пароль для \\fileskladtest\scan\test1.

Введите пароль для 'tu3' для подключения к 'fileskladtest': 
Системная ошибка 5.

Отказано в доступе.
Хотя пароль правильный. В просто \scan пускает У юзера права на группу есть:
 
# id tu3 
uid=100278(tu3) gid=100(users) группы=100(users),1018(*****),1010(*****) 
Если сменить владельца test1 на tu3 или дать на test1 права 777, то каталог test1 пускает.

Моя конфигурация: домен - spec, он же spec.local. Работает под управлением виндовых DC 2008 R2, домен 2008. UID-GID цепляются через SFU, настроенную на виндовых DC, как UNIX-атрибуты. Проблемный сервер - centos 7. Член домена, не DC.

 
# uname -a 
Linux fileskladtest.spec.local 3.10.0-327.18.2.el7.x86_64 #1 SMP Thu May 12 11:03:55 
UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 
# smbd -V 
Version 4.2.10 
Авторизация в домене - kerberos, вроде с ней все ок. getent passwd и getent group настроены по ldap и выдают список сначала локальных, а потом доменных юзеров и групп. Юзеры в группах перечислены, все UID-GID правильные.

Конфиги с моей конфигурацией:

 
# cat /etc/samba/smb.conf | grep -v '^#' | grep -v '^;' | 
grep -v '^$' 
[global] 
   workgroup = SPEC 
   realm = SPEC.LOCAL 
   security = ads 
   template homedir = /home/%U 
   template shell = /bin/bash 
   kerberos method = secrets only 
   winbind use default domain = true 
   winbind offline logon = false 
        idmap config * : backend  = ad 
        idmap config * : range = 0-9999999 
        idmap config * : schema_mode = sfu 
        auth methods = winbind 

        server string = Samba Server Version %v 
        netbios name = FILESKLADTEST 

        hosts allow = 127. 192.168.
        # log files split per-machine: 
        log file = /var/log/samba/log.%m 

        # maximum size of 50KB per log file, then rotate: 
        max log size = 50000 
        log level = 0 vfs:2 
        syslog = 0 

    vfs objects = full_audit 
    full_audit:prefix = %u|%I|%S 
    full_audit:facility = local5 
    full_audit:priority = notice 
    full_audit:success = none 
    full_audit:failure = none 
        load printers = no 

        # obtain a list of printers automatically on UNIX System V systems: 
        disable spoolss = Yes 

        show add printer wizard = No 
        read only = No 

        create mask = 0666 

        directory mask = 0777 

        map to guest = Bad User 
        logon path = \\%L\profiles\.msprofile 

        logon home = \\%L\%U\.9xprofile 

        logon drive = P: 

        usershare allow guests = No 
[scan] 
    comment = Сканированные документы 
    path = /data/scan 
    full_audit:success = all 
    full_audit:failure = all 



# cat /etc/nslcd.conf | grep -v '^#' | grep -v '^;' | 
grep -v '^$' 
uid nslcd 
gid ldap 
uri ldap://dc5.spec.local 
uri ldap://dc1.spec.local 
uri ldap://dc2.spec.local 
uri ldap://dc4.spec.local 
ldap_version 3 
base dc=spec,dc=local 
binddn CN=unix,OU=Scripts,DC=SPEC,DC=LOCAL 
bindpw ***paSsWoRd*** 
scope sub 
filter passwd (objectClass=User) 
map    passwd uid              msSFU30Name 
map    passwd homeDirectory    unixHomeDirectory 
filter shadow (objectClass=User) 
filter group  (objectClass=Group) 
ssl no 
tls_cacertdir /etc/openldap/cacerts 



# cat /etc/krb5.conf | grep -v '^#' | grep -v '^;' | 
grep -v '^$' 
[logging] 
 default = FILE:/var/log/krb5libs.log 
 kdc = FILE:/var/log/krb5kdc.log 
 admin_server = FILE:/var/log/kadmind.log 
[libdefaults] 
 dns_lookup_realm = false 
 ticket_lifetime = 24h 
 renew_lifetime = 7d 
 forwardable = true 
 rdns = false 
 default_ccache_name = KEYRING:persistent:%{uid} 
 default_realm = SPEC.LOCAL 
 clockskew = 3600 
[realms] 
 SPEC.LOCAL = { 
  kdc = dc5.spec.local 
  kdc = dc1.spec.local 
  kdc = dc2.spec.local 
  kdc = dc4.spec.local 
  admin_server = dc5.spec.local 
 } 
 DC5.SPEC.LOCAL = { 
  kdc = dc5.spec.local 
  admin_server = dc5.spec.local 
 } 
 SPEC.LOCAL = { 
  kdc = spec.local 
  admin_server = spec.local 
  kdc = spec.local 
 } 
[domain_realm] 
 spec.local = spec.local 
 .spec.local = spec.local 
 dc1.spec.local = DC1.SPEC.LOCAL 
 .dc1.spec.local = DC1.SPEC.LOCAL 
 dc5.spec.local = DC5.SPEC.LOCAL 
 .dc5.spec.local = DC5.SPEC.LOCAL 



# cat /etc/nsswitch.conf | grep -v '^#' | grep -v '^;' | 
grep -v '^$' 
passwd:     files ldap 
shadow:     files 
group:      files ldap 
hosts:      files dns 
bootparams: nisplus [NOTFOUND=return] files 
ethers:     files 
netmasks:   files 
networks:   files 
protocols:  files 
rpc:        files 
services:   files sss 
netgroup:   files sss ldap 
publickey:  nisplus 
automount:  files ldap 
aliases:    files nisplus 

testparm -s /etc/samba/smb.conf ошибок не выдает.

Вроде, все должно быть ок, единственный нюанс, который не удалось победить: wbinfo -u показывает пустой вывод. Впрочем, wbinfo -g показывает список всех групп. Не знаю, имеет ли это какое-то отношение к проблеме.

Логи включал, там по проблеме ни слова. Только то, что мол, все права есть, все ок. Уже кучу времени убил на проблему, все кажется перепроверил, сейчас даже не понимаю, куда копать. В гугле - либо неверный вывод getent, либо авторизация кривая, либо еще что. У меня-то вроде все на месте. Кроме этого сервера, есть еще несколько древних с gentoo и samba 3, на них группы работают. Но там вроде перекомпилировали модуль бекэнда для idmap или что-то вроде того, уже не помнит никто, что и зачем, да и проблема относилась вроде к баге с той древней самбой...

Как-то странно сделано. Если самба в домене, то зачем отдельно nss_ldap городить? Не проще ли было nss_winbind включить?

wbinfo -u показывает пустой вывод

Попробуй добавить winbind enum users = yes

По поводу собственно твоей проблемы - посмотри ACL на каталоге getfacl /data/scan/.

gasinvein ★★★ ()
Ответ на: комментарий от gasinvein

Как-то странно сделано. Если самба в домене, то зачем отдельно nss_ldap городить? Не проще ли было nss_winbind включить?

Честно говоря, пробовал настраивать всякими разными способами недели две потратил, как заработало, так и оставил. То ли, потому что по nss_ldap нагуглил более толковый howto, то ли потому что старая конфигурация 3-й самбы была такая же, то ли еще почему...

Попробуй добавить winbind enum users = yes

Добавил, ничего не изменилось. Впрочем, ведь никаких winbind enum groups у меня не прописано, а wbinfo -g работает. Так что скорее всего, проблема где-то в другом месте...

По поводу собственно твоей проблемы - посмотри ACL на каталоге getfacl /data/scan/

Если б все было так просто...

# getfacl /data/scan/
getfacl: Removing leading '/' from absolute path names
# file: data/scan/
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx

# getfacl /data/scan/test1/
getfacl: Removing leading '/' from absolute path names
# file: data/scan/test1/
# owner: root
# group: users
user::rwx
group::rwx
other::---
Никаких facl я не выставляю, папки создавал вручную, да и если зайти по su tu3, то touch /data/scan/test1/1 отрабатывает отлично, проблемы именно с самбой.

iltmpz ()

Есть подозрение, что что-то недокрутил с маппингом SFU, но понятия не имею, что докручивать. Хотя getent passwd и getent group показывают правильные uid и gid.

Но в старой успешно работающей самбе конфиг такой:

pam_login_attribute sAMAccountName
pam_lookup_policy       yes
pam_password ad
pam_password    crypt
nss_initgroups_ignoreusers      root,ldap
nss_schema      rfc2307bis
nss_map_attribute       uniqueMember member
nss_map_objectclass posixAccount User
nss_map_objectclass shadowAccount User
nss_map_attribute uid msSFU30Name
nss_map_attribute uniqueMember msSFU30PosixMember
nss_map_attribute userPassword unixUserPassword
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_objectclass posixGroup Group
pam_login_attribute msSFU30Name
pam_filter objectclass=User
pam_password ad
nss_map_attribute uidNumber uidNumber
nss_map_attribute gidNumber gidNumber
nss_map_attribute cn sAMAccountName
nss_map_attribute gecos name
nss_map_attribute loginShell loginShell
ssl off

Я попробовал добавить на проблемный сервер:

map    group  gidNumber        gidNumber
или
map    group  gidNumber        gid
- ничего не изменилось, как не работало, так и не работает авторизация по группам. Куда еще смотреть?

iltmpz ()
Ответ на: комментарий от conalex

Ух ты, а что-то получилось! Правда, пока не пойму что, проводник по-прежнему пишет что разрешение отсутствует. А вот net use говорит, что все ок:

C:\>net use \\fileskladtest\scan\test1
Локальное имя
Удаленное имя     \\fileskladtest\scan\test1
Тип ресурса       Диск
Состояние         OK
Открыто           1
Подключено        1
Команда выполнена успешно.


C:\>net use \\fileskladtest\scan\test
Недействительный пароль для \\fileskladtest\scan\test.

Введите имя пользователя для 'fileskladtest':

test1 это с добавленным x, test - без него:
# ls -la /data/scan/ | grep test
drwxrwx---   2 root          users     4096 дек  6 19:17 test
drwxrwx--x   2 root          users     4096 дек 12 12:40 test1

Как бы поподробнее разузнать про этот баг и довести ситуацию до ума?..

iltmpz ()
Ответ на: комментарий от iltmpz

проводник по-прежнему пишет что разрешение отсутствует

smbastatus -p

и попробуй кильнуть процесс с виндовой машиной.

Как бы поподробнее разузнать про этот баг и довести ситуацию до ума?..

а вот это не подскажу, не помню уже.

conalex ★★★ ()
Последнее исправление: conalex (всего исправлений: 2)
Ответ на: комментарий от conalex

smbastatus -p

Кильнул все процессы самбы - не помогло. Впрочем, я после chmod o+x сделал как обычно более радикально: самбовский сервак - в ребут, а в виндовую сессию перелогинился. Тоже не помогло.

Кстати, из-под винды сделал:

C:\>net use q: \\fileskladtest\scan\test1
Команда выполнена успешно.
Диск Q появился в проводнике, при открытии пишут ту же ошибку - нет прав.

Опа! # yum upgrade samba - предлагает обновиться до 4.4.4-9.el7 (у меня 4.2.10-6.el7_2 - еще летом ставил). Попробую обновиться, вдруг это бага, и она в новой версии пофискена...

iltmpz ()
Ответ на: комментарий от iltmpz

Обновил самбу до 4.4.4-9.el7 - ничего не изменилось!

Кроме того, что теперь testparm пишет: WARNING: The «syslog» option is deprecated

getent все проверил, все на месте.

А test и test1 как не открывались, так и не открываются.

iltmpz ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.