Задача: перенести существующий файловый сервер под управлением Debian Squeeze на новый сервер, под управлением CentOS 7.
Сервер должен быть интегрирован с Active Directory и выполнять прозрачную аутентификацию пользователей.
В CentOS 7 есть довольно-простой способ поставить Samba-сервер с интеграцией в AD, но мне он не подошёл, т.к. у меня имеется уже довольно большая база домашних каталогов формата \\fileserver\username\, а представленный способ даёт пути вида \\fileserver\username@domain.local, что влечёт за собой большую работу по переконфигруированию огромного количества рабочих станций и я так и не смог разобраться, как при таком способе назначать владельцем файла пользователя и группу AD, т.к. они не присутствуют в системе в списках пользователей и групп.
В итоге я решил для получения групп использовать winbind.
Устанавливаем систему с диска проводим базовую настройку сети.
Обновим систему:
Сделаем копию файла конфигурации:
Стоит обратить особое внимание на obey pam restrictions = no, если опция выставленна в "yes", то подключиться к файловому серверу не получится, а в логах будет ошибка:
Сервер должен быть интегрирован с Active Directory и выполнять прозрачную аутентификацию пользователей.
В CentOS 7 есть довольно-простой способ поставить Samba-сервер с интеграцией в AD, но мне он не подошёл, т.к. у меня имеется уже довольно большая база домашних каталогов формата \\fileserver\username\, а представленный способ даёт пути вида \\fileserver\username@domain.local, что влечёт за собой большую работу по переконфигруированию огромного количества рабочих станций и я так и не смог разобраться, как при таком способе назначать владельцем файла пользователя и группу AD, т.к. они не присутствуют в системе в списках пользователей и групп.
В итоге я решил для получения групп использовать winbind.
Устанавливаем систему с диска проводим базовую настройку сети.
Обновим систему:
# yum update -yДля установки htop и удобного мониторинга процессов подключим репозиторий EPEL (не обязательно):
# rpm -ivh http://mirror.yandex.ru/epel/7/x86_64/e/epel-release-7-5.noarch.rpmУстановим необходимые пакеты:
# yum install realmd samba samba-common samba-winbind samba-winbind-clients oddjob acl oddjob-mkhomedir ntpdate ntp krb5-workstation pam_krb5 htop -yОтключаем SELinux
#vi /etc/selinux/config
SELINUX=disabledПерезагружаемся:
SELINUXTYPE=targeted
# rebootПосле перезагрузки настраиваем параметры аутентификации:
# authconfig --updateall --enablewinbind --enablewinbindauth --enablewinbindusedefaultdomain --smbsecurity=ads --smbworkgroup=SEZAR --smbrealm=SEZAR.LOCAL --winbindtemplatehomedir=/home/%D/%U --winbindtemplateshell=/bin/bash --enablekrb5 --krb5realm=SEZAR.LOCAL --enablekrb5kdcdns --enablekrb5realmdns --enablelocauthorize --enablemkhomedir --enablepamaccessНастраиваем Kerberos:
#vi /etc/krb5.conf
[logging]Можно воспользоваться макросами vi:
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = SEZAR.LOCAL
default_ccache_name = KEYRING:persistent:%{uid}
dns_lookup_kdc = true
[realms]
SEZAR.LOCAL = {
kdc = adds01.sezar.local
kdc = adds02.sezar.local
admin_server = adds01.sezar.local
admin_server = adds02.sezar.local
default = SEZAR.LOCAL
}
[domain_realm]
.sezar.local = SEZAR.LOCAL
sezar.local = SEZAR.LOCAL
%s/example.com/sezar.local/gНастроим NTP-клиент:
%s/EXAMPLE.COM/SEZAR.LOCAL/g
%s/kerberos./adds./g
# vi /etc/ntp.conf
server adds01.sezar.localВключим сервис, синхронизируем время и запустим его:
server adds02.sezar.local
# systemctl enable ntpd.serviceТеперь приступим к настройки Samba
# ntpdate adds01.sezar.local
# systemctl start ntpd.service
Сделаем копию файла конфигурации:
# cp /etc/samba/smb.conf /etc/samba/smb.conf.distИ приводим конфиг самбы к следующему состоянию (удалены все закоментированные строки):
# vi /etc/samba/smb.conf
[global]Для того, чтобы Samba могла аутентифицировать пользователей через winbind создадим файл pam для неё со следующим содержимым:
workgroup = SEZAR
realm = SEZAR.LOCAL
server string = Samba Server Version %v
security = ADS
kerberos method = system keytab
log file = /var/log/samba/log.%m
max log size = 50
load printers = No
printcap name = /dev/null
template shell = /bin/bash
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind refresh tickets = Yes
winbind offline logon = Yes
idmap config * : range = 10000-2000000
idmap config * : backend = tdb
cups options = raw
[homes]
comment = Home Directories
valid users = %D\%S
read only = No
create mask = 0600
directory mask = 0700
browseable = No
root preexec = mkdir -p /home/%D/%S
# vi /etc/pam.d/samba
auth required pam_nologin.soДобавим самбу в сетевой экран:
auth include system-auth
account include system-auth
session include system-auth
password include system-auth
# firewall-cmd --permanent --add-service=sambaВключим и запустим самбу и winbind:
# firewall-cmd --reload
# systemctl enable smb.serviceТеперь можно подключаться к домену:
# systemctl start smb.service
# systemctl enable winbind.service
# systemctl start winbind.service
# realm join --user=Administrator sezar.local --client-software=winbindЕсли вдруг произошла ошибка, домен можно покинуть следующим образом:
# realm leaveПроверим ещё раз опции конфига /etc/samba/smb.conf, они должны быть следующими:
# vi /etc/samba/smb.conf
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind offline logon = yes
obey pam restrictions = noЕсли они изменились, то их необходимо изменить на приведённые выше.
Стоит обратить особое внимание на obey pam restrictions = no, если опция выставленна в "yes", то подключиться к файловому серверу не получится, а в логах будет ошибка:
STATUS=daemon 'smbd' finished starting up and ready to serve connectionssmb_pam_account: PAM: UNKNOWN PAM ERROR (28) during Account Management for User: DOMAIN\userПроверяем, получаем ли мы список пользователй и групп из AD командами:
[2015/01/06 19:42:54.476881, 0] ../source3/auth/pampass.c:797(smb_pam_accountcheck)
smb_pam_accountcheck: PAM: Account Validation Failed - Rejecting User DOMAIN\user!
STATUS=daemon 'smbd' finished starting up and ready to serve connectionssmb_pam_account: PAM: UNKNOWN PAM ERROR (28) during Account Management for User: DOMAIN\user
[2015/01/06 19:42:54.501608, 0] ../source3/auth/pampass.c:797(smb_pam_accountcheck)
smb_pam_account: PAM: UNKNOWN PAM ERROR (28) during Account Management for User: user
[2015/01/06 19:43:52.827446, 0] ../source3/auth/pampass.c:797(smb_pam_accountcheck)
smb_pam_accountcheck: PAM: Account Validation Failed - Rejecting User night!
# wbinfo -uТеперь правим в smb.conf шары:
# wbinfo -g
# vi /etc/samba/smb.conf
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %D\%S
create mask = 600
directory mask = 700
root preexec = mkdir -p "/home/%D/%S"
[Backup]
path = /storage/backup
valid users = "@Domain Admins", sqlserver, sqlagent
admin users = "@Domain Admins"
read only = No
После этого нам должны быть доступны две папки:
\\fileserver\Backup
\\fileserver\<username>
Перезапускаем samba и winbind:
\\fileserver\Backup
\\fileserver\<username>
Перезапускаем samba и winbind:
# systemctl restart smb.serviceНа этом всё. Остаётся только настроить нужные шары, права доступа и можно начать использовать файловый сервер.
# systemctl restart winbind.service
[root@share ~]# systemctl start winbind.service
ОтветитьУдалитьJob for winbind.service failed. See 'systemctl status winbind.service' and 'journalctl -xn' for details.
[root@share ~]# systemctl status winbind.service
winbind.service - Samba Winbind Daemon
Loaded: loaded (/usr/lib/systemd/system/winbind.service; enabled)
Active: failed (Result: exit-code) since Wed 2015-04-22 21:22:17 EEST; 19s ago
Process: 4472 ExecStart=/usr/sbin/winbindd $WINBINDOPTIONS (code=exited, status=1/FAILURE)
Main PID: 4472 (code=exited, status=1/FAILURE)
Status: "Starting process..."
Apr 22 21:22:16 share systemd[1]: Starting Samba Winbind Daemon...
Apr 22 21:22:17 share winbindd[4472]: [2015/04/22 21:22:17.130315, 0] ../s...t)
Apr 22 21:22:17 share winbindd[4472]: Could not fetch our SID - did we join?
Apr 22 21:22:17 share winbindd[4472]: [2015/04/22 21:22:17.130544, 0] ../s...s)
Apr 22 21:22:17 share winbindd[4472]: unable to initialize domain list
Apr 22 21:22:17 share systemd[1]: winbind.service: main process exited, cod...RE
Apr 22 21:22:17 share systemd[1]: Failed to start Samba Winbind Daemon.
Apr 22 21:22:17 share systemd[1]: Unit winbind.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.
Что делать подскажите пожалуста???
Отличная инструкция, огромное спасибо!
ОтветитьУдалить