Установка Samba 4 с Active Directory на CentOS 7 на базе rpm с поддержкой общего доступа
На этой странице
- Подготовьте сервер CentOS 7.
- Установите Samba 4 на CentOS 7
- Конфигурация Samba 4
- Создание общего ресурса Samba с поддержкой Windows ACL
- Создание общего ресурса Samba
В последнем уроке я показал вам, как настроить Samba на Centos 7, скомпилировав Samba из исходного кода, поскольку пакет, поставляемый RedHat, не поддерживает Active Directory. Я заметил, что есть репозиторий под названием Wing, который предоставляет samba4 rpm с поддержкой AD. В этом уроке я буду использовать этот репозиторий для установки Samba. Я также покажу, как создать общий ресурс Samba.
В этом руководстве я буду использовать сервер CentOS 7 с минимальной установкой в качестве основы с включенным SELinux.
Подготовьте сервер CentOS 7
Проверьте статус SELinux.
[ ~]# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28 [ ~]#
Сделайте запись в файле хоста с IP-адресом сервера, полным именем хоста (fqdn), а затем локальной частью имени хоста.
[ ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.190 samba4.sunil.cc samba4 [ ~]#
Установите репозиторий Epel CentOS.
[ ~]# yum install epel-release -y
Установите базовые пакеты.
[ ~]# yum install vim wget authconfig krb5-workstation -y
Теперь установите репозиторий крыла.
[ ~]# cd /etc/yum.repos.d/ [ yum.repos.d]# wget http://wing-net.ddo.jp/wing/7/EL7.wing.repo [' /etc/yum.repos.d/EL7.wing.repo [ yum.repos.d]# yum clean all Loaded plugins: fastestmirror Cleaning repos: base extras updates wing wing-source Cleaning up everything Cleaning up list of fastest mirrors [ yum.repos.d]#
Установите Samba 4 на CentOS 7
Установка пакетов Samba4 из репозитория wing с помощью yum.
[ yum.repos.d]# yum install -y samba45 samba45-winbind-clients samba45-winbind samba45-client\ samba45-dc samba45-pidl samba45-python samba45-winbind-krb5-locator perl-Parse-Yapp\ perl-Test-Base python2-crypto samba45-common-tools
Удалите эти файлы.
[ ~]# rm -rf /etc/krb5.conf [ ~]# rm -rf /etc/samba/smb.conf
Конфигурация самбы 4
Теперь займемся подготовкой домена.
[ ~]# samba-tool domain provision --use-rfc2307 --interactive Realm [SUNIL.CC]: Domain [SUNIL]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [4.2.2.1]: Administrator password: Retype password: Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=sunil,DC=cc Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=sunil,DC=cc Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: samba4 NetBIOS Domain: SUNIL DNS Domain: sunil.cc DOMAIN SID: S-1-5-21-1578983437-3114190590-2362936743 [ etc]#
Убедитесь, что порты открыты в брандмауэре.
[ etc]#firewall-cmd --add-port=53/tcp --permanent;firewall-cmd --add-port=53/udp --permanent;firewall-cmd --add-port=88/tcp --permanent;firewall-cmd --add-port=88/udp --permanent; \ firewall-cmd --add-port=135/tcp --permanent;firewall-cmd --add-port=137-138/udp --permanent;firewall-cmd --add-port=139/tcp --permanent; \ firewall-cmd --add-port=389/tcp --permanent;firewall-cmd --add-port=389/udp --permanent;firewall-cmd --add-port=445/tcp --permanent; \ firewall-cmd --add-port=464/tcp --permanent;firewall-cmd --add-port=464/udp --permanent;firewall-cmd --add-port=636/tcp --permanent; \ firewall-cmd --add-port=1024-3500/tcp --permanent;firewall-cmd --add-port=3268-3269/tcp --permanent [ ~]# firewall-cmd --reload
В пакете нет сценария инициализации, мы добавим его сейчас.
[ ~]# cat /etc/systemd/system/samba.service [Unit] Description= Samba 4 Active Directory After=syslog.target After=network.target [Service] Type=forking PIDFile=/var/run/samba.pid ExecStart=/usr/sbin/samba [Install] WantedBy=multi-user.target [ ~]# [ ~]# systemctl enable samba Created symlink from /etc/systemd/system/multi-user.target.wants/samba.service to /etc/systemd/system/samba.service. [ ~]# systemctl restart samba
Все остальные шаги аналогичны моей предыдущей статье
для настройки хостов Windows и Linux см.
Установка контроллера домена Samba4 из исходников
Создание общего ресурса Samba с поддержкой Windows ACL
Нам нужно настроить расширенный ACL для samba4. Добавьте следующее в файл smb.conf под global.
[ ~]# cat /etc/samba/smb.conf # Global parameters [global] ------------ ------------- vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes ------------ ------------- [ ~]#
Теперь перезапустите службу Samba.
[ ~]# systemctl restart samba
Только пользователи и группы, имеющие предоставленную привилегию SeDiskOperatorPrivilege, могут настраивать разрешения общего доступа.
[ ~]# net rpc rights grant "SUNIL\Domain Admins" SeDiskOperatorPrivilege -U "USER\administrator" Enter USER\administrator's password: Successfully granted rights. [ ~]#
Прежде чем мы создадим общий ресурс, нам нужно убедиться, что сервер samba4 аутентифицируется сам с собой.
Мы не можем использовать обычный метод, так как он не работает, так как существующий пакет из wing будет конфликтовать с пакетами, поставляемыми RedHat, здесь мы не можем использовать sssd. Мы будем использовать winbind, чтобы заставить это работать.
Пожалуйста, используйте метод ниже. Это необходимо для создания общего ресурса samba с определенными разрешениями.
Установите приведенный ниже пакет.
[ ~]#yum -y install authconfig-gtk*
Запустите команду.
[ yum.repos.d]# authconfig-tui
пожалуйста, выберите winbind, следуйте следующим шагам.
Вы не сможете ввести пароль, просто нажмите ок.
Затем закомментируйте строки в /etc/samba/smb.conf и перезапустите службу samba.
Ваша конфигурация должна выглядеть так:
[ ~]# cat /etc/samba/smb.conf # Global parameters [global] #--authconfig--start-line-- # Generated by authconfig on 2017/05/26 17:23:04 # DO NOT EDIT THIS SECTION (delimited by --start-line--/--end-line--) # Any modification may be deleted or altered by authconfig in future # workgroup = SUNIL # password server = samba4.sunil.cc # realm = SUNIL.CC # security = ads # idmap config * : range = 16777216-33554431 # template shell = /sbin/nologin # kerberos method = secrets only # winbind use default domain = false # winbind offline logon = false #--authconfig--end-line-- netbios name = SAMBA4 realm = SUNIL.CC workgroup = SUNIL dns forwarder = 4.2.2.1 server role = active directory domain controller idmap_ldb:use rfc2307 = yes vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes [netlogon] path = /var/lib/samba/sysvol/sunil.cc/scripts read only = No [sysvol] path = /var/lib/samba/sysvol read only = No [ ~]# [ ~]# systemctl restart samba
Проверяем, можем ли мы заполнить пользователей и группы:
[ ~]# wbinfo -u SUNIL\administrator SUNIL\sambauser SUNIL\testuser SUNIL\krbtgt SUNIL\guest [ ~]# wbinfo -g SUNIL\cert publishers SUNIL\ras and ias servers SUNIL\allowed rodc password replication group SUNIL\denied rodc password replication group SUNIL\dnsadmins SUNIL\enterprise read-only domain controllers SUNIL\domain admins SUNIL\domain users SUNIL\domain guests SUNIL\domain computers SUNIL\domain controllers SUNIL\schema admins SUNIL\enterprise admins SUNIL\group policy creator owners SUNIL\read-only domain controllers SUNIL\dnsupdateproxy [ ~]#
Измените строки в nsswitch.conf:
[ ~]# cat /etc/nsswitch.conf ---------- --------- passwd: files winbind shadow: files winbind group: files winbind hosts: files dns wins services: files winbind netgroup: files winbind --------- ----------
Теперь проверим, можем ли мы получить имя пользователя с помощью команды id:
[ ~]# id testuser uid=3000019(SUNIL\testuser) gid=100(users) groups=100(users),3000019(SUNIL\testuser),3000009(BUILTIN\users) [ ~]#
Создание общего ресурса Samba
Я создам два общих ресурса, один из которых будет доступен только для testuser, а другой — для всех пользователей в группе пользователей домена.
Общий ресурс, доступный для testuser, будет называться testshare.
Доля, доступная для всех пользователей, будет называться commonshare.
[ ~]# mkdir /testshare [ ~]# mkdir /commonshare [ ~]# chmod 770 /testshare [ ~]# chmod 770 /commonshare [ ~]# chown -R root:testuser /testshare [ ~]# chown -R root:"Domain Users" /commonshare
Теперь добавьте записи в smb.conf
[ ~]# cat /etc/samba/smb.conf # Global parameters [global] netbios name = SAMBA4 realm = SUNIL.CC workgroup = SUNIL dns forwarder = 4.2.2.1 server role = active directory domain controller idmap_ldb:use rfc2307 = yes vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes [netlogon] path = /var/lib/samba/sysvol/sunil.cc/scripts read only = No [sysvol] path = /var/lib/samba/sysvol read only = No [TestShare] comment = Test share accessible by testuser path = /testshare valid users = SUNIL\testuser writable = yes read only = no force create mode = 0660 create mask = 0770 directory mask = 0770 force directory mode = 0770 access based share enum = yes hide unreadable = yes [CommonShare] comment = Accessible by all the users path = /commonshare valid users = "@SUNIL\Domain Users" writable = yes read only = no force create mode = 0660 create mask = 0777 directory mask = 0777 force directory mode = 0770 access based share enum = yes hide unreadable = yes [ ~]#
Перезапустите службу самбы.
[ ~]# systemctl restart samba
Получите доступ к общему ресурсу samba в качестве тестового пользователя.
Здесь вы увидите как testshare, так и commonshare.
Протестировано создание файлов и папок в testshare.
[ /]# cd /testshare/ [ testshare]# ls -l total 8 -rwxrwx---+ 1 SUNIL\testuser users 0 May 27 22:56 1.txt drwxrwx---+ 2 SUNIL\testuser users 6 May 27 22:56 test [ testshare]#
Теперь я вхожу в систему как другой пользователь, виден только commonshare:
Создание файлов под commonshare.
[ commonshare]# ls -l total 8 drwxrwxrwx+ 2 SUNIL\testuser users 6 May 27 23:02 test drwxrwxrwx+ 2 SUNIL\sambauser users 6 May 27 23:07 test2 [ commonshare]#
Вот как мы создаем общие ресурсы в Samba 4.