Samba 설치 · 7 min read · Dec 14, 2025
CentOS 7에서 Active Directory를 지원하는 Samba 4 rpm 기반 설치
지난 튜토리얼에서는 RedHat에서 제공하는 패키지가 Active Directory를 지원하지 않기 때문에 소스에서 Samba를 컴파일하여 CentOS 7에서 Samba를 구성하는 방법을 보여주었습니다. AD 지원이 있는 samba4 rpm을 제공하는 Wing이라는 리포지토리가 있다는 것을 알게 되었습니다. 이번 튜토리얼에서는 Samba 설치를 위해 이 리포지토리를 사용할 것입니다. 또한 Samba 공유를 만드는 방법도 보여드리겠습니다.
이번 튜토리얼에서는 SELinux가 활성화된 최소 설치를 기반으로 한 CentOS 7 서버를 사용할 것입니다.
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 ~]#
서버 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]#
CentOS 7에 Samba 4 설치하기
yum을 사용하여 wing 리포지토리에서 Samba4 패키지를 설치합니다.
[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 도메인 컨트롤러 설치
Windows ACL 지원을 갖춘 Samba 공유 만들기
Samba4에 대한 확장 ACL을 구성해야 합니다. smb.conf 파일의 global 아래에 다음을 추가합니다.
[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 sambaSeDiskOperatorPrivilege 권한이 부여된 사용자와 그룹만 공유 권한을 구성할 수 있습니다.
[root@samba4 ~]# net rpc rights grant "SUNIL\Domain Admins" SeDiskOperatorPrivilege -U "USER\administrator"
Enter USER\administrator's password:
Successfully granted rights.
[root@samba4 ~]#
공유를 만들기 전에 Samba4 서버가 자체적으로 인증되는지 확인해야 합니다.
기존 패키지에서 제공하는 방법은 RedHat에서 제공하는 패키지와 충돌하므로 사용할 수 없습니다. 여기서는 winbind를 사용하여 이를 작동시킬 것입니다.
아래 방법을 사용하십시오. 이는 특정 권한으로 Samba 공유를 만들기 위해 필요합니다.
아래 패키지를 설치합니다.
[root@samba4 ~]#yum -y install authconfig-gtk*명령을 실행합니다.
[root@samba4 yum.repos.d]# authconfig-tui
winbind를 선택하고 다음 단계를 따르십시오.




비밀번호를 입력할 수 없으므로 그냥 확인을 누르십시오.
그런 다음 /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 = 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
[root@samba4 ~]#
Samba 서비스를 재시작합니다.
[root@samba4 ~]# systemctl restart sambatestuser로 Samba 공유에 접근합니다.

여기에서 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에서 공유를 생성합니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.