yum install samba-winbind samba-winbind-clients pam_krb5
DNSは既にADに向けてあるので、
authconfig \
--enablekrb5 \
--krb5kdc=dc01.samba4-ad.local \
--krb5adminserver=dc01.samba4-ad.local \
--krb5realm=DC01.Samba4-AD.LOCAL \
--enablewinbind \
--enablewinbindauth \
--smbsecurity=ads \
--smbrealm=DC01.Samba4-AD.LOCAL \
--smbservers=dc01.samba4-ad.local \
--smbworkgroup=DC01 \
--winbindtemplatehomedir=/home/%U \
--winbindtemplateshell=/bin/bash \
--enablemkhomedir \
--enablewinbindusedefaultdomain \
--update
この後のエラーが、server-world.infoさんと少し違う。
Job for winbind.service failed because the control process exited with error code. See "systemctl status winbind.service" and "journalctl -xe" for details.
# systemctl status winbind.service
# journalctl -xe
いずれも、出力がただの文字列にしか見えない。かろうじて、winbind.service failed. は英語として読めるが、コードが(既に?)存在するとの意味がワカラナイ。
とりあえず「エラーを無視して先に」とあるので、この件は保留。
[root@FS01 ~]# net ads join -U Administrator
Enter Administrator's password:
Failed to join domain: failed to find DC for domain DC01
[root@FS01 ~]# ping DC01
PING DC01.Samba4-AD.LOCAL (172.19.19.10) 56(84) bytes of data.
64 bytes from 172.19.19.10: icmp_seq=1 ttl=64 time=1.42 ms
64 bytes from 172.19.19.10: icmp_seq=2 ttl=64 time=1.99 ms
64 bytes from 172.19.19.10: icmp_seq=3 ttl=64 time=2.12 ms
64 bytes from 172.19.19.10: icmp_seq=4 ttl=64 time=2.00 ms
^C
--- DC01.Samba4-AD.LOCAL ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 1.423/1.888/2.127/0.278 ms
[root@FS01 ~]# net ads join -U Administrator
Enter Administrator's password:
Failed to join domain: failed to find DC for domain DC01
[root@FS01 ~]#
dc01は解決できるが、joinはNG? 致し方ないのでトラフィックを見てみると、_ldap._tcp.dc._msdcs.DC01.SAMBA4-AD.LOCAL
へののDNSクエリを投げて、DC01が外部へふぉわーでぃんぐしている。なるほど、、
そこで、smb.conf 中で DNS forwarding をコメントアウトしてリトライ。すると、
_ldap._tcp.dc._msdcs.DC01.SAMBA4-AD.LOCAL
についてレスポンスが得られない一方で、NetBIOSネームクエリなブロードキャストを。DC01は同一ネットワーク上にあるが、これは応答していない。
さてこれは。先日も挫折した、Samba AD 内蔵 DNSのレコードをどうしてくれるか問題か。これが
/usr/local/samba/bin/samba-tool dns add <server> <zone> <name>
<A|AAAA|PTR|CNAME|NS|MX|SRV|TXT> <data>
usage に則っているつもりなのだが、ERRORが返る。ちなみに同様のエラーは、samba-toolのドメイン作成時にも見られたので、当時は私が設定したパラメータがなんらか間違っていたということだ。
そこで、FS01側のhostsに書いてしまうという奇策に走ってみたが、結果は変わらず。あくまでDNSでSRVを解決するか、あるいはNetBIOS名として解決しなくてはならないようだ。
chaperoneさんに、このあたりの作業例があるのだが、
http://web.chaperone.jp/w/index.php?samba4%2F140321
この設定は保留にして、FS01側で安易に解決を試みるも、マッタク状況変わらず。
で、このSRVレコードがまた、未知のセカイ。
アットマークアイティさんから実用 BIND 9で作るDNSサーバ(14):
DNSの拡張仕様、SRVレコードとENUM (1/2)
http://www.atmarkit.co.jp/ait/articles/0403/09/news076.html
なるほどそりゃ、hostsで解決してもイミ無いわ。SRVってそもそも何の略や!? といえば、
e-words
http://e-words.jp/w/SRV%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89.html
ここで、Unixpower on Networking さんのこちらを拝読していて
http://www.unix-power.net/linux/samba1_centos6.html
krb5.conf 中の libdefaults において lookup が realm 、kdc いずれもfalseであることが気になった。
進めば進むほど新鮮でバチバチいってるぜ AWESOME!
2016年2月29日月曜日
Samba4 AD 初回インストール作業要領 (仮・成功ケース)
前回、自分が何を誤ったかさえ全く見当もつかずNGだったインストールの続き。
http://e4776m4mg.blogspot.jp/2016/02/samba4-ad.html
結果的には、俺的さんのblogエントリの通りでインストール終了。ますます前回のNG原因がワカラナイ。コマンドを投入するにあたりテキストエディタを介した際に何かやらかしたぐらいしか思い当たらない。
さておき、今回のインストール作業中、先人のWebコンテンツ通りでない点がいくつかあるのでメモ。
・latestでなくて4.2.8
・samba-tools のドメインプロビジョニング設定中 DNS forwading を none
・krb5.confを編集 サンプルドメインをここでの名称に変更とkdcのホスト.ドメインに修正
とりあえずこれで単独のADは立った。そして、以前のADのWindowsクライアントからリモートサーバ管理ツールでアクセスしたところ、アクセスできてしまった。ドメイン名とパスワードが同じであれば、単純なログイン・アクセスは可能なのか。あるいはDC不在のままローカルログインしているだけかと思えば、条鮫では実際に相当量のトラフィックが発生している。
さておき、次はSambaファイルサーバを立てて、ADと認証を連携させる。たた、これを先日試みた際はうまくいかなかったので、今回はwinbindを先に導入してみる。
の、前に。
kerberosは時刻同期が正確でなければならないということで、ADサーバに同期させようとしたのだが、そもそも
・VirtualBox 上の CentOS7 がそもそもネットワークにつながらない
(Network Unreachable)
・WindowsクライアントからADに対して同期しようとしたがNG
「ダブルで、来たね。」<---松田のガキふう
さらには、後者についてはNTPリクエストとレスポンスが発生しているのにWindows側で「同期できないのはピアが」なNG。しかも、サービスを止めて上げてOSを2度リブートしたら同期できるというイミフ。
というわけで、VirtualBox +CentOS7で 自身のNICのIPがNetworkあんりーちゃぶるな解決を次に。
...が、これがあっけなく判明した。おそろしくバカげたことだった。/etc/sysconfig/network-scripts/icfg-* をあらためたところ、ONBOOT=no となっていた。つまり、CentOS 7 になって操作がまるで変わり、nmcli を使ったところでこの点は要修正だったということだ。あるいは、コマンドでこの点も変更できるしソンナノジョーシキかもしれないが、マッタクわかっちゃいなかったと。
ユーザビリティのおっそろしく低いIT引きこもりワールドの洗礼、ということだ。
ま、いちいち懲りてもいられないので次へ。
http://e4776m4mg.blogspot.jp/2016/02/samba4-ad.html
結果的には、俺的さんのblogエントリの通りでインストール終了。ますます前回のNG原因がワカラナイ。コマンドを投入するにあたりテキストエディタを介した際に何かやらかしたぐらいしか思い当たらない。
さておき、今回のインストール作業中、先人のWebコンテンツ通りでない点がいくつかあるのでメモ。
・latestでなくて4.2.8
・samba-tools のドメインプロビジョニング設定中 DNS forwading を none
・krb5.confを編集 サンプルドメインをここでの名称に変更とkdcのホスト.ドメインに修正
とりあえずこれで単独のADは立った。そして、以前のADのWindowsクライアントからリモートサーバ管理ツールでアクセスしたところ、アクセスできてしまった。ドメイン名とパスワードが同じであれば、単純なログイン・アクセスは可能なのか。あるいはDC不在のままローカルログインしているだけかと思えば、条鮫では実際に相当量のトラフィックが発生している。
さておき、次はSambaファイルサーバを立てて、ADと認証を連携させる。たた、これを先日試みた際はうまくいかなかったので、今回はwinbindを先に導入してみる。
の、前に。
kerberosは時刻同期が正確でなければならないということで、ADサーバに同期させようとしたのだが、そもそも
・VirtualBox 上の CentOS7 がそもそもネットワークにつながらない
(Network Unreachable)
・WindowsクライアントからADに対して同期しようとしたがNG
「ダブルで、来たね。」<---松田のガキふう
さらには、後者についてはNTPリクエストとレスポンスが発生しているのにWindows側で「同期できないのはピアが」なNG。しかも、サービスを止めて上げてOSを2度リブートしたら同期できるというイミフ。
というわけで、VirtualBox +CentOS7で 自身のNICのIPがNetworkあんりーちゃぶるな解決を次に。
...が、これがあっけなく判明した。おそろしくバカげたことだった。/etc/sysconfig/network-scripts/icfg-* をあらためたところ、ONBOOT=no となっていた。つまり、CentOS 7 になって操作がまるで変わり、nmcli を使ったところでこの点は要修正だったということだ。あるいは、コマンドでこの点も変更できるしソンナノジョーシキかもしれないが、マッタクわかっちゃいなかったと。
ユーザビリティのおっそろしく低いIT引きこもりワールドの洗礼、ということだ。
ま、いちいち懲りてもいられないので次へ。
2016年2月27日土曜日
Samba4 AD 初回インストール作業要領 (仮)
初回インストールの経過ながら、毎度のコトながら初心者の試行錯誤-->結果:失敗であるので要領(仮)で。いや、試行錯誤というよりは右往左往か。
こんなblogの引き合いに出して申し訳なくも、基本手順は、俺的備忘録さんの2015年3月16日のエントリから。
http://orebibou.com/
----
CentOS 6.7において
Minimalインストール
インストールの指定項目中でホスト名.ドメインを指定
EthernetインターフェースにIPv4設定
ゲートウェイおよびDNSサーバアドレス指定
ntpインストール
/etc/ntp.confファイル中に外部NTPサーバの設定
ここで
/etc/hostname
が存在しないのでホスト名を記述
Samba4 の前提として必要な環境のインストール
yum install wget perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel
Samba導入の一時フォルダ作成
mkdir /tmp/samba
Samba本体のダウロードはこちらから
https://download.samba.org/pub/samba/
俺的さんはlatestだがここでは4.2.8
wget http://www.samba.org/samba/ftp/samba-4.2.8.tar.gz -P /tmp
解凍からmakeまで
tar zxvf /tmp/samba-4.2.8.tar.gz -C /tmp/samba/
cd /tmp/samba/samba-*
./configure
make
make install
そして、エラーが。どうやら事前の yum install 中で記述漏れがあったようだ。
Checking for header ldap.h : no
Checking for header lber.h : no
Checking for header ldap_pvt.h : no
Checking for ber_tag_t : not found
Checking for library lber : not found
Checking for ber_scanf : not found
Checking for ber_sockbuf_add_io : not found
Checking for variable LDAP_OPT_SOCKBUF : not found
Checking for variable LBER_OPT_LOG_PRINT_FN : not found
Checking for library ldap : not found
Checking for ldap_init : not found
Checking for ldap_init_fd : not found
Checking for ldap_initialize : not found
Checking for ldap_set_rebind_proc : not found
Checking for library ldap : not found
Checking for ldap_add_result_entry : not found
Checking whether ldap_set_rebind_proc takes 3 arguments : ok
/tmp/samba/samba-4.2.8/source3/wscript:685: error: LDAP support not found. Try installing libldap2-dev or openldap-devel. Otherwise, use --without-ldap to build without LDAP support. LDAP support is required for the LDAP passdb backend, LDAP idmap backends and ADS. ADS support improves communication with Active Directory domain controllers.
[root@DC01 samba-4.2.8]#
OpenLDAP-devel をインストールし直して、作業続行。そして、DNSの確認にまで至ったところでこのエラー。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
ailed to connect host 127.0.0.1 on port 135 - NT_STATUS_CONNECTION_REFUSED
Failed to connect host 127.0.0.1 (127.0.0.1) on port 135 - NT_STATUS_CONNECTION_REFUSED.
ERROR(runtime): uncaught exception - (-1073741258, 'The connection was refused')
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.run(*args, **kwargs)
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 809, in run
dns_conn = dns_connect(server, self.lp, self.creds)
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 40, in dns_connect
dns_conn = dnsserver.dnsserver(binding_str, lp, creds)
[root@DC01 ~]#
まず、
Failed to connect host 127.0.0.1 on port 135
Failed to connect host 127.0.0.1 (127.0.0.1) on port 135
この点。SELinux と iptables を「切り分けのため一時的に」はずす。
[root@DC01 ~]# getenforce
Enforcing
[root@DC01 ~]#
[root@DC01 ~]# setenforce 0
[root@DC01 ~]#
[root@DC01 ~]# /etc/rc.d/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@DC01 ~]#
結果は次のとおり。SELinux、iptables、いずれも直接の関係は無いようだ。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Failed to connect host 127.0.0.1 on port 135 - NT_STATUS_CONNECTION_REFUSED
Failed to connect host 127.0.0.1 (127.0.0.1) on port 135 - NT_STATUS_CONNECTION_REFUSED.
ERROR(runtime): uncaught exception - (-1073741258, 'The connection was refused')
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.run(*args, **kwargs)
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 809, in run
dns_conn = dns_connect(server, self.lp, self.creds)
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 40, in dns_connect
dns_conn = dnsserver.dnsserver(binding_str, lp, creds)
root@DC01 ~]#
uncaught exception、「把握できない例外」ぐらいの意味だろうか。そして __init__.py の175行目付近。
try:
return self.run(*args, **kwargs)
周辺の記述は self.raw なのだが。あるいは変更してみる??? いやそんなまさか。
それから dns.py については、809行目の記述についてはほかにまったく同一の部分が多々ある。もとより、lpもcredsも意味がわからない。
credsは credsntials のようなのだが、そもそもcredentialをわかっちゃいない。
http://ejje.weblio.jp/content/credential
また、調べる中でたまたま見かけたこちら
Windows DNS と Active Directory
http://www.soi.wide.ad.jp/class/20050011/slides/28/index_13.html
このレベルがひとつの経由地なのだが、現状では霞んで見えもしない遥か彼方の経由地であることは言うまでもない。
話は戻って、self.run の部分を self.raw に書き換えてもNGだった。アタリマエだが。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
ERROR(<type 'exceptions.AttributeError'>): uncaught exception - 'cmd_zonelist' object has no attribute 'raw'
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.raw(*args, **kwargs)
[root@DC01 ~]# vi /usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py
[root@DC01 ~]#
こんな試みが根拠イミフで支離滅裂>ジブンだ。
そして、一度リブートをはさんだら、
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Password for [SAMBA4-AD\Administrator]:
2 zone(s) found
pszZoneName : samba4-ad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : DomainDnsZones.samba4-ad.local
pszZoneName : _msdcs.samba4-ad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : ForestDnsZones.samba4-ad.local
[root@DC01 ~]#
正常化。これはいったい??? あるいは
sed -i "/^DNS1/cDNS1=127.0.0.1" /etc/sysconfig/network-scripts/ifcfg-*
の後の、ネットワークの再起動が不十分だったということか。そして、
[root@DC01 ~]# host -t SRV _ldap._tcp.Samba4-AD.LOCAL 127.0.0.1
-bash: host: command not found
[root@DC01 ~]#
hostコマンドが無いってなんやねん、、、
というわけで。ド素人が無いアタマをひねってどうにかなる程度でないので、最初からやり直し。。
こんなblogの引き合いに出して申し訳なくも、基本手順は、俺的備忘録さんの2015年3月16日のエントリから。
http://orebibou.com/
----
CentOS 6.7において
Minimalインストール
インストールの指定項目中でホスト名.ドメインを指定
EthernetインターフェースにIPv4設定
ゲートウェイおよびDNSサーバアドレス指定
ntpインストール
/etc/ntp.confファイル中に外部NTPサーバの設定
ここで
/etc/hostname
が存在しないのでホスト名を記述
Samba4 の前提として必要な環境のインストール
yum install wget perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libsepol-devel libattr-devel keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel
Samba導入の一時フォルダ作成
mkdir /tmp/samba
Samba本体のダウロードはこちらから
https://download.samba.org/pub/samba/
俺的さんはlatestだがここでは4.2.8
wget http://www.samba.org/samba/ftp/samba-4.2.8.tar.gz -P /tmp
解凍からmakeまで
tar zxvf /tmp/samba-4.2.8.tar.gz -C /tmp/samba/
cd /tmp/samba/samba-*
./configure
make
make install
そして、エラーが。どうやら事前の yum install 中で記述漏れがあったようだ。
Checking for header ldap.h : no
Checking for header lber.h : no
Checking for header ldap_pvt.h : no
Checking for ber_tag_t : not found
Checking for library lber : not found
Checking for ber_scanf : not found
Checking for ber_sockbuf_add_io : not found
Checking for variable LDAP_OPT_SOCKBUF : not found
Checking for variable LBER_OPT_LOG_PRINT_FN : not found
Checking for library ldap : not found
Checking for ldap_init : not found
Checking for ldap_init_fd : not found
Checking for ldap_initialize : not found
Checking for ldap_set_rebind_proc : not found
Checking for library ldap : not found
Checking for ldap_add_result_entry : not found
Checking whether ldap_set_rebind_proc takes 3 arguments : ok
/tmp/samba/samba-4.2.8/source3/wscript:685: error: LDAP support not found. Try installing libldap2-dev or openldap-devel. Otherwise, use --without-ldap to build without LDAP support. LDAP support is required for the LDAP passdb backend, LDAP idmap backends and ADS. ADS support improves communication with Active Directory domain controllers.
[root@DC01 samba-4.2.8]#
OpenLDAP-devel をインストールし直して、作業続行。そして、DNSの確認にまで至ったところでこのエラー。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
ailed to connect host 127.0.0.1 on port 135 - NT_STATUS_CONNECTION_REFUSED
Failed to connect host 127.0.0.1 (127.0.0.1) on port 135 - NT_STATUS_CONNECTION_REFUSED.
ERROR(runtime): uncaught exception - (-1073741258, 'The connection was refused')
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.run(*args, **kwargs)
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 809, in run
dns_conn = dns_connect(server, self.lp, self.creds)
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 40, in dns_connect
dns_conn = dnsserver.dnsserver(binding_str, lp, creds)
[root@DC01 ~]#
まず、
Failed to connect host 127.0.0.1 on port 135
Failed to connect host 127.0.0.1 (127.0.0.1) on port 135
この点。SELinux と iptables を「切り分けのため一時的に」はずす。
[root@DC01 ~]# getenforce
Enforcing
[root@DC01 ~]#
[root@DC01 ~]# setenforce 0
[root@DC01 ~]#
[root@DC01 ~]# /etc/rc.d/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@DC01 ~]#
結果は次のとおり。SELinux、iptables、いずれも直接の関係は無いようだ。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Failed to connect host 127.0.0.1 on port 135 - NT_STATUS_CONNECTION_REFUSED
Failed to connect host 127.0.0.1 (127.0.0.1) on port 135 - NT_STATUS_CONNECTION_REFUSED.
ERROR(runtime): uncaught exception - (-1073741258, 'The connection was refused')
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.run(*args, **kwargs)
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 809, in run
dns_conn = dns_connect(server, self.lp, self.creds)
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/dns.py", line 40, in dns_connect
dns_conn = dnsserver.dnsserver(binding_str, lp, creds)
root@DC01 ~]#
uncaught exception、「把握できない例外」ぐらいの意味だろうか。そして __init__.py の175行目付近。
try:
return self.run(*args, **kwargs)
周辺の記述は self.raw なのだが。あるいは変更してみる??? いやそんなまさか。
それから dns.py については、809行目の記述についてはほかにまったく同一の部分が多々ある。もとより、lpもcredsも意味がわからない。
credsは credsntials のようなのだが、そもそもcredentialをわかっちゃいない。
http://ejje.weblio.jp/content/credential
また、調べる中でたまたま見かけたこちら
Windows DNS と Active Directory
http://www.soi.wide.ad.jp/class/20050011/slides/28/index_13.html
このレベルがひとつの経由地なのだが、現状では霞んで見えもしない遥か彼方の経由地であることは言うまでもない。
話は戻って、self.run の部分を self.raw に書き換えてもNGだった。アタリマエだが。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
ERROR(<type 'exceptions.AttributeError'>): uncaught exception - 'cmd_zonelist' object has no attribute 'raw'
File "/usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.raw(*args, **kwargs)
[root@DC01 ~]# vi /usr/local/samba/lib/python2.6/site-packages/samba/netcmd/__init__.py
[root@DC01 ~]#
こんな試みが根拠イミフで支離滅裂>ジブンだ。
そして、一度リブートをはさんだら、
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Password for [SAMBA4-AD\Administrator]:
2 zone(s) found
pszZoneName : samba4-ad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : DomainDnsZones.samba4-ad.local
pszZoneName : _msdcs.samba4-ad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : ForestDnsZones.samba4-ad.local
[root@DC01 ~]#
正常化。これはいったい??? あるいは
sed -i "/^DNS1/cDNS1=127.0.0.1" /etc/sysconfig/network-scripts/ifcfg-*
の後の、ネットワークの再起動が不十分だったということか。そして、
[root@DC01 ~]# host -t SRV _ldap._tcp.Samba4-AD.LOCAL 127.0.0.1
-bash: host: command not found
[root@DC01 ~]#
hostコマンドが無いってなんやねん、、、
というわけで。ド素人が無いアタマをひねってどうにかなる程度でないので、最初からやり直し。。
Samba4とADの認証統合 試行錯誤
Using short domain name -- SAMBA4-AD
Joined `LOCALHOST` to dns domain `samba4-ad.local`
No DNS domain configured for localhost. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
これで躓いているところ。こちら様によると
Active DirectoryとLinuxの認証を統合しよう
第5回 SambaのWinbindによる認証統合
http://gihyo.jp/admin/serial/01/ad-linux/0005?page=2
Joined `LOCALHOST` to dns domain `samba4-ad.local`
が表示される時点で、ドメインへの参加はできているようなのだが。DNS update failed の内容をそのまま検索すると次のような対策例もあり、
http://www.kombitz.com/2012/03/05/samba-net-ads-join-dns-update-failed-error-fixed/
試してみたが状況は変わらなかった。実際のトラフィックを確認すると、DNSクエリに対してDCからの応答がなく、DCが外部DNSへ問い合わせのトラフィックを創出しているので、DC側の問題のようだ。こうなると、ドメインプロビジョニングの際に設定を誤った、というか認識が不足していたということかもしれない。
そこで、samba-tools で変更を試みるも、作法について見当がつかない。知らないものを調べずにワカルわけがないという幼稚園児程度。
samba-tool(8)
http://www.samba.gr.jp/project/translation/4.0/htmldocs/manpages/samba-tool.8.html
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns add -h | more
Usage: samba-tool dns add <server> <zone> <name> <A|AAAA|PTR|CNAME|NS|MX|SRV|TXT> <data>
Add a DNS record
For each type data contents are as follows:
A ipv4_address_string
AAAA ipv6_address_string
PTR fqdn_string
CNAME fqdn_string
NS fqdn_string
MX "fqdn_string preference"
SRV "fqdn_string port priority weight"
TXT "'string1' 'string2' ..."
Options:
-h, --help show this help message and exit
Samba Common Options:
-s FILE, --configfile=FILE
Configuration file
-d DEBUGLEVEL, --debuglevel=DEBUGLEVEL
debug level
--option=OPTION set smb.conf option from command line
--realm=REALM set the realm name
Credentials Options:
--simple-bind-dn=DN
DN to use for a simple bind
--password=PASSWORD
Password
-U USERNAME, --username=USERNAME
Username
-W WORKGROUP, --workgroup=WORKGROUP
Workgroup
-N, --no-pass Don't ask for a password
-k KERBEROS, --kerberos=KERBEROS
Use Kerberos
--ipaddress=IPADDRESS
IP address of server
Version Options:
-V, --version Display version number
[root@DC01 ~]#
余談だが、FSMOってなんだっけ? と検索した中で出てきた、ADのAWS以降の事例
http://dev.classmethod.jp/cloud/aws/active-directory-on-aws-4/
SambaじゃなくてWindowsそのものですね、ここに引用するのがイミフです。
ともあれ、Samba-tool で Aレコード追加を試みるも、ファイルサーバ側で135番のコネクションでエラー。一方でADDC側でDNSフォワーディングを無くそうとするも、手法を見つけられず、致しかたなくdomain provisoning からやり直せるかな? と思ったら、samba-tool での操作自体は問題ないものの、外部から接続する際に kinit の先でエラー。
とっ散らかってしまったので、やり直し。
Joined `LOCALHOST` to dns domain `samba4-ad.local`
No DNS domain configured for localhost. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
これで躓いているところ。こちら様によると
Active DirectoryとLinuxの認証を統合しよう
第5回 SambaのWinbindによる認証統合
http://gihyo.jp/admin/serial/01/ad-linux/0005?page=2
Joined `LOCALHOST` to dns domain `samba4-ad.local`
が表示される時点で、ドメインへの参加はできているようなのだが。DNS update failed の内容をそのまま検索すると次のような対策例もあり、
http://www.kombitz.com/2012/03/05/samba-net-ads-join-dns-update-failed-error-fixed/
試してみたが状況は変わらなかった。実際のトラフィックを確認すると、DNSクエリに対してDCからの応答がなく、DCが外部DNSへ問い合わせのトラフィックを創出しているので、DC側の問題のようだ。こうなると、ドメインプロビジョニングの際に設定を誤った、というか認識が不足していたということかもしれない。
そこで、samba-tools で変更を試みるも、作法について見当がつかない。知らないものを調べずにワカルわけがないという幼稚園児程度。
samba-tool(8)
http://www.samba.gr.jp/project/translation/4.0/htmldocs/manpages/samba-tool.8.html
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns add -h | more
Usage: samba-tool dns add <server> <zone> <name> <A|AAAA|PTR|CNAME|NS|MX|SRV|TXT> <data>
Add a DNS record
For each type data contents are as follows:
A ipv4_address_string
AAAA ipv6_address_string
PTR fqdn_string
CNAME fqdn_string
NS fqdn_string
MX "fqdn_string preference"
SRV "fqdn_string port priority weight"
TXT "'string1' 'string2' ..."
Options:
-h, --help show this help message and exit
Samba Common Options:
-s FILE, --configfile=FILE
Configuration file
-d DEBUGLEVEL, --debuglevel=DEBUGLEVEL
debug level
--option=OPTION set smb.conf option from command line
--realm=REALM set the realm name
Credentials Options:
--simple-bind-dn=DN
DN to use for a simple bind
--password=PASSWORD
Password
-U USERNAME, --username=USERNAME
Username
-W WORKGROUP, --workgroup=WORKGROUP
Workgroup
-N, --no-pass Don't ask for a password
-k KERBEROS, --kerberos=KERBEROS
Use Kerberos
--ipaddress=IPADDRESS
IP address of server
Version Options:
-V, --version Display version number
[root@DC01 ~]#
余談だが、FSMOってなんだっけ? と検索した中で出てきた、ADのAWS以降の事例
http://dev.classmethod.jp/cloud/aws/active-directory-on-aws-4/
SambaじゃなくてWindowsそのものですね、ここに引用するのがイミフです。
ともあれ、Samba-tool で Aレコード追加を試みるも、ファイルサーバ側で135番のコネクションでエラー。一方でADDC側でDNSフォワーディングを無くそうとするも、手法を見つけられず、致しかたなくdomain provisoning からやり直せるかな? と思ったら、samba-tool での操作自体は問題ないものの、外部から接続する際に kinit の先でエラー。
とっ散らかってしまったので、やり直し。
2016年2月26日金曜日
CentOS7でSambaファイルサーバ
Samba AD と ファイルサーバの認証統合に先立ち、CentOS7で単独のファイルサーバを立てる。機材が足りないのでVirtualBoxにCentOS7をMinimalインストールして以下。
・nmtui でネットワークの基本設定
これだとサブネットマスク値、プリフィクスの入力欄が無いので、IPアドレスに続いて/プリフィクス長で記述してみると、入力はできる。
しかし入力の後、# systemctl restart NetworkManager を実施しても自インターフェース当てのpingがNG
ping 172.16.0.1
connect: Network is unreachable
一方で、ループバック宛のpingはOK。そこで、nmtuiツールに戻ってインターフェースのDeactivate-->Activateを行ってみると
Could not Activate connection:
Activvation failed
あるいは独自解釈のプリフィクス記述が問題か? と考え nmtui 中の/24記述を消してみる。疎通NGは解消せず、再度nmtuiに戻るとIPアドレス値の後ろが/32となっている。ということは、/24の記述は書式としては誤っていないと。
さて、これは。めもめもさんの次のエントリ、
RHEL7/CentOS7でipコマンドをマスター
http://enakai00.hatenablog.com/entry/20140712/1405139841
を参考に ip a を叩いてみると(*)、EthernetのインターフェースにIPアドレスが割り当てられていない、という状態であるようだ。
* 本来ならばこちらのドキュメントに目を通すべきだが。
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/index.html
と、ここで。
ネットワークの設定NGとの関連性は極めて低いと思うが、OSインストール時のキーマップの設定を誤っていることに気付いた。英語キーボードの機材と日本語キーボードのごっちゃに使っているのでやらかしたが、ショボイ。
英語キーボードマップのままでも使えないことはないが、IPv6アドレスの入力等で面倒極まりないので、再インストールすることにする。
そして、再インストールの途中で気付いたが、前回のインストールではVirtualBoxのネットワーク設定を誤ったかもしれない。複数のネットワークインターフェースのうち、ワイヤレスインターフェース(実際は未使用)がデフォルトでVirtualBoxに割り当てられていた可能性がある。<--今回は無かった。
尚、このインストールの合間に vmware player を別PCにインストールしようとしたが、64ビット版のみの提供に変わる? のだろうか。状況はよくわからないが、少なくともテストPCは 7pro の32ビット。調達時に考慮が足りなかったので反省だ。
話は戻って、再インストール後もIPv4の設定はNG、ip a でアドレスが反映されない。また、IPv4だNGならと、ip a で確認できるIPv6アドレスにpingもNG。
致し方なく、GUIでなくコマンドラインでの設定についてserver-world.infoさんを参考に
http://www.server-world.info/query?os=CentOS_7&p=initial_conf&f=3
結果、至極ふつうに全く問題ない。たいへん解せないが、こんな段で止まっていられないので先へ。
Samba ファイルサーバだが、ADとは別に稼働させる前提でのテストなので極力簡易に導入するものとする。今回はまんまserver-world.infoさんのこの事例のまんまで
http://www.server-world.info/query?os=CentOS_7&p=samba&f=2
と、ここでひとつ宿題。ADのクライアントが、Samba ADDCに対して時刻同期できない問題があった。サーバ間連携のためには、SambaファイルサーバからSamba ADに対して時刻同期は必須かと思われるが、試してみるとntpdate で同期OKなので、ADクライアントの問題は保留とする。
さて、Sambaファイルサーバのインストール。
yum -y install samba samba-client
・dos charset をミスタイプ
・useradd をせずに smbpasswd ができず悩む
などを経て導入終了、のつもりが、リモートPCからファイルサーバへのアクセスは可能だが、個人フォルダにアクセスしようとすると「許可がありません。」
usermod -G security ユーザアカウント
を忘れているという醜態。そして、systemctl restart smb 後に security フォルダはアクセス可能となるもの、ユーザ名のフォルダはアクセスNG。smb.confの記述が足りないか。かと思いきや、security フォルダも読み取りのみで書き込みNG。smb.conf 中のミスタイプ
・create mode のところで ceate
・valid users のところで vaild
ちょっと酷い。複数の機材でキーピッチもストロークもまるで違うということはあるが、そもそも画面をろくに目で追っていないのでこのザマだ。ぶらいんどたっち、が出来ずに指先を見ているならまだしも、キーなど一瞥もしていないのに画面読んでないって何を見てんだ俺。。
ともあれ、単純な記述ミスを修正。で、不具合は変わらず。そこで、テスト用のアカウントをもうひとつ作り、クライアント側をリブートし試したところ、ADアカウントの認証を求められる画面があらわれた。
... smb.conf ファイル中の、本来ワークグループを記述するところにドメインを記述したのがアレで? あるいは既にADに参加している7proから確認しようとしているのがナンで?
ここで、本来ならばファイルサーバの動作確認を、あるべきクライアントから実行すべきだがこれは既に何度か試したのでいっそ省略。winbindに設定を進めてしまう暴挙に走ってみる。
インストール前のDNSサーバアドレス変更は既に実施しているので、authconfig を入力してみるがここでもミスタイプがいくつも。
... 俺、要グラッシィズ? あるいはこんたくとれんず?? モノが見えていない自覚に欠ける?
コマンドオプションを入力しつつ薄々違うだろとは思っていたが、レルム名が誤っていてこれを修正。/etc/krb5.confを直接修正するがNGなので、authconfig コマンドを2度修正。そしてやっと
net ads join -U Administrator
Enter Administrator's password:
が通るものの、次のエラー。
Using short domain name -- SAMBA4-AD
Joined `LOCALHOST` to dns domain `samba4-ad.local`
No DNS domain configured for localhost. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
もっとも、ここは server-world.infoさんでも、エラーの内容こそ異なるが update failed のままサービスの再起動に進んでいるので、ここでも試してみる。すると、ドメイン参加、ドメイン情報表示、ADのユーザ情報表示まではOKだが、suでNG。
ここから先は、足りないアタマでとりあえずやってみるでは泥沼も沈む一方。動作について、足りないアタマなりに学びつつ進...めるといいな次のエントリ。
・nmtui でネットワークの基本設定
これだとサブネットマスク値、プリフィクスの入力欄が無いので、IPアドレスに続いて/プリフィクス長で記述してみると、入力はできる。
しかし入力の後、# systemctl restart NetworkManager を実施しても自インターフェース当てのpingがNG
ping 172.16.0.1
connect: Network is unreachable
一方で、ループバック宛のpingはOK。そこで、nmtuiツールに戻ってインターフェースのDeactivate-->Activateを行ってみると
Could not Activate connection:
Activvation failed
あるいは独自解釈のプリフィクス記述が問題か? と考え nmtui 中の/24記述を消してみる。疎通NGは解消せず、再度nmtuiに戻るとIPアドレス値の後ろが/32となっている。ということは、/24の記述は書式としては誤っていないと。
さて、これは。めもめもさんの次のエントリ、
RHEL7/CentOS7でipコマンドをマスター
http://enakai00.hatenablog.com/entry/20140712/1405139841
を参考に ip a を叩いてみると(*)、EthernetのインターフェースにIPアドレスが割り当てられていない、という状態であるようだ。
* 本来ならばこちらのドキュメントに目を通すべきだが。
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/index.html
と、ここで。
ネットワークの設定NGとの関連性は極めて低いと思うが、OSインストール時のキーマップの設定を誤っていることに気付いた。英語キーボードの機材と日本語キーボードのごっちゃに使っているのでやらかしたが、ショボイ。
英語キーボードマップのままでも使えないことはないが、IPv6アドレスの入力等で面倒極まりないので、再インストールすることにする。
そして、再インストールの途中で気付いたが、前回のインストールではVirtualBoxのネットワーク設定を誤ったかもしれない。複数のネットワークインターフェースのうち、ワイヤレスインターフェース(実際は未使用)がデフォルトでVirtualBoxに割り当てられていた可能性がある。<--今回は無かった。
尚、このインストールの合間に vmware player を別PCにインストールしようとしたが、64ビット版のみの提供に変わる? のだろうか。状況はよくわからないが、少なくともテストPCは 7pro の32ビット。調達時に考慮が足りなかったので反省だ。
話は戻って、再インストール後もIPv4の設定はNG、ip a でアドレスが反映されない。また、IPv4だNGならと、ip a で確認できるIPv6アドレスにpingもNG。
致し方なく、GUIでなくコマンドラインでの設定についてserver-world.infoさんを参考に
http://www.server-world.info/query?os=CentOS_7&p=initial_conf&f=3
結果、至極ふつうに全く問題ない。たいへん解せないが、こんな段で止まっていられないので先へ。
Samba ファイルサーバだが、ADとは別に稼働させる前提でのテストなので極力簡易に導入するものとする。今回はまんまserver-world.infoさんのこの事例のまんまで
http://www.server-world.info/query?os=CentOS_7&p=samba&f=2
と、ここでひとつ宿題。ADのクライアントが、Samba ADDCに対して時刻同期できない問題があった。サーバ間連携のためには、SambaファイルサーバからSamba ADに対して時刻同期は必須かと思われるが、試してみるとntpdate で同期OKなので、ADクライアントの問題は保留とする。
さて、Sambaファイルサーバのインストール。
yum -y install samba samba-client
・dos charset をミスタイプ
・useradd をせずに smbpasswd ができず悩む
などを経て導入終了、のつもりが、リモートPCからファイルサーバへのアクセスは可能だが、個人フォルダにアクセスしようとすると「許可がありません。」
usermod -G security ユーザアカウント
を忘れているという醜態。そして、systemctl restart smb 後に security フォルダはアクセス可能となるもの、ユーザ名のフォルダはアクセスNG。smb.confの記述が足りないか。かと思いきや、security フォルダも読み取りのみで書き込みNG。smb.conf 中のミスタイプ
・create mode のところで ceate
・valid users のところで vaild
ちょっと酷い。複数の機材でキーピッチもストロークもまるで違うということはあるが、そもそも画面をろくに目で追っていないのでこのザマだ。ぶらいんどたっち、が出来ずに指先を見ているならまだしも、キーなど一瞥もしていないのに画面読んでないって何を見てんだ俺。。
ともあれ、単純な記述ミスを修正。で、不具合は変わらず。そこで、テスト用のアカウントをもうひとつ作り、クライアント側をリブートし試したところ、ADアカウントの認証を求められる画面があらわれた。
... smb.conf ファイル中の、本来ワークグループを記述するところにドメインを記述したのがアレで? あるいは既にADに参加している7proから確認しようとしているのがナンで?
ここで、本来ならばファイルサーバの動作確認を、あるべきクライアントから実行すべきだがこれは既に何度か試したのでいっそ省略。winbindに設定を進めてしまう暴挙に走ってみる。
インストール前のDNSサーバアドレス変更は既に実施しているので、authconfig を入力してみるがここでもミスタイプがいくつも。
... 俺、要グラッシィズ? あるいはこんたくとれんず?? モノが見えていない自覚に欠ける?
コマンドオプションを入力しつつ薄々違うだろとは思っていたが、レルム名が誤っていてこれを修正。/etc/krb5.confを直接修正するがNGなので、authconfig コマンドを2度修正。そしてやっと
net ads join -U Administrator
Enter Administrator's password:
が通るものの、次のエラー。
Using short domain name -- SAMBA4-AD
Joined `LOCALHOST` to dns domain `samba4-ad.local`
No DNS domain configured for localhost. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
もっとも、ここは server-world.infoさんでも、エラーの内容こそ異なるが update failed のままサービスの再起動に進んでいるので、ここでも試してみる。すると、ドメイン参加、ドメイン情報表示、ADのユーザ情報表示まではOKだが、suでNG。
ここから先は、足りないアタマでとりあえずやってみるでは泥沼も沈む一方。動作について、足りないアタマなりに学びつつ進...めるといいな次のエントリ。
2016年2月25日木曜日
認証統合の前にケルベロスのキホン
ITPro 情報セキュリティ入門 ケルベロス認証
http://itpro.nikkeibp.co.jp/article/COLUMN/20060518/238303/
RFC1510
https://www.ipa.go.jp/security/rfc/RFC1510-00JA.html
RedHat
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-ja-4/s1-kerberos-terminology.html
メッセージ交換について
AS
AP
TGS
SAFE
KRB
5種類の定義がある。何がどのように使われるかは追って学ぶとして、先日WindowsクライアントとDC間のトラフィックを眺めた時に膨大なやり取りがあって、なるほどこれかと。
もっとも現時点では「見たような気がしました」というあまりにもショボい捉え方止まり=恥の露呈、が実情なのだが。読み進めてもすぐには理解できないが、ひとつひとつ認識があらたまることは実に楽しい。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060518/238303/
RFC1510
https://www.ipa.go.jp/security/rfc/RFC1510-00JA.html
RedHat
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-ja-4/s1-kerberos-terminology.html
メッセージ交換について
AS
AP
TGS
SAFE
KRB
5種類の定義がある。何がどのように使われるかは追って学ぶとして、先日WindowsクライアントとDC間のトラフィックを眺めた時に膨大なやり取りがあって、なるほどこれかと。
もっとも現時点では「見たような気がしました」というあまりにもショボい捉え方止まり=恥の露呈、が実情なのだが。読み進めてもすぐには理解できないが、ひとつひとつ認識があらたまることは実に楽しい。
UPSのキホン
Samba-ADとファイルサーバの認証連携もそこそこに、実用上は電源対策も必要なわけで。Linuxでどうこう以前にまずキホン。
ITPro 情報システムのトピックス UPS
http://itpro.nikkeibp.co.jp/article/COLUMN/20090625/332613/
OmronにLinux向けの簡易なツールはあるようだが、とうにメンテナンスが止まっている。
http://www.omron.co.jp/ese/ups/support/download/soft/sss/sss.html
maruko2.NoteさんではAPCとの接続事例が。
http://www.maruko2.com/mw/apcupsd_%E3%81%A7_APC%E8%A3%BD_UPS_%E3%82%92%E9%9B%BB%E6%BA%90%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
埼玉大学大学院 理工学研究科 伊藤氏のコンテンツによれば
http://www.elc.ees.saitama-u.ac.jp/~kazuhito/apcups.html
いろいろ探してみると、どうも apcupsd というデーモンを使うことで、APC製のUPS商品と連携することが可能であるようだ。テスト機材も、シリアルポート/USB接続の管理機能を持つ企業向けエントリー商品が、電器店でそこそこのお値段で調達できそうな。
また、このエントリー商品でもアウトレットは6つあるので、ルータ・スイッチ・WAN機器・BDC兼別サーバ含めて接続できそうな。
ADとファイルサーバの認証連携の次は楽しそうだぜAWESOME!
ITPro 情報システムのトピックス UPS
http://itpro.nikkeibp.co.jp/article/COLUMN/20090625/332613/
OmronにLinux向けの簡易なツールはあるようだが、とうにメンテナンスが止まっている。
http://www.omron.co.jp/ese/ups/support/download/soft/sss/sss.html
maruko2.NoteさんではAPCとの接続事例が。
http://www.maruko2.com/mw/apcupsd_%E3%81%A7_APC%E8%A3%BD_UPS_%E3%82%92%E9%9B%BB%E6%BA%90%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
埼玉大学大学院 理工学研究科 伊藤氏のコンテンツによれば
http://www.elc.ees.saitama-u.ac.jp/~kazuhito/apcups.html
いろいろ探してみると、どうも apcupsd というデーモンを使うことで、APC製のUPS商品と連携することが可能であるようだ。テスト機材も、シリアルポート/USB接続の管理機能を持つ企業向けエントリー商品が、電器店でそこそこのお値段で調達できそうな。
また、このエントリー商品でもアウトレットは6つあるので、ルータ・スイッチ・WAN機器・BDC兼別サーバ含めて接続できそうな。
ADとファイルサーバの認証連携の次は楽しそうだぜAWESOME!
Samba4-ADDCと時刻同期しないWindowsクライアントについて
参考にさせていただいのはこちら様。
なんでもシステム管理者(IT大好き?)
ActiveDirectory環境でクライアントの時刻がずれる!! (コマンドw32tm sc)
http://nansys.hatenablog.com/entry/2015/07/07/123922
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Administrator.SAMBA4-AD>w32tm /query /status
閏インジケーター: 3 (最後の 1 分間は 61 秒)
階層: 0 (未指定)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0000000s
ルート分散: 0.0000000s
参照 ID: 0x00000000 (未指定)
最終正常同期時刻: 未指定
ソース: Local CMOS Clock
ポーリング間隔: 10 (1024s)
C:\Users\Administrator.SAMBA4-AD>w32tm /query /status
閏インジケーター: 3 (最後の 1 分間は 61 秒)
階層: 0 (未指定)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0000000s
ルート分散: 0.0000000s
参照 ID: 0x00000000 (未指定)
最終正常同期時刻: 未指定
ソース: Local CMOS Clock
ポーリング間隔: 10 (1024s)
C:\Users\Administrator.SAMBA4-AD>w32tm /config /syncfromflags:DOMHIER
コマンドは正しく完了しました。
C:\Users\Administrator.SAMBA4-AD>
ここでは再起動の話もあるが、再起動後も、時刻ソースは依然としてローカルCMOSクロックのまま。Samba-ADにおける時刻同期について少々探してみるも、同一の事象がみつからない。あるいは? というところで、
Case-of-Tさん
Sambaを Active Directory互換ドメインコントローラとしてセットアップする方法
http://case-of-t.net/2012/12/25/samba-ad-dc-howto/
にSELinuxに関連しての記述があるものの、やはりこのケースとは異なるような気が。
そして実際にトラフィックを見ると、これが、
・WindowsでAD連携とは無関係に時刻の同期を行おうとすると
SambaADとのやりとりは、トラフィックとしてはntpで見える。
・しかしWindows側で同期はなされない。
・それも、SambaAD側のntpdが返しているのはUTC時刻。
AD関連以前に、まずntp単体の問題として解消しなければならなくなった。
Unixpower on Networkingさんにもこういった内容はあるが、
http://www.unix-power.net/linux/samba1_centos6.html
そもそも手っ取り早く解消、ではなくて正規のドキュメントをたまには掘り下げねば。安直ばかりではいられないが、be ended prematurely with ... 。
なんでもシステム管理者(IT大好き?)
ActiveDirectory環境でクライアントの時刻がずれる!! (コマンドw32tm sc)
http://nansys.hatenablog.com/entry/2015/07/07/123922
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Administrator.SAMBA4-AD>w32tm /query /status
閏インジケーター: 3 (最後の 1 分間は 61 秒)
階層: 0 (未指定)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0000000s
ルート分散: 0.0000000s
参照 ID: 0x00000000 (未指定)
最終正常同期時刻: 未指定
ソース: Local CMOS Clock
ポーリング間隔: 10 (1024s)
C:\Users\Administrator.SAMBA4-AD>w32tm /query /status
閏インジケーター: 3 (最後の 1 分間は 61 秒)
階層: 0 (未指定)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0000000s
ルート分散: 0.0000000s
参照 ID: 0x00000000 (未指定)
最終正常同期時刻: 未指定
ソース: Local CMOS Clock
ポーリング間隔: 10 (1024s)
C:\Users\Administrator.SAMBA4-AD>w32tm /config /syncfromflags:DOMHIER
コマンドは正しく完了しました。
C:\Users\Administrator.SAMBA4-AD>
ここでは再起動の話もあるが、再起動後も、時刻ソースは依然としてローカルCMOSクロックのまま。Samba-ADにおける時刻同期について少々探してみるも、同一の事象がみつからない。あるいは? というところで、
Case-of-Tさん
Sambaを Active Directory互換ドメインコントローラとしてセットアップする方法
http://case-of-t.net/2012/12/25/samba-ad-dc-howto/
にSELinuxに関連しての記述があるものの、やはりこのケースとは異なるような気が。
そして実際にトラフィックを見ると、これが、
・WindowsでAD連携とは無関係に時刻の同期を行おうとすると
SambaADとのやりとりは、トラフィックとしてはntpで見える。
・しかしWindows側で同期はなされない。
・それも、SambaAD側のntpdが返しているのはUTC時刻。
AD関連以前に、まずntp単体の問題として解消しなければならなくなった。
Unixpower on Networkingさんにもこういった内容はあるが、
http://www.unix-power.net/linux/samba1_centos6.html
そもそも手っ取り早く解消、ではなくて正規のドキュメントをたまには掘り下げねば。安直ばかりではいられないが、be ended prematurely with ... 。
2016年2月24日水曜日
ド素人によるSamba4 AD と Samba ユーザの認証統合の試みのための勉強資料
まず、技評さんのこのレベルから全く理解できない。もちろん、私の基本的な知識が欠如しまくっているためであって技評さんには何の非も一切無い。
Active DirectoryとLinuxの認証を統合しよう
第0回 認証統合の概要とSamba
http://gihyo.jp/admin/serial/01/ad-linux/0001
敵を知り己を知っても百戦にそもそも挑めないぜAWESOME!
Active DirectoryとLinuxの認証を統合しよう
第0回 認証統合の概要とSamba
http://gihyo.jp/admin/serial/01/ad-linux/0001
敵を知り己を知っても百戦にそもそも挑めないぜAWESOME!
2016年2月23日火曜日
Samba4 AD のための iptables な設定の試行錯誤
先日の作業ではネットを検索しつつ試行錯誤していたが、実際に稼働しているSamba4 の設定を見ていなかったという、本末もバナナの皮で転倒なマヌケっぷり。で、
/usr/local/samba/private/dns_update_list
を今さらながらにのぞいてみると。
[root@DC01 ~]# more /usr/local/samba/private/dns_update_list
# this is a list of DNS entries which will be put into DNS using
# dynamic DNS update. It is processed by the samba_dnsupdate script
A ${HOSTNAME} $IP
AAAA ${HOSTNAME} $IP
# RW domain controller
${IF_RWDC}A ${DNSDOMAIN} $IP
${IF_RWDC}AAAA ${DNSDOMAIN} $IP
${IF_RWDC}SRV _ldap._tcp.${DNSDOMAIN} ${HOSTNAME} 389
${IF_RWDC}SRV _ldap._tcp.dc._msdcs.${DNSDOMAIN} ${HOSTNAME} 389
${IF_RWDC}SRV _ldap._tcp.${DOMAINGUID}.domains._msdcs.${DNSFOREST} ${HOSTNAME} 389
${IF_RWDC}SRV _kerberos._tcp.${DNSDOMAIN} ${HOSTNAME} 88
${IF_RWDC}SRV _kerberos._udp.${DNSDOMAIN} ${HOSTNAME} 88
${IF_RWDC}SRV _kerberos._tcp.dc._msdcs.${DNSDOMAIN} ${HOSTNAME} 88
${IF_RWDC}SRV _kpasswd._tcp.${DNSDOMAIN} ${HOSTNAME} 464
${IF_RWDC}SRV _kpasswd._udp.${DNSDOMAIN} ${HOSTNAME} 464
# RW and RO domain controller
${IF_DC}CNAME ${NTDSGUID}._msdcs.${DNSFOREST} ${HOSTNAME}
${IF_DC}SRV _ldap._tcp.${SITE}._sites.${DNSDOMAIN} ${HOSTNAME} 389
${IF_DC}SRV _ldap._tcp.${SITE}._sites.dc._msdcs.${DNSDOMAIN} ${HOSTNAME} 389
${IF_DC}SRV _kerberos._tcp.${SITE}._sites.${DNSDOMAIN} ${HOSTNAME} 88
${IF_DC}SRV _kerberos._tcp.${SITE}._sites.dc._msdcs.${DNSDOMAIN} ${HOSTNAME} 88
# The PDC emulator
${IF_PDC}SRV _ldap._tcp.pdc._msdcs.${DNSDOMAIN} ${HOSTNAME} 389
# RW GC servers
${IF_RWGC}A gc._msdcs.${DNSFOREST} $IP
${IF_RWGC}AAAA gc._msdcs.${DNSFOREST} $IP
${IF_RWGC}SRV _gc._tcp.${DNSFOREST} ${HOSTNAME} 3268
${IF_RWGC}SRV _ldap._tcp.gc._msdcs.${DNSFOREST} ${HOSTNAME} 3268
# RW and RO GC servers
${IF_GC}SRV _gc._tcp.${SITE}._sites.${DNSFOREST} ${HOSTNAME} 3268
${IF_GC}SRV _ldap._tcp.${SITE}._sites.gc._msdcs.${DNSFOREST} ${HOSTNAME} 3268
# RW DNS servers
${IF_RWDNS_DOMAIN}A DomainDnsZones.${DNSDOMAIN} $IP
${IF_RWDNS_DOMAIN}AAAA DomainDnsZones.${DNSDOMAIN} $IP
${IF_RWDNS_DOMAIN}SRV _ldap._tcp.DomainDnsZones.${DNSDOMAIN} ${HOSTNAME} 389
# RW and RO DNS servers
${IF_DNS_DOMAIN}SRV _ldap._tcp.${SITE}._sites.DomainDnsZones.${DNSDOMAIN} ${HOSTNAME} 389
# RW DNS servers
${IF_RWDNS_FOREST}A ForestDnsZones.${DNSFOREST} $IP
${IF_RWDNS_FOREST}AAAA ForestDnsZones.${DNSFOREST} $IP
${IF_RWDNS_FOREST}SRV _ldap._tcp.ForestDnsZones.${DNSFOREST} ${HOSTNAME} 389
# RW and RO DNS servers
${IF_DNS_FOREST}SRV _ldap._tcp.${SITE}._sites.ForestDnsZones.${DNSFOREST} ${HOSTNAME} 389
[root@DC01 ~]#
kerberosのUDP88と、kpasswdのTCP/UDP464、GCのTCP3268を sysconfigなiptablesで修正する。
ここでGCについては全く、それこそ目にした記憶さえなかったのだが「グローバルカタログ」であるらしい。これについてはアットマークITとMSTech-netから。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1177adgc/adgc.html
https://technet.microsoft.com/ja-jp/library/cc730749.aspx
これで、とりあえず7proなクライアントからログインはできた。無論、何らかの支障を認識できていない可能性は多々。
iptables とは別件。
ADログイン後のクライアントからSamba4サーバをDNSとしたインターネットアクセスがNGになった件、
/usr/local/samba/etc/samba/smb.conf
中の dns forwarder 値を修正することで復旧した。
なお、修正した後に
/etc/rc.d/init.d/samba4 restart
をかけずに、少々首をかしげたことも露呈してしまうぜ AWESOME!
/usr/local/samba/private/dns_update_list
を今さらながらにのぞいてみると。
[root@DC01 ~]# more /usr/local/samba/private/dns_update_list
# this is a list of DNS entries which will be put into DNS using
# dynamic DNS update. It is processed by the samba_dnsupdate script
A ${HOSTNAME} $IP
AAAA ${HOSTNAME} $IP
# RW domain controller
${IF_RWDC}A ${DNSDOMAIN} $IP
${IF_RWDC}AAAA ${DNSDOMAIN} $IP
${IF_RWDC}SRV _ldap._tcp.${DNSDOMAIN} ${HOSTNAME} 389
${IF_RWDC}SRV _ldap._tcp.dc._msdcs.${DNSDOMAIN} ${HOSTNAME} 389
${IF_RWDC}SRV _ldap._tcp.${DOMAINGUID}.domains._msdcs.${DNSFOREST} ${HOSTNAME} 389
${IF_RWDC}SRV _kerberos._tcp.${DNSDOMAIN} ${HOSTNAME} 88
${IF_RWDC}SRV _kerberos._udp.${DNSDOMAIN} ${HOSTNAME} 88
${IF_RWDC}SRV _kerberos._tcp.dc._msdcs.${DNSDOMAIN} ${HOSTNAME} 88
${IF_RWDC}SRV _kpasswd._tcp.${DNSDOMAIN} ${HOSTNAME} 464
${IF_RWDC}SRV _kpasswd._udp.${DNSDOMAIN} ${HOSTNAME} 464
# RW and RO domain controller
${IF_DC}CNAME ${NTDSGUID}._msdcs.${DNSFOREST} ${HOSTNAME}
${IF_DC}SRV _ldap._tcp.${SITE}._sites.${DNSDOMAIN} ${HOSTNAME} 389
${IF_DC}SRV _ldap._tcp.${SITE}._sites.dc._msdcs.${DNSDOMAIN} ${HOSTNAME} 389
${IF_DC}SRV _kerberos._tcp.${SITE}._sites.${DNSDOMAIN} ${HOSTNAME} 88
${IF_DC}SRV _kerberos._tcp.${SITE}._sites.dc._msdcs.${DNSDOMAIN} ${HOSTNAME} 88
# The PDC emulator
${IF_PDC}SRV _ldap._tcp.pdc._msdcs.${DNSDOMAIN} ${HOSTNAME} 389
# RW GC servers
${IF_RWGC}A gc._msdcs.${DNSFOREST} $IP
${IF_RWGC}AAAA gc._msdcs.${DNSFOREST} $IP
${IF_RWGC}SRV _gc._tcp.${DNSFOREST} ${HOSTNAME} 3268
${IF_RWGC}SRV _ldap._tcp.gc._msdcs.${DNSFOREST} ${HOSTNAME} 3268
# RW and RO GC servers
${IF_GC}SRV _gc._tcp.${SITE}._sites.${DNSFOREST} ${HOSTNAME} 3268
${IF_GC}SRV _ldap._tcp.${SITE}._sites.gc._msdcs.${DNSFOREST} ${HOSTNAME} 3268
# RW DNS servers
${IF_RWDNS_DOMAIN}A DomainDnsZones.${DNSDOMAIN} $IP
${IF_RWDNS_DOMAIN}AAAA DomainDnsZones.${DNSDOMAIN} $IP
${IF_RWDNS_DOMAIN}SRV _ldap._tcp.DomainDnsZones.${DNSDOMAIN} ${HOSTNAME} 389
# RW and RO DNS servers
${IF_DNS_DOMAIN}SRV _ldap._tcp.${SITE}._sites.DomainDnsZones.${DNSDOMAIN} ${HOSTNAME} 389
# RW DNS servers
${IF_RWDNS_FOREST}A ForestDnsZones.${DNSFOREST} $IP
${IF_RWDNS_FOREST}AAAA ForestDnsZones.${DNSFOREST} $IP
${IF_RWDNS_FOREST}SRV _ldap._tcp.ForestDnsZones.${DNSFOREST} ${HOSTNAME} 389
# RW and RO DNS servers
${IF_DNS_FOREST}SRV _ldap._tcp.${SITE}._sites.ForestDnsZones.${DNSFOREST} ${HOSTNAME} 389
[root@DC01 ~]#
kerberosのUDP88と、kpasswdのTCP/UDP464、GCのTCP3268を sysconfigなiptablesで修正する。
ここでGCについては全く、それこそ目にした記憶さえなかったのだが「グローバルカタログ」であるらしい。これについてはアットマークITとMSTech-netから。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1177adgc/adgc.html
https://technet.microsoft.com/ja-jp/library/cc730749.aspx
これで、とりあえず7proなクライアントからログインはできた。無論、何らかの支障を認識できていない可能性は多々。
iptables とは別件。
ADログイン後のクライアントからSamba4サーバをDNSとしたインターネットアクセスがNGになった件、
/usr/local/samba/etc/samba/smb.conf
中の dns forwarder 値を修正することで復旧した。
なお、修正した後に
/etc/rc.d/init.d/samba4 restart
をかけずに、少々首をかしげたことも露呈してしまうぜ AWESOME!
Windows 7 Professional においてドメイン参加
・ローカルのAdministrator権限を持つアカウントでログイン
・ADドメインの管理者権限でADドメインに参加
すると、ADの Domain Admins なアカウントがそのまま(別途作業無しに)ローカルの Administrators グループに属する。ドメイン参加(偏向)には管理者権限が必要であってむしろ当然であるので、Domain Admins なアカウントがローカルな管理者権限を持つこともまた然り、ではあるのだが。ま、知らんかったもんは知らんかったあぁ痛ぇ。
というわけで、Samba AD側で管理者権限を持たないユーザを作ってテストしないと。
---> リモートサーバ管理ツールをとっとと使えるように学べと。
途中で放り出したので築城、いや、追記。
実利用に沿って試してみる。
・ドメインユーザでローカルAdminでないアカウントをひとつ作ってみる。
・ドメインにログインするのみの状況でローカルのリソースに対する制約を調べる。
姓(L): Domain User Not Local AdminもじってDunlap
名(F): Bridget
パスワード: DNAEarth-1
とりあえずやってみる。
まずログオンにえらい時間がかかる。あまりに時間がかかるので、Samba側でiptableを外してみたところ、ほどなくWindowsクライアントでデスクトップの準備が始まったので、依然としてiptableの設定が不十分かもしれない。これは、Sambaとクライアント間にパケットキャプチャを突っ込まないと挙動を把握できない(*後日追記)。別途作業。
ドメインユーザはローカルAdmin権限を得られず、システムフォルダや、ユーザ以下の他ユーザフォルダにアクセスするにはローカルの認証が必要。ただし、ドライブ直下に作った任意のフォルダはアクセス可能。今回たまたま、c:\にソフトウェア倉庫のフォルダを作っていたがここへのアクセスは可能だった。また、Adobeのフォルダを削除してみたところ、削除も可能だった。 また、c:\にフォルダの作成は可能だしファイルも作成可能。
他方、program files や windows 以下の多くのフォルダは読み取り可能だが、当然 書き込み変更は不可。
ということで、ファイル管理について基本的な機能は、ドメインユーザを作成する以外にわざわざ準備する労務は必要ない。あくまで基本的な機能だけだが。
いや、チョージョーシキなのかもしれないが、かつてADに初めて触れた当時に、素直で従順に学んでさえいれば、こんな苦労を今さらには。ま、だから今ハンセイしているのだが。おサルの次郎君にも著しく劣ることは言うまでもない。
次に、切り分けのためにもうひとつアカウントを作る。そういえば、先ほどアカウントを作った際にiptableは問題にならなかったと思われるので、iptableに問題があるなら最初のログオン時点のそれ…なんにせよ要調査。
ともあれ。
姓(L): Almeyda
名(F): Tony
パスワード: EcosES31
初回ログイン時に時間を要する現象は発生しなかった。やはりiptablesか。それから、アプリケーションのインストールはもとより、ネットワーク探索の有効化でも管理者アカウントを要求された。なるほど、これら点でも運用上の心配は無用のようだ。
って初歩の初歩やーーー!!でも初歩を越さずに運用もエキスパートもあるかい AWESOME!
嘆きはさておき。次にSamba上のファイル共有の手順と労務の確認。
追記:
iptablesを外さずとも、約1分ほどかかってログインできた。トラフィックについてはまだ取ったばかりで詳しく見ていないが、iptables が start / stop では相応に差異があるようだ。ぱっと目に付くのは、iptables が有効である際に クライアントからADDCに向けてTCPポート1024のSYNを発して直後に ICMP profibit が返っていること。iptables で開けていないので当然なのだが、なんにせよ詳しく見る必要がある。
・ADドメインの管理者権限でADドメインに参加
すると、ADの Domain Admins なアカウントがそのまま(別途作業無しに)ローカルの Administrators グループに属する。ドメイン参加(偏向)には管理者権限が必要であってむしろ当然であるので、Domain Admins なアカウントがローカルな管理者権限を持つこともまた然り、ではあるのだが。ま、知らんかったもんは知らんかったあぁ痛ぇ。
というわけで、Samba AD側で管理者権限を持たないユーザを作ってテストしないと。
---> リモートサーバ管理ツールをとっとと使えるように学べと。
途中で放り出したので築城、いや、追記。
実利用に沿って試してみる。
・ドメインユーザでローカルAdminでないアカウントをひとつ作ってみる。
・ドメインにログインするのみの状況でローカルのリソースに対する制約を調べる。
姓(L): Domain User Not Local AdminもじってDunlap
名(F): Bridget
パスワード: DNAEarth-1
とりあえずやってみる。
まずログオンにえらい時間がかかる。あまりに時間がかかるので、Samba側でiptableを外してみたところ、ほどなくWindowsクライアントでデスクトップの準備が始まったので、依然としてiptableの設定が不十分かもしれない。これは、Sambaとクライアント間にパケットキャプチャを突っ込まないと挙動を把握できない(*後日追記)。別途作業。
ドメインユーザはローカルAdmin権限を得られず、システムフォルダや、ユーザ以下の他ユーザフォルダにアクセスするにはローカルの認証が必要。ただし、ドライブ直下に作った任意のフォルダはアクセス可能。今回たまたま、c:\にソフトウェア倉庫のフォルダを作っていたがここへのアクセスは可能だった。また、Adobeのフォルダを削除してみたところ、削除も可能だった。 また、c:\にフォルダの作成は可能だしファイルも作成可能。
他方、program files や windows 以下の多くのフォルダは読み取り可能だが、当然 書き込み変更は不可。
ということで、ファイル管理について基本的な機能は、ドメインユーザを作成する以外にわざわざ準備する労務は必要ない。あくまで基本的な機能だけだが。
いや、チョージョーシキなのかもしれないが、かつてADに初めて触れた当時に、素直で従順に学んでさえいれば、こんな苦労を今さらには。ま、だから今ハンセイしているのだが。おサルの次郎君にも著しく劣ることは言うまでもない。
次に、切り分けのためにもうひとつアカウントを作る。そういえば、先ほどアカウントを作った際にiptableは問題にならなかったと思われるので、iptableに問題があるなら最初のログオン時点のそれ…なんにせよ要調査。
ともあれ。
姓(L): Almeyda
名(F): Tony
パスワード: EcosES31
初回ログイン時に時間を要する現象は発生しなかった。やはりiptablesか。それから、アプリケーションのインストールはもとより、ネットワーク探索の有効化でも管理者アカウントを要求された。なるほど、これら点でも運用上の心配は無用のようだ。
って初歩の初歩やーーー!!でも初歩を越さずに運用もエキスパートもあるかい AWESOME!
嘆きはさておき。次にSamba上のファイル共有の手順と労務の確認。
追記:
iptablesを外さずとも、約1分ほどかかってログインできた。トラフィックについてはまだ取ったばかりで詳しく見ていないが、iptables が start / stop では相応に差異があるようだ。ぱっと目に付くのは、iptables が有効である際に クライアントからADDCに向けてTCPポート1024のSYNを発して直後に ICMP profibit が返っていること。iptables で開けていないので当然なのだが、なんにせよ詳しく見る必要がある。
リモートサーバ管理ツールの導入エラー
Windows Update スタンドアロンインストーラ
インストーラはエラーを検出しました: 0x80096002
メッセージの署名者の証明書が無効であるか、または見つかりません。
何のことはない、Windows7のツールを、8.1に突っ込もうとしていただけだった。一般のアプリケーションではないので、7で動くものが大概8でも10でも動く、というわけではない。当たり前のことだが、バカ過ぎて気付いていなかった。
バカさ加減はさらに続き、Win7向け がNGなら 8.1向けダウンロードし直さないと! などと足りない知恵がほんのちょっとしか動かず
Windows 8.1 (Home) に対して
ドメインほかサーバ管理ツールのインストール
を試みてNGをくらってから愚かさに気付くという...
おかげで.msu ファイルという存在と概念の触りだけ知ったぜAWESOME!
インストーラはエラーを検出しました: 0x80096002
メッセージの署名者の証明書が無効であるか、または見つかりません。
何のことはない、Windows7のツールを、8.1に突っ込もうとしていただけだった。一般のアプリケーションではないので、7で動くものが大概8でも10でも動く、というわけではない。当たり前のことだが、バカ過ぎて気付いていなかった。
バカさ加減はさらに続き、Win7向け がNGなら 8.1向けダウンロードし直さないと! などと足りない知恵がほんのちょっとしか動かず
Windows 8.1 (Home) に対して
ドメインほかサーバ管理ツールのインストール
を試みてNGをくらってから愚かさに気付くという...
おかげで.msu ファイルという存在と概念の触りだけ知ったぜAWESOME!
2016年2月22日月曜日
32bit環境にSamba ADは導入可能か?
今後 32bit CPU などアリエナイ上に、現行でも滅びつつある中では全く不毛な話。ではあるのだが、テスト機材の都合でここでは必要。
・リポジトリ指定なしに CentOS 6.7 に yum で導入(4.0.-)はNG
・4.2.8をダウンロードしてコンパイルは可
とりあえず設定を進めてみる。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: Samba4-AD.LOCAL
Domain [Samba4-AD]:
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) [127.0.0.1]:
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
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=samba4-ad,DC=local
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=samba4-ad,DC=local
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 /usr/local/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: DC01
NetBIOS Domain: SAMBA4-AD
DNS Domain: samba4-ad.local
DOMAIN SID: S-1-5-21-98334141-1155700478-3900901028
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# chmod 755 /etc/rc.d/init.d/samba4
[root@DC01 ~]# chmod +x /etc/rc.d/init.d/samba4
[root@DC01 ~]# ln -s /etc/rc.d/init.d/samba4 /etc/rc3.d/S80samba4
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# chkconfig samba4 on && systemctl start samba4
-bash: systemctl: コマンドが見つかりません
[root@DC01 ~]#
CentOS 6.7 なので systemctl は無い。
[root@DC01 ~]# chkconfig samba4 on
[root@DC01 ~]#
[root@DC01 ~]# /etc/rc.d/init.d/samba4 restart
/etc/rc.d/init.d/samba4: line 1: amba4: コマンドが見つかりません
Shutting down samba4: [失敗]
Starting samba4: [ OK ]
[root@DC01 ~]#
init.d ディレクトリ下の samba4 の 1行目 で誤記述に確認漏れ。幸い設定に影響はないが修正、
[root@DC01 ~]# vi /etc/rc.d/init.d/samba4
# Samba4 This shell script takes care of starting and stopping
# samba4 daemons.
#
# chkconfig: - 58 74
# description: Samba 4.0 will be the next version of the Samba suite
# and incorporates all the technology found in both the Samba4 alpha
# series and the stable 3.x series. The primary additional features
# over Samba 3.6 are support for the Active Directory logon protocols
# used by Windows 2000 and above.
### BEGIN INIT INFO
# Provides: samba4
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $syslog $named
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
prog=samba
prog_dir=/usr/local/samba/sbin/
lockfile=/var/lock/subsys/$prog
start() {
[ "$NETWORKING" = "no" ] && exit 1
# [ -x /usr/sbin/ntpd ] || exit 5
# Start daemons.
echo -n $"Starting samba4: "
daemon $prog_dir/$prog -D
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $lockfile
return $RETVAL
}
stop() {
[ "$EUID" != "0" ] && exit 4
echo -n $"Shutting down samba4: "
killproc $prog_dir/$prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $lockfile
return $RETVAL
}
DOMAIN SID: S-1-5-21-98334141-1155700478-3900901028
[root@DC01 ~]#
属性ももう一度変更。
[root@DC01 ~]# chmod 755 /etc/rc.d/init.d/samba4
[root@DC01 ~]# chmod +x /etc/rc.d/init.d/samba4
[root@DC01 ~]# ln -s /etc/rc.d/init.d/samba4 /etc/rc3.d/S80samba4
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# chkconfig samba4 on && systemctl start samba4
-bash: systemctl: コマンドが見つかりません
[root@DC01 ~]#
コピペ脳の愚行、まさに愚か。
[root@DC01 ~]# chkconfig samba4 on
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# /etc/rc.d/init.d/samba4 restart
/etc/rc.d/init.d/samba4: line 1: amba4: コマンドが見つかりません
Shutting down samba4: [失敗]
Starting samba4: [ OK ]
[root@DC01 ~]#
[root@DC01 ~]#
DNSの設定。これに先立ち、resolv.conf へもループバックの記述が必要。
[root@DC01 ~]# sed -i "/^DNS1/cDNS1=127.0.0.1" /etc/sysconfig/network-scripts/ifcfg-*
[root@DC01 ~]#
DNS設定後のネットワーク機能リスタート。
[root@DC01 ~]# /etc/rc.d/init.d/network restart
インターフェース eth0 を終了中: デバイスの状態: 3 (切断済み)
[ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中: アクティブ接続の状態: アクティベート済み
アクティブ接続のパス: /org/freedesktop/NetworkManager/ActiveConnection/1
[ OK ]
[root@DC01 ~]#
[root@DC01 ~]#
DNSの動作確認だが、またやらかす。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Password for [SAMBA4-AD\Administrator]:
2 zone(s) found
pszZoneName : samba4-ad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : DomainDnsZones.samba4-ad.local
pszZoneName : _msdcs.samba4-ad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : ForestDnsZones.samba4-ad.local
[root@DC01 ~]#
これはOKだが、次に目先も見てないコピペ脳炸裂。
[root@DC01 ~]# host -t SRV _ldap._tcp.レルム名 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.レルム名 has no SRV record
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t SRV _kerberos._udp.レルム名 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.レルム名 has no SRV record
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t A dc.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
Host dc.samba4-ad.local not found: 3(NXDOMAIN)
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t SRV _ldap._tcp.samba4-ad 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.samba4-ad has no SRV record
[root@DC01 ~]# host -t SRV _kerberos._udp.samba4-ad 127.0.0.1
host: '_kerberos._udp..samba4-ad' is not a legal name (unexpected end of input)
[root@DC01 ~]# host -t SRV _kerberos._udp.Samba4-AD 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.Samba4-AD has no SRV record
[root@DC01 ~]#
やり直し。
[root@DC01 ~]# host -t SRV _ldap._tcp.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.samba4-ad.local has SRV record 0 100 389 dc01.samba4-ad.local.
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t SRV _kerveros._udp.samba4-ad 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerveros._udp.samba4-ad has no SRV record
[root@DC01 ~]#
[root@DC01 ~]# host -t SRV _kerberos._udp.samba4-ad 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.samba4-ad has no SRV record
[root@DC01 ~]# host -t SRV _kerberos._udp.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.samba4-ad.local has SRV record 0 100 88 dc01.samba4-ad.local.
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t A dc.samba4-ad 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
dc.samba4-ad has no A record
[root@DC01 ~]# host -t A dc.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
Host dc.samba4-ad.local not found: 3(NXDOMAIN)
[root@DC01 ~]# host -t A dc01.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
dc01.samba4-ad.local has address 172.19.19.10
[root@DC01 ~]#
誤読、誤記述くりかえしつつ、一応設定が通ったように見える。この時点で、iptables について全く考慮がまわっていなかったので当然、Windowsクライアントのドメイン変更(以前のテストドメインから新しテストドメイン)がNG。
/etc/sysconfig/iptable
を編集。編集して
/etc/rc.d/init.d/iptables
を再起動の繰り返し。なぜ何度も繰り返したかというと
・思考及ばず全く何もしない状態
・DNSとSMBを通す
・LDAPを通す
・LDAPの設定を間違える
・Kerberosが漏れていることに気付く
という繰り返し。実際にどのポートが必要かというと、MicrosoftとSamba Wikiから。
Active Directory and Active Directory Domain Services Port Requirements
https://technet.microsoft.com/en-us/library/dd772723%28WS.10%29.aspx
Samba port usage
https://wiki.samba.org/index.php/Samba_port_usage
とりあえず、hogehogeドメインへようこそ、までは辿り着いた。しかし、実際にドメインログオンは、iptablesを外さないとうまくいかない。と言っても、本当に必要なポートだけをひとつずつ開けているので、まだ詳細が特定できていないというだけのことだ。
どうやら、ワークPCから VirtualBox(CentOS+Samba)を撤去できそうだぜ AWESOME!
追記:
Samba について iptables な設定については後日別エントリにて。
・リポジトリ指定なしに CentOS 6.7 に yum で導入(4.0.-)はNG
・4.2.8をダウンロードしてコンパイルは可
とりあえず設定を進めてみる。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: Samba4-AD.LOCAL
Domain [Samba4-AD]:
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) [127.0.0.1]:
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
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=samba4-ad,DC=local
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=samba4-ad,DC=local
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 /usr/local/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: DC01
NetBIOS Domain: SAMBA4-AD
DNS Domain: samba4-ad.local
DOMAIN SID: S-1-5-21-98334141-1155700478-3900901028
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# chmod 755 /etc/rc.d/init.d/samba4
[root@DC01 ~]# chmod +x /etc/rc.d/init.d/samba4
[root@DC01 ~]# ln -s /etc/rc.d/init.d/samba4 /etc/rc3.d/S80samba4
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# chkconfig samba4 on && systemctl start samba4
-bash: systemctl: コマンドが見つかりません
[root@DC01 ~]#
CentOS 6.7 なので systemctl は無い。
[root@DC01 ~]# chkconfig samba4 on
[root@DC01 ~]#
[root@DC01 ~]# /etc/rc.d/init.d/samba4 restart
/etc/rc.d/init.d/samba4: line 1: amba4: コマンドが見つかりません
Shutting down samba4: [失敗]
Starting samba4: [ OK ]
[root@DC01 ~]#
init.d ディレクトリ下の samba4 の 1行目 で誤記述に確認漏れ。幸い設定に影響はないが修正、
[root@DC01 ~]# vi /etc/rc.d/init.d/samba4
# Samba4 This shell script takes care of starting and stopping
# samba4 daemons.
#
# chkconfig: - 58 74
# description: Samba 4.0 will be the next version of the Samba suite
# and incorporates all the technology found in both the Samba4 alpha
# series and the stable 3.x series. The primary additional features
# over Samba 3.6 are support for the Active Directory logon protocols
# used by Windows 2000 and above.
### BEGIN INIT INFO
# Provides: samba4
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $syslog $named
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
prog=samba
prog_dir=/usr/local/samba/sbin/
lockfile=/var/lock/subsys/$prog
start() {
[ "$NETWORKING" = "no" ] && exit 1
# [ -x /usr/sbin/ntpd ] || exit 5
# Start daemons.
echo -n $"Starting samba4: "
daemon $prog_dir/$prog -D
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $lockfile
return $RETVAL
}
stop() {
[ "$EUID" != "0" ] && exit 4
echo -n $"Shutting down samba4: "
killproc $prog_dir/$prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $lockfile
return $RETVAL
}
DOMAIN SID: S-1-5-21-98334141-1155700478-3900901028
[root@DC01 ~]#
属性ももう一度変更。
[root@DC01 ~]# chmod 755 /etc/rc.d/init.d/samba4
[root@DC01 ~]# chmod +x /etc/rc.d/init.d/samba4
[root@DC01 ~]# ln -s /etc/rc.d/init.d/samba4 /etc/rc3.d/S80samba4
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# chkconfig samba4 on && systemctl start samba4
-bash: systemctl: コマンドが見つかりません
[root@DC01 ~]#
コピペ脳の愚行、まさに愚か。
[root@DC01 ~]# chkconfig samba4 on
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# /etc/rc.d/init.d/samba4 restart
/etc/rc.d/init.d/samba4: line 1: amba4: コマンドが見つかりません
Shutting down samba4: [失敗]
Starting samba4: [ OK ]
[root@DC01 ~]#
[root@DC01 ~]#
DNSの設定。これに先立ち、resolv.conf へもループバックの記述が必要。
[root@DC01 ~]# sed -i "/^DNS1/cDNS1=127.0.0.1" /etc/sysconfig/network-scripts/ifcfg-*
[root@DC01 ~]#
DNS設定後のネットワーク機能リスタート。
[root@DC01 ~]# /etc/rc.d/init.d/network restart
インターフェース eth0 を終了中: デバイスの状態: 3 (切断済み)
[ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中: アクティブ接続の状態: アクティベート済み
アクティブ接続のパス: /org/freedesktop/NetworkManager/ActiveConnection/1
[ OK ]
[root@DC01 ~]#
[root@DC01 ~]#
DNSの動作確認だが、またやらかす。
[root@DC01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Password for [SAMBA4-AD\Administrator]:
2 zone(s) found
pszZoneName : samba4-ad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : DomainDnsZones.samba4-ad.local
pszZoneName : _msdcs.samba4-ad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : ForestDnsZones.samba4-ad.local
[root@DC01 ~]#
これはOKだが、次に目先も見てないコピペ脳炸裂。
[root@DC01 ~]# host -t SRV _ldap._tcp.レルム名 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.レルム名 has no SRV record
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t SRV _kerberos._udp.レルム名 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.レルム名 has no SRV record
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t A dc.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
Host dc.samba4-ad.local not found: 3(NXDOMAIN)
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t SRV _ldap._tcp.samba4-ad 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.samba4-ad has no SRV record
[root@DC01 ~]# host -t SRV _kerberos._udp.samba4-ad 127.0.0.1
host: '_kerberos._udp..samba4-ad' is not a legal name (unexpected end of input)
[root@DC01 ~]# host -t SRV _kerberos._udp.Samba4-AD 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.Samba4-AD has no SRV record
[root@DC01 ~]#
やり直し。
[root@DC01 ~]# host -t SRV _ldap._tcp.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.samba4-ad.local has SRV record 0 100 389 dc01.samba4-ad.local.
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t SRV _kerveros._udp.samba4-ad 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerveros._udp.samba4-ad has no SRV record
[root@DC01 ~]#
[root@DC01 ~]# host -t SRV _kerberos._udp.samba4-ad 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.samba4-ad has no SRV record
[root@DC01 ~]# host -t SRV _kerberos._udp.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.samba4-ad.local has SRV record 0 100 88 dc01.samba4-ad.local.
[root@DC01 ~]#
[root@DC01 ~]#
[root@DC01 ~]# host -t A dc.samba4-ad 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
dc.samba4-ad has no A record
[root@DC01 ~]# host -t A dc.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
Host dc.samba4-ad.local not found: 3(NXDOMAIN)
[root@DC01 ~]# host -t A dc01.samba4-ad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
dc01.samba4-ad.local has address 172.19.19.10
[root@DC01 ~]#
誤読、誤記述くりかえしつつ、一応設定が通ったように見える。この時点で、iptables について全く考慮がまわっていなかったので当然、Windowsクライアントのドメイン変更(以前のテストドメインから新しテストドメイン)がNG。
/etc/sysconfig/iptable
を編集。編集して
/etc/rc.d/init.d/iptables
を再起動の繰り返し。なぜ何度も繰り返したかというと
・思考及ばず全く何もしない状態
・DNSとSMBを通す
・LDAPを通す
・LDAPの設定を間違える
・Kerberosが漏れていることに気付く
という繰り返し。実際にどのポートが必要かというと、MicrosoftとSamba Wikiから。
Active Directory and Active Directory Domain Services Port Requirements
https://technet.microsoft.com/en-us/library/dd772723%28WS.10%29.aspx
Samba port usage
https://wiki.samba.org/index.php/Samba_port_usage
とりあえず、hogehogeドメインへようこそ、までは辿り着いた。しかし、実際にドメインログオンは、iptablesを外さないとうまくいかない。と言っても、本当に必要なポートだけをひとつずつ開けているので、まだ詳細が特定できていないというだけのことだ。
どうやら、ワークPCから VirtualBox(CentOS+Samba)を撤去できそうだぜ AWESOME!
追記:
Samba について iptables な設定については後日別エントリにて。
2016年2月20日土曜日
Remote Server Administration Tools for Windows 7 with SP1
今回の作業についてはこちら様のWebコンテンツを閲覧させていただいて。
俺的備忘録さんから、CentOS 7とSamba4で自宅用Active Directory Domain Controller (AD DC)を構築する② リモートサーバ管理ツールの導入。
と、Sambaの話の前に。
ダウンロードした管理ツールを別PCにコピーしようとした際に、Windows PC間のファイル転送に見られた SMB2 WSP とのプロトコル。
Technetで探したところ、どうもこれのようだ。
[MS-WSP]: Windows Search Protocol
https://msdn.microsoft.com/en-us/library/cc251767.aspx
興味深いが優先順位は上げられないので後日。
次に、Remote Server Administration Tools for Windows 7 with Service Pack 1 (SP1)をインストールしようとしたところ、KB968830 の要求が。何の修正かわからないので一応メモ。そしてインストール作業を継続すると・・・
Windows Update の仕様と思しき、いつ終わるとも知れぬ待ち時間が発生。"管理ツールのインストールそのもの" が始まらない。
待ち時間にやることはいくらでもあるぜ AWESOME!
と、これを書き終わったあたりで更新プログラム(管理ツールでない)のインストールが始まった。あるいはひょっとして、再び、数時間ヘタすりゃ日中まるまる過ぎて夜になっても終わってない、というような惨事が降ってきたらどうしようかと思った。が、 WindowsUpdateも最新に近い状態まで更新して以降ならば、数分単位程度で済むようだ。とはいえ、インストールが始まってからも相応に時間を要するが。
ここで、Samba というより Windows の作法の話。Windowsの世界の掟は駆け出しのころに少し触れただけでもうすっかり忘れ去っていたが、ローカルアカウントとドメインアカウントは別物なので、導入時の労務を考えなくてはならない。労務はさておき、この管理ツールも当初ローカルアカウントでインストールしてしまい、ドメインアカウントで再度インストールな二度手間になってしまった。ローカルアカウントは、初期設置用とモバイルユーザ用の2つとし、他はドメインアカウントで作業しなくてはならない。
Windows7で管理ツールをスタートメニューに
https://technet.microsoft.com/ja-jp/windows/win7_tips44.aspx
俺的備忘録さんから、CentOS 7とSamba4で自宅用Active Directory Domain Controller (AD DC)を構築する② リモートサーバ管理ツールの導入。
と、Sambaの話の前に。
ダウンロードした管理ツールを別PCにコピーしようとした際に、Windows PC間のファイル転送に見られた SMB2 WSP とのプロトコル。
Technetで探したところ、どうもこれのようだ。
[MS-WSP]: Windows Search Protocol
https://msdn.microsoft.com/en-us/library/cc251767.aspx
興味深いが優先順位は上げられないので後日。
次に、Remote Server Administration Tools for Windows 7 with Service Pack 1 (SP1)をインストールしようとしたところ、KB968830 の要求が。何の修正かわからないので一応メモ。そしてインストール作業を継続すると・・・
Windows Update の仕様と思しき、いつ終わるとも知れぬ待ち時間が発生。"管理ツールのインストールそのもの" が始まらない。
待ち時間にやることはいくらでもあるぜ AWESOME!
と、これを書き終わったあたりで更新プログラム(管理ツールでない)のインストールが始まった。あるいはひょっとして、再び、数時間ヘタすりゃ日中まるまる過ぎて夜になっても終わってない、というような惨事が降ってきたらどうしようかと思った。が、 WindowsUpdateも最新に近い状態まで更新して以降ならば、数分単位程度で済むようだ。とはいえ、インストールが始まってからも相応に時間を要するが。
ここで、Samba というより Windows の作法の話。Windowsの世界の掟は駆け出しのころに少し触れただけでもうすっかり忘れ去っていたが、ローカルアカウントとドメインアカウントは別物なので、導入時の労務を考えなくてはならない。労務はさておき、この管理ツールも当初ローカルアカウントでインストールしてしまい、ドメインアカウントで再度インストールな二度手間になってしまった。ローカルアカウントは、初期設置用とモバイルユーザ用の2つとし、他はドメインアカウントで作業しなくてはならない。
Windows7で管理ツールをスタートメニューに
https://technet.microsoft.com/ja-jp/windows/win7_tips44.aspx
某オフィスでの「しくみ」検討
オフィスと呼ぶほどの規模でもないし、インフラと呼ぶにもあまりに細やかなので「しくみ」で。
検討の前に何より。諸先人の皆様のおかげで、Samba4 の AD にたった1台のPCを参加させる段にようやく至った。また、Samba4 AD にログインできる状態のPCがそのままインターネットアクセスできることを知った。これで
・PCの認証
・ユーザーの認証
・ファイルサーバ
・DNS
は、VirtualBox上の CentOS7 1台でとりあえず。プリンターサーバも追ってそのうち。とりあえずLinux向けドライバが存在することは間違いないのでどうにか。とはいえ「しくみ」程度の小規模ならば直接ネットワークプリンタ利用で十分。
それから、DHCPはCiscoルータ、ファイアウォールは…Linuxに機能を持たせたい願望はあるがそもそも全く知らないので何とも。当面はWANルータのたいへん簡素な機能で。
会計システムは、先方様がそもそもかつてこの分野の設計開発の方だったのでおまかせ。
Webは既に、簡易なものは先方様がお持ちで、メールも当面は従来のサービスを継続。今さらオンプレミスに? これを言ったらファイルサーバを持つ必要さえ無いのだが。
業務システムはWebベースで Apatch+Maria で私が・・・先は長いが時間はない。スケジュールが濃厚だぜ AWESOME!!(Neil Pasricha 氏ふう)
検討の前に何より。諸先人の皆様のおかげで、Samba4 の AD にたった1台のPCを参加させる段にようやく至った。また、Samba4 AD にログインできる状態のPCがそのままインターネットアクセスできることを知った。これで
・PCの認証
・ユーザーの認証
・ファイルサーバ
・DNS
は、VirtualBox上の CentOS7 1台でとりあえず。プリンターサーバも追ってそのうち。とりあえずLinux向けドライバが存在することは間違いないのでどうにか。とはいえ「しくみ」程度の小規模ならば直接ネットワークプリンタ利用で十分。
それから、DHCPはCiscoルータ、ファイアウォールは…Linuxに機能を持たせたい願望はあるがそもそも全く知らないので何とも。当面はWANルータのたいへん簡素な機能で。
会計システムは、先方様がそもそもかつてこの分野の設計開発の方だったのでおまかせ。
Webは既に、簡易なものは先方様がお持ちで、メールも当面は従来のサービスを継続。今さらオンプレミスに? これを言ったらファイルサーバを持つ必要さえ無いのだが。
業務システムはWebベースで Apatch+Maria で私が・・・先は長いが時間はない。スケジュールが濃厚だぜ AWESOME!!(Neil Pasricha 氏ふう)
2016年2月19日金曜日
Samba AD で今度はケルベロスな誤設定
ソフトウェアそのもの問題でなく、導入における個別の作業漏れあるいはミスに起因するであろうハナシ。
Samba AD の基本的な導入と初期設定の後、Windowsクライアントからドメイン参加を試みたところこのエラー。Kerberosを全くわかっちゃいないし、そもそも、このエラーにおける "プリンシパル" とは何か? の時点で
「えっ、あの、スポーツのチームとか組織の代表のことじゃないの!?」
程度のしょぼい誤認識しか無く、辞書を引いたら語源はバレエとか。
こんなザマなので、エラーコードをそのままに検索したところこんなコンテンツが。
https://www.ipa.go.jp/security/rfc/RFC1510-07JA.html
新しい扉をひとつまた開いた!開いても難題を垣間見たに過ぎないけど、見えないよりはずっと進歩だぜAWESOME! (Neil Pasricha 氏ふう)
追記:
もう半歩先に進んだところ、TivoliのドキュメントからKerberosの概要が。
http://publib.boulder.ibm.com/tividd/td/framework/SC32-0806-00/ja_JA/HTML/ref29.htm
Samba AD の基本的な導入と初期設定の後、Windowsクライアントからドメイン参加を試みたところこのエラー。Kerberosを全くわかっちゃいないし、そもそも、このエラーにおける "プリンシパル" とは何か? の時点で
「えっ、あの、スポーツのチームとか組織の代表のことじゃないの!?」
程度のしょぼい誤認識しか無く、辞書を引いたら語源はバレエとか。
こんなザマなので、エラーコードをそのままに検索したところこんなコンテンツが。
https://www.ipa.go.jp/security/rfc/RFC1510-07JA.html
新しい扉をひとつまた開いた!開いても難題を垣間見たに過ぎないけど、見えないよりはずっと進歩だぜAWESOME! (Neil Pasricha 氏ふう)
追記:
もう半歩先に進んだところ、TivoliのドキュメントからKerberosの概要が。
http://publib.boulder.ibm.com/tividd/td/framework/SC32-0806-00/ja_JA/HTML/ref29.htm
2016年2月17日水曜日
ERROR(大なることclass 'samba.provision. ProvisioningError'小なること):
一難越えてまた越える、かな。Windowsドメインプロビジョニングな最初のエラー。
ERROR(<class 'samba.provision.ProvisioningError'>):
Provision failed - ProvisioningError: guess_names: 'realm=TESTD.LOCAL' in /usr/local/samba/etc/smb.conf must match chosen realm 'TESTAD.LOCAL'!
Please remove the smb.conf file and let provision generate it File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 434, in run nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2022, in provision sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill
== FILL_DRS))
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 606, in guess_names raise ProvisioningError("guess_names: 'realm=%s' in %s must match
chosen realm '%s'! Please remove the smb.conf file and let provision generate it" % (lp.get("realm").upper(), lp.configfile, realm)
[root@dctest01 ~]# more /usr/local/samba/etc/smb.conf# Global parameters
[global]
workgroup = TESTD
realm = TESTD.LOCAL
netbios name = DCTEST01
server role = active directory domain controller
dns forwarder = (外部DNSグローバル)
idmap_ldb:use rfc2307 = yes
[netlogon]
path = /usr/local/samba/var/locks/sysvol/testd.local/scripts
read only = No
[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No
[root@dctest01 ~]# vi /usr/local/samba/etc/smb.conf
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: TESTAD.LOCAL
Domain [TESTAD]:
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) [(外部DNSグローバル)]:
Administrator password:
Retype password:
ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: Workgroup 'TESTD' in smb.conf must match chosen domain 'TESTAD'! Please remove the /usr/local/samba/etc/smb.conf file and let provision generate it
File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 434, in run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2022, in provision
sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill == FILL_DRS))
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 618, in guess_names
raise ProvisioningError("guess_names: Workgroup '%s' in smb.conf must match chosen domain '%s'! Please remove the %s file and let provision generate it" % (lp.get("workgroup").upper(), domain, lp.configfile))
[root@dctest01 ~]# rm /usr/local/samba/etc/smb.confrm: remove regular file ‘/usr/local/samba/etc/smb.conf’?
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: TESTAD.LOCAL
Domain [TESTAD]:
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) [(外部DNSグローバル)]:
Administrator password:
Retype password:
ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: Workgroup 'TESTD' in smb.conf must match chosen domain 'TESTAD'! Please remove the /usr/local/samba/etc/smb.conf file and let provision generate it
File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 434, in run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2022, in provision
sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill == FILL_DRS))
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 618, in guess_names
raise ProvisioningError("guess_names: Workgroup '%s' in smb.conf must match chosen domain '%s'! Please remove the %s file and let provision generate it" % (lp.get("workgroup").upper(), domain, lp.configfile))
[root@dctest01 ~]# more /usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py
# Unix SMB/CIFS implementation.
# backend code for provisioning a Samba4 server
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2012
# Copyright (C) Andrew Bartlett <abartlet@samba.org> 2008-2009
# Copyright (C) Oliver Liebel <oliver@itc.li> 2008-2009
#
# Based on the original in EJS:
# Copyright (C) Andrew Tridgell <tridge@samba.org> 2005
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
"""Functions for setting up a Samba configuration."""
__docformat__ = "restructuredText"
from base64 import b64encode
import os
import re
import pwd
import grp
import logging
import time
import uuid
import socket
import urllib
import string
import tempfile
import ldb
from samba.auth import system_session, admin_session
import samba
from samba.samba3 import smbd, passdb
from samba.samba3 import param as s3param
from samba.dsdb import DS_DOMAIN_FUNCTION_2000
from samba import (
Ldb,
MAX_NETBIOS_NAME_LEN,
check_all_substituted,
is_valid_netbios_char,
setup_file,
substitute_var,
valid_netbios_name,
version,
)
from samba.dcerpc import security, misc
from samba.dcerpc.misc import (
SEC_CHAN_BDC,
SEC_CHAN_WKSTA,
)
from samba.dsdb import (
DS_DOMAIN_FUNCTION_2003,
DS_DOMAIN_FUNCTION_2008_R2,
ENC_ALL_TYPES,
)
from samba.idmap import IDmapDB
from samba.ms_display_specifiers import read_ms_ldif
from samba.ntacls import setntacl, getntacl, dsacl2fsacl
from samba.ndr import ndr_pack, ndr_unpack
from samba.provision.backend import (
ExistingBackend,
FDSBackend,
LDBBackend,
OpenLDAPBackend,
)
from samba.descriptor import (
get_empty_descriptor,
get_config_descriptor,
get_config_partitions_descriptor,
get_config_sites_descriptor,
get_config_ntds_quotas_descriptor,
get_config_delete_protected1_descriptor,
get_config_delete_protected1wd_descriptor,
get_config_delete_protected2_descriptor,
get_domain_descriptor,
get_domain_infrastructure_descriptor,
get_domain_builtin_descriptor,
get_domain_computers_descriptor,
get_domain_users_descriptor,
get_domain_controllers_descriptor,
get_domain_delete_protected1_descriptor,
get_domain_delete_protected2_descriptor,
get_dns_partition_descriptor,
get_dns_forest_microsoft_dns_descriptor,
get_dns_domain_microsoft_dns_descriptor,
)
from samba.provision.common import (
setup_path,
setup_add_ldif,
setup_modify_ldif,
FILL_FULL,
FILL_SUBDOMAIN,
FILL_NT4SYNC,
FILL_DRS
)
from samba.provision.sambadns import (
get_dnsadmins_sid,
setup_ad_dns,
create_dns_update_list
)
import samba.param
import samba.registry
from samba.schema import Schema
from samba.samdb import SamDB
from samba.dbchecker import dbcheck
DEFAULT_POLICY_GUID = "31B2F340-016D-11D2-945F-00C04FB984F9"
DEFAULT_DC_POLICY_GUID = "6AC1786C-016F-11D2-945F-00C04fB984F9"
DEFAULTSITE = "Default-First-Site-Name"
LAST_PROVISION_USN_ATTRIBUTE = "lastProvisionUSN"
class ProvisionPaths(object):
def __init__(self):
self.shareconf = None
self.hklm = None
self.hkcu = None
self.hkcr = None
self.hku = None
self.hkpd = None
self.hkpt = None
self.samdb = None
self.idmapdb = None
self.secrets = None
self.keytab = None
self.dns_keytab = None
self.dns = None
self.winsdb = None
self.private_dir = None
self.state_dir = None
class ProvisionNames(object):
def __init__(self):
self.ncs = None
self.rootdn = None
self.domaindn = None
self.configdn = None
self.schemadn = None
self.dnsforestdn = None
self.dnsdomaindn = None
self.ldapmanagerdn = None
self.dnsdomain = None
self.realm = None
self.netbiosname = None
self.domain = None
self.hostname = None
self.sitename = None
self.smbconf = None
self.domainsid = None
self.forestsid = None
self.domainguid = None
self.name_map = {}
def find_provision_key_parameters(samdb, secretsdb, idmapdb, paths, smbconf,
lp):
"""Get key provision parameters (realm, domain, ...) from a given provision
:param samdb: An LDB object connected to the sam.ldb file
:param secretsdb: An LDB object connected to the secrets.ldb file
:param idmapdb: An LDB object connected to the idmap.ldb file
:param paths: A list of path to provision object
:param smbconf: Path to the smb.conf file
:param lp: A LoadParm object
:return: A list of key provision parameters
"""
names = ProvisionNames()
names.adminpass = None
# NT domain, kerberos realm, root dn, domain dn, domain dns name
names.domain = string.upper(lp.get("workgroup"))
names.realm = lp.get("realm")
names.dnsdomain = names.realm.lower()
basedn = samba.dn_from_dns_name(names.dnsdomain)
names.realm = string.upper(names.realm)
# netbiosname
# Get the netbiosname first (could be obtained from smb.conf in theory)
res = secretsdb.search(expression="(flatname=%s)" %
names.domain,base="CN=Primary Domains",
scope=ldb.SCOPE_SUBTREE, attrs=["sAMAccountName"])
names.netbiosname = str(res[0]["sAMAccountName"]).replace("$","")
names.smbconf = smbconf
# That's a bit simplistic but it's ok as long as we have only 3
# partitions
current = samdb.search(expression="(objectClass=*)",
base="", scope=ldb.SCOPE_BASE,
attrs=["defaultNamingContext", "schemaNamingContext",
"configurationNamingContext","rootDomainNamingContext",
"namingContexts"])
names.configdn = current[0]["configurationNamingContext"][0]
names.schemadn = current[0]["schemaNamingContext"][0]
if not (ldb.Dn(samdb, basedn) == (ldb.Dn(samdb,
current[0]["defaultNamingContext"][0]))):
raise ProvisioningError(("basedn in %s (%s) and from %s (%s)"
"is not the same ..." % (paths.samdb,
str(current[0]["defaultNamingContext"][0]),
paths.smbconf, basedn)))
names.domaindn=current[0]["defaultNamingContext"][0]
names.rootdn=current[0]["rootDomainNamingContext"][0]
names.ncs=current[0]["namingContexts"]
names.dnsforestdn = None
names.dnsdomaindn = None
for i in range(0, len(names.ncs)):
nc = names.ncs[i]
dnsforestdn = "DC=ForestDnsZones,%s" % (str(names.rootdn))
if nc == dnsforestdn:
names.dnsforestdn = dnsforestdn
continue
dnsdomaindn = "DC=DomainDnsZones,%s" % (str(names.domaindn))
if nc == dnsdomaindn:
names.dnsdomaindn = dnsdomaindn
continue
# default site name
res3 = samdb.search(expression="(objectClass=site)",
base="CN=Sites," + names.configdn, scope=ldb.SCOPE_ONELEVEL, attrs=["cn"
])
names.sitename = str(res3[0]["cn"])
# dns hostname and server dn
res4 = samdb.search(expression="(CN=%s)" % names.netbiosname,
base="OU=Domain Controllers,%s" % basedn,
scope=ldb.SCOPE_ONELEVEL, attrs=["dNSHostName"])
names.hostname = str(res4[0]["dNSHostName"]).replace("." + names.dnsdomain,
"")
server_res = samdb.search(expression="serverReference=%s" % res4[0].dn,
attrs=[], base=names.configdn)
names.serverdn = str(server_res[0].dn)
# invocation id/objectguid
res5 = samdb.search(expression="(objectClass=*)",
base="CN=NTDS Settings,%s" % str(names.serverdn),
scope=ldb.SCOPE_BASE,
attrs=["invocationID", "objectGUID"])
names.invocation = str(ndr_unpack(misc.GUID, res5[0]["invocationId"][0]))
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# vi /usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: TEST.LOCAL
Domain [TEST]:
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) [(外部DNSグローバル)]:
Administrator password:
Retype password:
ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: 'realm=TESTAD.LOCAL' in /usr/local/samba/etc/smb.conf must match chosen realm 'TEST.LOCAL'! Please remove the smb.conf file and let provision generate it
File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 434, in run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2022, in provision
sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill == FILL_DRS))
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 606, in guess_names
raise ProvisioningError("guess_names: 'realm=%s' in %s must match chosen realm '%s'! Please remove the smb.conf file and let provision generate it" % (lp.get("realm").upper(), lp.configfile, realm))
[root@dctest01 ~]# rm /usr/local/samba/etc/smb.confrm: remove regular file ‘/usr/local/samba/etc/smb.conf’? ^C
[root@dctest01 ~]# vi /usr/local/samba/etc/smb.conf
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: TESTAD.LOCAL
Domain [TESTAD]:
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) [(外部DNSグローバル)]:
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=testad,DC=local
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=testad,DC=local
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 /usr/local/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: dctest01
NetBIOS Domain: TESTAD
DNS Domain: testad.local
DOMAIN SID: S-1-5-21-1668573399-2154983584-2311720169
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# ls /etc/rc.d/init.d/
functions netconsole network README
[root@dctest01 ~]# vi /etc/rc.d/init.d/samba4
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# chmod 755 /etc/rc.d/init.d/samba4
[root@dctest01 ~]# chmod +x /etc/rc.d/init.d/samba4
[root@dctest01 ~]# ln -s /etc/rc.d/init.d/samba4 /etc/rc3.d/S80samba4
[root@dctest01 ~]# chkconfig samba4 on && systemctl start samba4
[root@dctest01 ~]# echo "nameserver 127.0.0.1" > /etc/resolv.conf
[root@dctest01 ~]# sed -i "/^DNS1/cDNS=127.0.0.1" /etc/sysconfig/network-scripts/ifcfg-*
[root@dctest01 ~]# systemctl restart network
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Password for [TESTAD\Administrator]:
2 zone(s) found
pszZoneName : testad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : DomainDnsZones.testad.local
pszZoneName : _msdcs.testad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : ForestDnsZones.testad.local
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# host -t SRV _ldap._tcp.TESTAD.LOCAL 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.TESTAD.LOCAL has SRV record 0 100 389 dctest01.testad.local.
[root@dctest01 ~]# host -t SRV _kerberos._udp.TESTAD.LOCAL 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.TESTAD.LOCAL has SRV record 0 100 88 dctest01.testad.local.
[root@dctest01 ~]# more /etc/hostname
dctest01
[root@dctest01 ~]# host -t A dctest01.testad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
dctest01.testad.local has address 172.19.19.181
[root@dctest01 ~]#
[root@dctest01 ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
cp: overwrite ‘/etc/krb5.conf’?
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# kinit administrator@TESTAD.LOCAL
Password for administrator@TESTAD.LOCAL:
Warning: Your password will expire in 41 days on Thu 31 Mar 2016 02:04:13 PM JST
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# firewall-cmd --permanent --zone=public --add-service=samba
-bash: firewall-cmd: command not found
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# systemctl status firewalld
● firewalld.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# setsebool -P samba_domain_controller on
[root@dctest01 ~]# setsebool -P samba_export_all_ro on
[root@dctest01 ~]# setsebool -P samba_explort_all_rw on
Boolean samba_explort_all_rw is not defined
[root@dctest01 ~]# setsebool -P samba_export_all_rw on
[root@dctest01 ~]# setsebool -P samba_enable_home_dirs o
setsebool: illegal value o for boolean samba_enable_home_dirs
[root@dctest01 ~]# setsebool -P samba_enable_home_dirs on
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
ERROR(<class 'samba.provision.ProvisioningError'>):
Provision failed - ProvisioningError: guess_names: 'realm=TESTD.LOCAL' in /usr/local/samba/etc/smb.conf must match chosen realm 'TESTAD.LOCAL'!
Please remove the smb.conf file and let provision generate it File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 434, in run nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2022, in provision sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill
== FILL_DRS))
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 606, in guess_names raise ProvisioningError("guess_names: 'realm=%s' in %s must match
chosen realm '%s'! Please remove the smb.conf file and let provision generate it" % (lp.get("realm").upper(), lp.configfile, realm)
[root@dctest01 ~]# more /usr/local/samba/etc/smb.conf# Global parameters
[global]
workgroup = TESTD
realm = TESTD.LOCAL
netbios name = DCTEST01
server role = active directory domain controller
dns forwarder = (外部DNSグローバル)
idmap_ldb:use rfc2307 = yes
[netlogon]
path = /usr/local/samba/var/locks/sysvol/testd.local/scripts
read only = No
[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No
[root@dctest01 ~]# vi /usr/local/samba/etc/smb.conf
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: TESTAD.LOCAL
Domain [TESTAD]:
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) [(外部DNSグローバル)]:
Administrator password:
Retype password:
ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: Workgroup 'TESTD' in smb.conf must match chosen domain 'TESTAD'! Please remove the /usr/local/samba/etc/smb.conf file and let provision generate it
File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 434, in run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2022, in provision
sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill == FILL_DRS))
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 618, in guess_names
raise ProvisioningError("guess_names: Workgroup '%s' in smb.conf must match chosen domain '%s'! Please remove the %s file and let provision generate it" % (lp.get("workgroup").upper(), domain, lp.configfile))
[root@dctest01 ~]# rm /usr/local/samba/etc/smb.confrm: remove regular file ‘/usr/local/samba/etc/smb.conf’?
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: TESTAD.LOCAL
Domain [TESTAD]:
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) [(外部DNSグローバル)]:
Administrator password:
Retype password:
ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: Workgroup 'TESTD' in smb.conf must match chosen domain 'TESTAD'! Please remove the /usr/local/samba/etc/smb.conf file and let provision generate it
File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 434, in run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2022, in provision
sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill == FILL_DRS))
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 618, in guess_names
raise ProvisioningError("guess_names: Workgroup '%s' in smb.conf must match chosen domain '%s'! Please remove the %s file and let provision generate it" % (lp.get("workgroup").upper(), domain, lp.configfile))
[root@dctest01 ~]# more /usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py
# Unix SMB/CIFS implementation.
# backend code for provisioning a Samba4 server
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2012
# Copyright (C) Andrew Bartlett <abartlet@samba.org> 2008-2009
# Copyright (C) Oliver Liebel <oliver@itc.li> 2008-2009
#
# Based on the original in EJS:
# Copyright (C) Andrew Tridgell <tridge@samba.org> 2005
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
"""Functions for setting up a Samba configuration."""
__docformat__ = "restructuredText"
from base64 import b64encode
import os
import re
import pwd
import grp
import logging
import time
import uuid
import socket
import urllib
import string
import tempfile
import ldb
from samba.auth import system_session, admin_session
import samba
from samba.samba3 import smbd, passdb
from samba.samba3 import param as s3param
from samba.dsdb import DS_DOMAIN_FUNCTION_2000
from samba import (
Ldb,
MAX_NETBIOS_NAME_LEN,
check_all_substituted,
is_valid_netbios_char,
setup_file,
substitute_var,
valid_netbios_name,
version,
)
from samba.dcerpc import security, misc
from samba.dcerpc.misc import (
SEC_CHAN_BDC,
SEC_CHAN_WKSTA,
)
from samba.dsdb import (
DS_DOMAIN_FUNCTION_2003,
DS_DOMAIN_FUNCTION_2008_R2,
ENC_ALL_TYPES,
)
from samba.idmap import IDmapDB
from samba.ms_display_specifiers import read_ms_ldif
from samba.ntacls import setntacl, getntacl, dsacl2fsacl
from samba.ndr import ndr_pack, ndr_unpack
from samba.provision.backend import (
ExistingBackend,
FDSBackend,
LDBBackend,
OpenLDAPBackend,
)
from samba.descriptor import (
get_empty_descriptor,
get_config_descriptor,
get_config_partitions_descriptor,
get_config_sites_descriptor,
get_config_ntds_quotas_descriptor,
get_config_delete_protected1_descriptor,
get_config_delete_protected1wd_descriptor,
get_config_delete_protected2_descriptor,
get_domain_descriptor,
get_domain_infrastructure_descriptor,
get_domain_builtin_descriptor,
get_domain_computers_descriptor,
get_domain_users_descriptor,
get_domain_controllers_descriptor,
get_domain_delete_protected1_descriptor,
get_domain_delete_protected2_descriptor,
get_dns_partition_descriptor,
get_dns_forest_microsoft_dns_descriptor,
get_dns_domain_microsoft_dns_descriptor,
)
from samba.provision.common import (
setup_path,
setup_add_ldif,
setup_modify_ldif,
FILL_FULL,
FILL_SUBDOMAIN,
FILL_NT4SYNC,
FILL_DRS
)
from samba.provision.sambadns import (
get_dnsadmins_sid,
setup_ad_dns,
create_dns_update_list
)
import samba.param
import samba.registry
from samba.schema import Schema
from samba.samdb import SamDB
from samba.dbchecker import dbcheck
DEFAULT_POLICY_GUID = "31B2F340-016D-11D2-945F-00C04FB984F9"
DEFAULT_DC_POLICY_GUID = "6AC1786C-016F-11D2-945F-00C04fB984F9"
DEFAULTSITE = "Default-First-Site-Name"
LAST_PROVISION_USN_ATTRIBUTE = "lastProvisionUSN"
class ProvisionPaths(object):
def __init__(self):
self.shareconf = None
self.hklm = None
self.hkcu = None
self.hkcr = None
self.hku = None
self.hkpd = None
self.hkpt = None
self.samdb = None
self.idmapdb = None
self.secrets = None
self.keytab = None
self.dns_keytab = None
self.dns = None
self.winsdb = None
self.private_dir = None
self.state_dir = None
class ProvisionNames(object):
def __init__(self):
self.ncs = None
self.rootdn = None
self.domaindn = None
self.configdn = None
self.schemadn = None
self.dnsforestdn = None
self.dnsdomaindn = None
self.ldapmanagerdn = None
self.dnsdomain = None
self.realm = None
self.netbiosname = None
self.domain = None
self.hostname = None
self.sitename = None
self.smbconf = None
self.domainsid = None
self.forestsid = None
self.domainguid = None
self.name_map = {}
def find_provision_key_parameters(samdb, secretsdb, idmapdb, paths, smbconf,
lp):
"""Get key provision parameters (realm, domain, ...) from a given provision
:param samdb: An LDB object connected to the sam.ldb file
:param secretsdb: An LDB object connected to the secrets.ldb file
:param idmapdb: An LDB object connected to the idmap.ldb file
:param paths: A list of path to provision object
:param smbconf: Path to the smb.conf file
:param lp: A LoadParm object
:return: A list of key provision parameters
"""
names = ProvisionNames()
names.adminpass = None
# NT domain, kerberos realm, root dn, domain dn, domain dns name
names.domain = string.upper(lp.get("workgroup"))
names.realm = lp.get("realm")
names.dnsdomain = names.realm.lower()
basedn = samba.dn_from_dns_name(names.dnsdomain)
names.realm = string.upper(names.realm)
# netbiosname
# Get the netbiosname first (could be obtained from smb.conf in theory)
res = secretsdb.search(expression="(flatname=%s)" %
names.domain,base="CN=Primary Domains",
scope=ldb.SCOPE_SUBTREE, attrs=["sAMAccountName"])
names.netbiosname = str(res[0]["sAMAccountName"]).replace("$","")
names.smbconf = smbconf
# That's a bit simplistic but it's ok as long as we have only 3
# partitions
current = samdb.search(expression="(objectClass=*)",
base="", scope=ldb.SCOPE_BASE,
attrs=["defaultNamingContext", "schemaNamingContext",
"configurationNamingContext","rootDomainNamingContext",
"namingContexts"])
names.configdn = current[0]["configurationNamingContext"][0]
names.schemadn = current[0]["schemaNamingContext"][0]
if not (ldb.Dn(samdb, basedn) == (ldb.Dn(samdb,
current[0]["defaultNamingContext"][0]))):
raise ProvisioningError(("basedn in %s (%s) and from %s (%s)"
"is not the same ..." % (paths.samdb,
str(current[0]["defaultNamingContext"][0]),
paths.smbconf, basedn)))
names.domaindn=current[0]["defaultNamingContext"][0]
names.rootdn=current[0]["rootDomainNamingContext"][0]
names.ncs=current[0]["namingContexts"]
names.dnsforestdn = None
names.dnsdomaindn = None
for i in range(0, len(names.ncs)):
nc = names.ncs[i]
dnsforestdn = "DC=ForestDnsZones,%s" % (str(names.rootdn))
if nc == dnsforestdn:
names.dnsforestdn = dnsforestdn
continue
dnsdomaindn = "DC=DomainDnsZones,%s" % (str(names.domaindn))
if nc == dnsdomaindn:
names.dnsdomaindn = dnsdomaindn
continue
# default site name
res3 = samdb.search(expression="(objectClass=site)",
base="CN=Sites," + names.configdn, scope=ldb.SCOPE_ONELEVEL, attrs=["cn"
])
names.sitename = str(res3[0]["cn"])
# dns hostname and server dn
res4 = samdb.search(expression="(CN=%s)" % names.netbiosname,
base="OU=Domain Controllers,%s" % basedn,
scope=ldb.SCOPE_ONELEVEL, attrs=["dNSHostName"])
names.hostname = str(res4[0]["dNSHostName"]).replace("." + names.dnsdomain,
"")
server_res = samdb.search(expression="serverReference=%s" % res4[0].dn,
attrs=[], base=names.configdn)
names.serverdn = str(server_res[0].dn)
# invocation id/objectguid
res5 = samdb.search(expression="(objectClass=*)",
base="CN=NTDS Settings,%s" % str(names.serverdn),
scope=ldb.SCOPE_BASE,
attrs=["invocationID", "objectGUID"])
names.invocation = str(ndr_unpack(misc.GUID, res5[0]["invocationId"][0]))
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# vi /usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: TEST.LOCAL
Domain [TEST]:
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) [(外部DNSグローバル)]:
Administrator password:
Retype password:
ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: 'realm=TESTAD.LOCAL' in /usr/local/samba/etc/smb.conf must match chosen realm 'TEST.LOCAL'! Please remove the smb.conf file and let provision generate it
File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 434, in run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2022, in provision
sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill == FILL_DRS))
File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 606, in guess_names
raise ProvisioningError("guess_names: 'realm=%s' in %s must match chosen realm '%s'! Please remove the smb.conf file and let provision generate it" % (lp.get("realm").upper(), lp.configfile, realm))
[root@dctest01 ~]# rm /usr/local/samba/etc/smb.confrm: remove regular file ‘/usr/local/samba/etc/smb.conf’? ^C
[root@dctest01 ~]# vi /usr/local/samba/etc/smb.conf
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
Realm: TESTAD.LOCAL
Domain [TESTAD]:
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) [(外部DNSグローバル)]:
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=testad,DC=local
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=testad,DC=local
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 /usr/local/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: dctest01
NetBIOS Domain: TESTAD
DNS Domain: testad.local
DOMAIN SID: S-1-5-21-1668573399-2154983584-2311720169
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# ls /etc/rc.d/init.d/
functions netconsole network README
[root@dctest01 ~]# vi /etc/rc.d/init.d/samba4
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# chmod 755 /etc/rc.d/init.d/samba4
[root@dctest01 ~]# chmod +x /etc/rc.d/init.d/samba4
[root@dctest01 ~]# ln -s /etc/rc.d/init.d/samba4 /etc/rc3.d/S80samba4
[root@dctest01 ~]# chkconfig samba4 on && systemctl start samba4
[root@dctest01 ~]# echo "nameserver 127.0.0.1" > /etc/resolv.conf
[root@dctest01 ~]# sed -i "/^DNS1/cDNS=127.0.0.1" /etc/sysconfig/network-scripts/ifcfg-*
[root@dctest01 ~]# systemctl restart network
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Password for [TESTAD\Administrator]:
2 zone(s) found
pszZoneName : testad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : DomainDnsZones.testad.local
pszZoneName : _msdcs.testad.local
Flags : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
ZoneType : DNS_ZONE_TYPE_PRIMARY
Version : 50
dwDpFlags : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED
pszDpFqdn : ForestDnsZones.testad.local
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# host -t SRV _ldap._tcp.TESTAD.LOCAL 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.TESTAD.LOCAL has SRV record 0 100 389 dctest01.testad.local.
[root@dctest01 ~]# host -t SRV _kerberos._udp.TESTAD.LOCAL 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.TESTAD.LOCAL has SRV record 0 100 88 dctest01.testad.local.
[root@dctest01 ~]# more /etc/hostname
dctest01
[root@dctest01 ~]# host -t A dctest01.testad.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
dctest01.testad.local has address 172.19.19.181
[root@dctest01 ~]#
[root@dctest01 ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
cp: overwrite ‘/etc/krb5.conf’?
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# kinit administrator@TESTAD.LOCAL
Password for administrator@TESTAD.LOCAL:
Warning: Your password will expire in 41 days on Thu 31 Mar 2016 02:04:13 PM JST
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# firewall-cmd --permanent --zone=public --add-service=samba
-bash: firewall-cmd: command not found
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# systemctl status firewalld
● firewalld.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]# setsebool -P samba_domain_controller on
[root@dctest01 ~]# setsebool -P samba_export_all_ro on
[root@dctest01 ~]# setsebool -P samba_explort_all_rw on
Boolean samba_explort_all_rw is not defined
[root@dctest01 ~]# setsebool -P samba_export_all_rw on
[root@dctest01 ~]# setsebool -P samba_enable_home_dirs o
setsebool: illegal value o for boolean samba_enable_home_dirs
[root@dctest01 ~]# setsebool -P samba_enable_home_dirs on
[root@dctest01 ~]#
[root@dctest01 ~]#
[root@dctest01 ~]#
登録:
投稿 (Atom)