В предыдущей статье было описано что такое AFP, netatalk, зачем это все нужно.
Здесь же мы рассмотрим настройку Netatalk на CentOS 7 с авторизацией через контроллер домена.
Входные параметры
- Сервер TimeMachine (CentOS 7)
- Сервер контроллера домена (Windows Server 2012)
- Netatalk (afpd v.3.1.8)
Настройка Windows Server 2012
Здесь поговорим об основных моментах, которые нам нужны от Windows Server 2012.
Для включения Unix параметров открыть консоль Power Shell от имени Администратора.
~~~
Dism.exe /online /enable-feature /featurename:adminui /all
Dism.exe /online /enable-feature /featurename:nis /all
Dism.exe /online /enable-feature /featurename:psync /all
~~~
После этого перезагрузить компьютер, и если все сделано верно то в параметрах пользователей Windows должны появится Unix атрибуты.
Настройка CentOS 7
После успешной установки CentOS 7 нам нужно ввести сервер в домен.
Проверим hostname — он должен быть формата %имя хоста%.%имя домена%
Например timemachine.exz.local
Проверим resolve.conf — там должен быть прописан nameserver %ip вашего контроллера домена%
Проверим что время между серверами одинаковое
Установим дополнительные пакеты для ввода в домен
# yum install oddjob-mkhomedir oddjob samba-winbind-clients samba-winbind samba-common sssd realmd
Установим дополнительные пакеты для сборки netatalk
# yum install avahi-devel bison cracklib-devel dbus-devel dbus-glib-devel docbook-style-xsl flex libacl-devel libattr-devel libdb-devel libevent-devel libgcrypt-devel libxslt krb5-devel mysql-devel openldap-devel openssl-devel pam-devel quota-devel systemtap-sdt-devel tcp_wrappers-devel libtdb-devel tracker-devel rpm-build gcc make dconf
Ввод в домен (Лучше сделать отдельного пользователя root в AD для ввода в домен Linux серверов)
# realm join --user=root@exz.local EXZ.LOCAL
Проверить настройки можно так
# realm list exz.local type: kerberos realm-name: EXZ.LOCAL domain-name: exz.local configured: kerberos-member server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common login-formats: %U@exz.local login-policy: allow-permitted-logins
# id root@exz.local uid=1915401112(root@exz.local) gid=1915400513(администраторы домена@exz.local) группы=1915400513(администраторы домена@exz.local)
Соберем пакет netatalk 3.1.8
# pwd /root # wget http://www003.upp.so-net.ne.jp/hat/files/netatalk-3.1.8-0.1.5.fc25.src.rpm # rpm -ivh netatalk-3.1.8-0.1.5.fc25.src.rpm # cd ~/rpmbuild/SPECS/ # rpmbuild -bb netatalk.spec # rpm -ivh ~/rpmbuild/RPMS/x86_64/netatalk-3.1.8-0.1.5.el7.centos.x86_64.rpm
Проверим что afpd установился корректно
# afpd -v afpd 3.1.8 - Apple Filing Protocol (AFP) daemon of Netatalk This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Please see the file COPYING for further information and details. afpd has been compiled with support for these features: AFP versions: 2.2 3.0 3.1 3.2 3.3 3.4 CNID backends: dbd last tdb mysql afp.conf: /etc/netatalk//afp.conf extmap.conf: /etc/netatalk//extmap.conf state directory: /var/lib/netatalk/ afp_signature.conf: /var/lib/netatalk/afp_signature.conf afp_voluuid.conf: /var/lib/netatalk/afp_voluuid.conf UAM search path: /usr/lib64/netatalk// Server messages path: /var/lib/netatalk/msg/
Настроим pamd netatalk авторизацию через sssd
# cat /etc/pam.d/netatalk #%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 [default=1 success=ok] pam_localuser.so auth [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session optional pam_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so
Настройка netatalk
# cat /etc/netatalk/afp.conf [Global] vol preset = default_for_all_vol log file = /var/log/netatalk.log mimic model = TimeCapsule6,116 [default_for_all_vol] file perm = 0770 directory perm = 0770 cnid scheme = dbd [Homes] basedir regex = /home/* time machine = yes [private] path = /home/private/ valid users = "@private@exz.local" time machine = yes
Запустим netatalk
# systemctl start netatalk # systemctl enable netatalk