Назад | Перейти на главную страницу

Домашние компьютеры Samba 4.8.3 могут быть отображены и доступны, только если other = rwx

Проблема: user1 может нормально сопоставить 6 общих ресурсов. Другой общий ресурс, homedir, отображается, но выдает сообщение об ошибке «Windows не может получить доступ к \ samba \ homedir:
У вас нет разрешения на доступ к \ samba \ homedir. "

user2 может нормально сопоставить 5 общих ресурсов, но 6-й общий ресурс и домашний каталог отображаются, но выдает сообщение об ошибке: «Windows не может получить доступ к \ samba [homedir | staff]:
У вас нет разрешения на доступ к \ samba [homedir | Staff]. "

Оба пользователя имеют одинаковое членство в группах как в Windows AD, так и в Linux NIS.

Эта проблема возникает в Windows 7 и 10, macOS и Linux с использованием smb :.

У других пользователей разные комбинации того, что работает, а что нет, и они находятся в правильных группах для общих ресурсов, которые они пытаются сопоставить.
Во всех случаях домашний адрес отображается, но недоступен. Домашние пользователи имеют разрешения 700. Я могу сопоставить общий ресурс и изучить его только в том случае, если у «другого» есть доступ rxw, а именно 707. Я также могу редактировать, создавать и сохранять файлы, но только если «другое» - это rwx. Даже 007 работает. Это бесполезная настройка для частного домашнего каталога.

Я пробовал принудительно использовать user =% U и valid users =% U безрезультатно. Я также пробовал действительные пользователи = DOMAIN \% S (с правильным доменным именем).

Другой сервер samba, на котором работает очень старая версия samba (4.05, загруженная и скомпилированная с samba.org и установленная по умолчанию), которая не использует winbindd (или sssd), работает во всех случаях.

Рассматриваемый проблемный сервер samba смог сопоставить все общие ресурсы с соответствующими разрешениями пару недель назад, но каким-то образом потерял возможность сделать это, хотя за это время не было внесено никаких изменений в конфигурацию samba или контроллер домена Windows. Перезапуск служб и перезагрузка сервера samba и контроллера домена не устранили проблему.

Мне нужно иметь возможность использовать современную версию samba, а не 4.05, которую я сам скомпилировал из samba.org, и она должна иметь возможность отображать общие ресурсы и видеть разрешения от NIS и общих файловых ресурсов ZFS.


Вот установка:

Файловые серверы (все находятся в одной подсети и без программных брандмауэров): FreeBSD 12 (NSFv4) с ZFS

Здесь находятся все общие файловые ресурсы и домашние каталоги.

aclmode = сбросить

aclinherit = ограничено

(это настройки по умолчанию)

Сервер входа в систему для компьютеров с Linux: Solaris SunOS 5.8 под управлением NIS Область NIS - DEPT

Сервер Samba: Scientific Linux 7.6 под управлением Samba 4.8.3 (получен из репозиториев SL через yum install samba), настроенный как членский сервер нашего домена (BIO), selinux выключен. Он присоединен к домену, а kinit и klist показывают, что токены выпускаются.

[root@samba ~]# kinit user1@BIO.DEPT.WISC.EDU
Password for luser1@BIO.DEPT.WISC.EDU: 
[root@samba ~]# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: user1@BIO.DEPT.WISC.EDU

Valid starting       Expires              Service principal
04/25/2019 17:40:08  04/26/2019 03:40:08  krbtgt/BIO.DEPT.WISC.EDU@BIO.DEPT.WISC.EDU
    renew until 05/02/2019 17:40:02

Он запускает smbd, nmbd и winbindd

wbinfo -ug показывает пользователей и группы с сервера AD wbinfo -n username показывает AD SID для пользователя wbinfo -D BIO показывает правильную информацию для домена AD

Серверы контроллеров домена Windows: Windows 2008 R2 и Windows 2012

Одинаковые имена пользователей существуют как в NIS, так и в AD.

Файлы конфигурации на сервере Samba:

/etc/samba/smb.conf:

 [global]
    log level = 2
    realm = BIO.DEPT.WISC.EDU
    server string = Samba Server Version %v
    netbios name = SAMBA
    workgroup = BIO
    security = ADS
    password server = ad1.bio.dept.wisc.edu
    domain master = No
    local master = No
    os level = 0
    preferred master = No
    machine password timeout = 0
    disable spoolss = Yes
    load printers = No
    printcap name = /dev/null

    template shell = /usr/bin/bash
    # trying to set homedir location
    template homedir = /ua/%U

    winbind enum groups = Yes
    winbind enum users = Yes
    winbind offline logon = Yes
    winbind refresh tickets = Yes
    winbind rpc only = Yes
    winbind use default domain = Yes

    idmap config BIO: range = 40000-50000
    idmap config BIO: backend = rid
    # tried backend = ad and it didn't work either
    idmap config BIO: default = yes
    idmap config * : range = 100000-299999
    idmap config * : backend = tdb

    log file = /var/log/samba/log_%m_%a_%R
    max log size = 50

    follow symlinks = yes
    unix extensions = no
    wide links = yes
    inherit acls = yes
    map acl inherit = yes
    short preserve case = yes
    preserve case = yes
    oplocks = False
    level2 oplocks = False
    posix locking = no
    include = /etc/samba/smbshares.conf

В /etc/samba/smbshares.conf раздел homedir

[homedir]
    comment = Home Directories
    path = %H
    browseable = No
    read only = No
    public = no
    writable = yes
    guest ok = no
    printable = no

Testparm дает:

Загруженный файл служб в порядке.

Роль сервера: ROLE_DOMAIN_MEMBER

/etc/krb5.conf:

# Configuration snippets may be placed in this directory as well
# there is currently nothing in the below directory
includedir /etc/krb5.conf.d/

[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
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 default_realm = BIO.DEPT.WISC.EDU
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 BIO.DEPT.WISC.EDU = {
  kdc = xxx.xxx.xxx.xxx:88
# admin_server = xxx.xxx.xxx.xxx:749
  default_domain = BIO.DEPT.WISC.EDU
 }

[domain_realm]
 xxx.xxx.xxx.xxx = BIO.DEPT.WISC.EDU
 bio.dept.wisc.edu = BIO.DEPT.WISC.EDU

/etc/nsswitch.conf:

passwd:     files winbind nis
shadow:     files nis
group:      files winbind nis
hosts:      files nis dns
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files

/etc/pam.d/system-auth:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so
# add winbind
auth        sufficient    pam_winbind.so cached_login use_first_pass

# add pam_access.so
account     required      pam_access.so
# account     required      pam_unix.so
account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so
# add pam_winbind
account     [default=bad success=ok user_unknown=ignore]    pam_winbind.so cached_login
# add pam_succeed
account     requisite     pam_succeed_if.so user ingroup    [sysadmins]

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok
password    required      pam_deny.so
# add winbind
password    sufficient    pam_winbind.so cached_login use_authtok

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

/etc/pam.d/password-auth:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so
# add winbind
auth        sufficient    pam_winbind.so cached_login use_first_pass

# add pam-access.so
account     required      pam_access.so
# account     required      pam_unix.so
account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so
# add winbind
account     [default=bad success=ok user_unknown=ignore] pam_winbind.so cached_login
# add pam_succeed for user ingroup
account     requisite     pam_succeed_if.so user ingroup [sysadmins]

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok
# add winbind
password    sufficient    pam_winbind.so cached_login use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

/etc/security/pam_winbind.conf:

[global]
# turn on debugging
;debug = no

# turn on extended PAM state debugging
;debug_state = no

# request a cached login if possible
# (needs "winbind offline logon = yes" in smb.conf)
;cached_login = yes

# authenticate using kerberos
;krb5_auth = yes

# when using kerberos, request a "FILE" krb5 credential cache type
# (leave empty to just do krb5 authentication but not have a ticket
# afterwards)
;krb5_ccache_type =

# make successful authentication dependent on membership of one SID
# (can also take a name)
;require_membership_of =

# password expiry warning period in days
;warn_pwd_expire = 14

# omit pam conversations
;silent = no

# create homedirectory on the fly
;mkhomedir = no

/etc/pam.d/sshd:

#%PAM-1.0
# PAM configuration for the sshd service
#
#auth
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
# Add winbind
auth       sufficient   /lib64/security/pam_winbind.so     try_first_pass

# account
account    required     pam_nologin.so
account    include      password-auth
# Add winbind
account    sufficient   /lib64/security/pam_winbind.so

# password
password   include      password-auth
password   required     pam_unix.so     no_warn try_first_pass
# Add windbind
password   sufficient   /lib64/security/pam_winbind.so  no_warn try_first_pass

# session
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare
# Add winbind
session    required     /lib64/security/pam_mkhomedir.so debug skel=/etc/skel umask=0077