Samba Installation · 7 min read · Dec 14, 2025
Samba 4 с Active Directory на CentOS 7 установка на основе rpm с поддержкой общего доступа
В последнем руководстве я показал, как настроить Samba на CentOS 7, компилируя Samba из исходников, так как пакет, предоставленный RedHat, не поддерживает Active Directory. Я заметил, что существует репозиторий под названием Wing, который предоставляет пакет samba4 rpm с поддержкой AD. В этом руководстве я буду использовать этот репозиторий для установки Samba. Я также покажу, как создать общий доступ Samba.
В этом руководстве я буду использовать сервер CentOS 7 с минимальной установкой в качестве основы с включенным SELinux.
Подготовка сервера CentOS 7
Проверьте статус SELinux.
[root@samba4 ~]# 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
[root@samba4 ~]#
Создайте запись в файле hosts с IP-адресом сервера, за которым следует полное (fqdn) имя хоста, а затем локальная часть имени хоста.
[root@samba4 ~]# 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
[root@samba4 ~]#
Установите репозиторий Epel CentOS.
[root@samba4 ~]# yum install epel-release -yУстановите основные пакеты.
[root@samba4 ~]# yum install vim wget authconfig krb5-workstation -y
Теперь установите репозиторий wing.
[root@samba4 ~]# cd /etc/yum.repos.d/
[root@samba4 yum.repos.d]# wget http://wing-net.ddo.jp/wing/7/EL7.wing.repo
[root@samba4 yum.repos.d]# sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/EL7.wing.repo
[root@samba4 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
[root@samba4 yum.repos.d]#
Установка Samba 4 на CentOS 7
Установка пакетов Samba4 из репозитория wing с помощью yum.
[root@samba4 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
Удалите эти файлы.
[root@samba4 ~]# rm -rf /etc/krb5.conf
[root@samba4 ~]# rm -rf /etc/samba/smb.conf
Конфигурация Samba 4
Теперь мы сделаем провизию домена.
[root@samba4 ~]# 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
[root@samba4 etc]#
Убедитесь, что порты открыты в файрволе.
[root@samba4 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
[root@samba4 ~]# firewall-cmd --reload
Пакет не предоставляет init-скрипт, мы добавим его сейчас.
[root@samba4 ~]# 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
[root@samba4 ~]#
[root@samba4 ~]# systemctl enable samba
Created symlink from /etc/systemd/system/multi-user.target.wants/samba.service to /etc/systemd/system/samba.service.
[root@samba4 ~]# systemctl restart samba
Все остальные шаги аналогичны моей предыдущей статье
для настройки Windows и Linux хостов, пожалуйста, обратитесь к ней
Установка контроллера домена Samba4 из исходников
Создание общего доступа Samba с поддержкой ACL Windows
Нам нужно настроить расширенные ACL для samba4. Добавьте следующее в файл smb.conf под глобальным.
[root@samba4 ~]# cat /etc/samba/smb.conf
# Global parameters
[global]
------------
-------------
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
------------
-------------
[root@samba4 ~]#
Теперь перезапустите службу Samba.
[root@samba4 ~]# systemctl restart sambaТолько пользователи и группы, имеющие привилегию SeDiskOperatorPrivilege, могут настраивать разрешения общего доступа.
[root@samba4 ~]# net rpc rights grant "SUNIL\Domain Admins" SeDiskOperatorPrivilege -U "USER\administrator"
Enter USER\administrator's password:
Successfully granted rights.
[root@samba4 ~]#
Прежде чем мы создадим общий доступ, нам нужно убедиться, что сервер samba4 аутентифицирует сам себя.
Мы не можем использовать обычный метод, так как он не работает, поскольку существующий пакет от wing будет конфликтовать с пакетами, предоставляемыми RedHat, мы не можем использовать sssd здесь. Мы будем использовать winbind, чтобы это заработало.
Пожалуйста, используйте приведенный ниже метод. Это необходимо для создания общего доступа samba с определенными разрешениями.
Установите пакет.
[root@samba4 ~]#yum -y install authconfig-gtk*Запустите команду.
[root@samba4 yum.repos.d]# authconfig-tui
пожалуйста, выберите winbind, следуйте следующим шагам.




Вы не сможете ввести пароль, просто нажмите ok.
Затем закомментируйте строки в /etc/samba/smb.conf и перезапустите службу samba.
Ваша конфигурация должна выглядеть следующим образом:
[root@samba4 ~]# 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
[root@samba4 ~]#
[root@samba4 ~]# systemctl restart samba
Проверьте, можем ли мы заполнить пользователей и группы:
[root@samba4 ~]# wbinfo -u
SUNIL\administrator
SUNIL\sambauser
SUNIL\testuser
SUNIL\krbtgt
SUNIL\guest
[root@samba4 ~]# 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
[root@samba4 ~]#
Измените строки в nsswitch.conf:
[root@samba4 ~]# cat /etc/nsswitch.conf
----------
---------
passwd: files winbind
shadow: files winbind
group: files winbind
hosts: files dns wins
services: files winbind
netgroup: files winbind
---------
----------
Теперь проверьте, можем ли мы получить имя пользователя с помощью команды id:
[root@samba4 ~]# id testuser
uid=3000019(SUNIL\testuser) gid=100(users) groups=100(users),3000019(SUNIL\testuser),3000009(BUILTIN\users)
[root@samba4 ~]#
Создание общего доступа Samba
Я создам два общего доступа, один доступный только для testuser, а другой общий доступ, доступный для всех пользователей в группе доменных пользователей.
Общий доступ, доступный для testuser, будет называться testshare.
Общий доступ, доступный для всех пользователей, будет называться commonshare.
[root@samba4 ~]# mkdir /testshare
[root@samba4 ~]# mkdir /commonshare
[root@samba4 ~]# chmod 770 /testshare
[root@samba4 ~]# chmod 770 /commonshare
[root@samba4 ~]# chown -R root:testuser /testshare
[root@samba4 ~]# chown -R root:"Domain Users" /commonshare
Теперь добавьте записи в smb.conf
[root@samba4 ~]# 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 = Тестовый общий доступ, доступный для 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 = Доступно всем пользователям
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
[root@samba4 ~]#
Перезапустите службу samba.
[root@samba4 ~]# systemctl restart sambaПолучите доступ к общему доступу samba как test user.

Здесь вы увидите, что оба testshare и commonshare видны.
Проверено создание файлов и папок в testshare.

[root@samba4 /]# cd /testshare/
[root@samba4 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
[root@samba4 testshare]#
Теперь я вхожу как другой пользователь, виден только commonshare:

Создание файлов в commonshare.
[root@samba4 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
[root@samba4 commonshare]#
Вот как мы создаем общий доступ в Samba 4.
Get new posts in your inbox
No spam. Unsubscribe anytime.