Samba, CentOS, Active Directory · 7 min read · Dec 14, 2025
Samba 4 con Active Directory en instalación basada en rpm de CentOS 7 con soporte para comparticiones
En el último tutorial, te mostré cómo configurar Samba en CentOS 7 compilando Samba desde el código fuente, ya que el paquete suministrado por RedHat no soporta Active Directory. Noté que hay un repositorio llamado Wing que suministra el rpm de samba4 con soporte para AD. En este tutorial, utilizaré este repositorio para la instalación de Samba. También mostraré cómo crear una compartición de samba.
En este tutorial, usaré un servidor CentOS 7 con una instalación mínima como base con SELinux habilitado.
Preparar el servidor CentOS 7
Verifica el estado de 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 ~]#
Haz una entrada en el archivo de hosts con la dirección IP del servidor seguida del nombre de host completo (fqdn) y luego la parte local del nombre de host.
[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 ~]#
Instala el repositorio Epel de CentOS.
[root@samba4 ~]# yum install epel-release -yInstala los paquetes básicos.
[root@samba4 ~]# yum install vim wget authconfig krb5-workstation -y
Ahora instala el repositorio 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]#
Instalar Samba 4 en CentOS 7
Instalando los paquetes de Samba4 desde el repositorio wing con 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
Elimina estos archivos.
[root@samba4 ~]# rm -rf /etc/krb5.conf
[root@samba4 ~]# rm -rf /etc/samba/smb.conf
Configuración de Samba 4
Ahora haremos la provisión del dominio.
[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]#
Asegúrate de que los puertos estén abiertos en el firewall.
[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
El paquete no proporciona el script de inicio, lo agregaremos ahora.
[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
Todos los demás pasos son similares a mi artículo anterior
para configurar hosts de Windows y Linux, por favor refiérete a él
Instalación del controlador de dominio Samba4 desde fuente
Creando la compartición Samba con soporte para ACL de Windows
Necesitamos configurar ACL extendidas para samba4. Agrega lo siguiente en el archivo smb.conf bajo global.
[root@samba4 ~]# cat /etc/samba/smb.conf
# Parámetros globales
[global]
------------
-------------
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
------------
-------------
[root@samba4 ~]#
Ahora reinicia el servicio Samba.
[root@samba4 ~]# systemctl restart sambaSolo los usuarios y grupos que tengan el privilegio SeDiskOperatorPrivilege concedido pueden configurar permisos de compartición.
[root@samba4 ~]# net rpc rights grant "SUNIL\Domain Admins" SeDiskOperatorPrivilege -U "USER\administrator"
Enter USER\administrator's password:
Successfully granted rights.
[root@samba4 ~]#
Antes de crear la compartición, necesitamos asegurarnos de que el servidor samba4 se autentique consigo mismo.
No podemos hacer el método habitual ya que no funciona, ya que el paquete existente de wing entrará en conflicto con los paquetes suministrados por RedHat, no podemos usar sssd aquí. Usaremos winbind para que esto funcione.
Por favor, utiliza el siguiente método. Esto es necesario para crear la compartición samba con permisos específicos.
Instala el siguiente paquete.
[root@samba4 ~]#yum -y install authconfig-gtk*Ejecuta el comando.
[root@samba4 yum.repos.d]# authconfig-tui
por favor selecciona winbind, sigue los siguientes pasos.




No podrás ingresar la contraseña, solo presiona ok.
Luego comenta las líneas en /etc/samba/smb.conf y reinicia el servicio samba.
Tu configuración debería verse así:
[root@samba4 ~]# cat /etc/samba/smb.conf
# Parámetros globales
[global]
#--authconfig--start-line--
# Generated by authconfig on 2017/05/26 17:23:04
# NO EDITES ESTA SECCIÓN (delimitada por --start-line--/--end-line--)
# Cualquier modificación puede ser eliminada o alterada por authconfig en el futuro
# 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
Verifica si podemos poblar los usuarios y grupos:
[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 ~]#
Modifica las líneas en 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
---------
----------
Ahora verifica si podemos obtener el nombre de usuario usando el comando id:
[root@samba4 ~]# id testuser
uid=3000019(SUNIL\testuser) gid=100(users) groups=100(users),3000019(SUNIL\testuser),3000009(BUILTIN\users)
[root@samba4 ~]#
Creando una compartición Samba
Crearé dos comparticiones, una accesible solo por testuser y la otra accesible por todos los usuarios en el grupo de usuarios del dominio.
La compartición accesible por testuser se llamará testshare.
La compartición accesible por todos los usuarios se llamará 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
Ahora agrega las entradas en smb.conf
[root@samba4 ~]# cat /etc/samba/smb.conf
# Parámetros globales
[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 = Compartición de prueba accesible por 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 = Accesible por todos los usuarios
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 ~]#
Reinicia el servicio samba.
[root@samba4 ~]# systemctl restart sambaAccede a la compartición samba como test user.

Aquí verás que tanto testshare como commonshare son visibles.
Probé crear archivos y carpetas bajo 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]#
Ahora estoy iniciando sesión como un usuario diferente, solo commonshare es visible:

Creando archivos bajo 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]#
Así es como creamos comparticiones bajo Samba 4.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.