共有をサポートする CentOS 7 rpm ベースのインストールで Active Directory を使用する Samba 4
このページでは
- CentOS 7 サーバーを準備する
- CentOS 7 に Samba 4 をインストールする
- Samba 4 の構成
- Windows ACL をサポートする Samba 共有の作成
- Samba 共有の作成
前回のチュートリアルでは、RedHat が提供するパッケージが Active Directory をサポートしていないため、Samba をソースからコンパイルして、Centos 7 で Samba を構成する方法を示しました。 samba4 rpm に AD サポートを提供する Wing というリポジトリがあることに気付きました。このチュートリアルでは、Samba のインストールにこのリポジトリを使用します。また、samba 共有の作成方法も示します。
このチュートリアルでは、SELinux を有効にしたベースとして最小インストールの CentOS 7 サーバーを使用します。
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
次に、wing repo をインストールします。
[ ~]# 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]#
CentOS 7 に Samba 4 をインストールする
yum を使用して wing リポジトリから 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
これらのファイルを削除します。
[ ~]# rm -rf /etc/krb5.conf [ ~]# rm -rf /etc/samba/smb.conf
Samba 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
パッケージには init スクリプトが含まれていないため、ここで追加します。
[ ~]# 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 ドメイン コントローラーのインストール
Windows ACL をサポートする Samba 共有の作成
samba4 の拡張 ACL を構成する必要があります。 global の下の smb.conf ファイルに以下を追加します。
[ ~]# 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 を選択して、次の手順に従ってください。
パスワードを入力することはできません。[OK] を押してください。
次に、/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 共有の作成
2 つの共有を作成します。1 つは testuser のみがアクセスでき、もう 1 つはドメイン ユーザー グループ内のすべてのユーザーがアクセスできます。
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 [ ~]#
Samba サービスを再起動します。
[ ~]# 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 で共有を作成する方法です。