Проблема: 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.
/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