新会社の設立に際し、新たにActive Directory(以下AD)を使い、Windowsのユーザー管理をすることになった。
資産管理、情報統制の意味で必要だったけど、せっかくだからLinuxのサーバーも参加させたいし、ユーザー、ファイルなども共有したい。
作業メモとして動いている状態の設定情報を残す。
やりたいこと
ADのユーザーでLinuxサーバーも使いたい。AD上にはいるのに、いちいち別にLinuxでユーザー作ったり、消したりするの面倒だし、いなくなったユーザーが残り続けるのはまずい。どうせなら一括管理
AD認証でファイル共有をしたい。社内ファイルサーバーには、機密情報もはいるので、LANに繋げるだけですべて見れたりするのは、まずい。できればAD上のグループ単位で制限などができればベスト
構成
ADサーバー:Windows Server 2012
(ハードウェア管理・保守が面倒なので、既存のデータセンターに追加で借りた。そのためVPNで繋げてるけどそこは意識しなくて大丈夫だった)
標準テキスト Windows Server 2012 R2 構築・運用・管理パーフェクトガイド
- 作者: 知北直宏,日本マイクロソフト株式会社
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/09/27
- メディア: 単行本
- この商品を含むブログ (2件) を見る
クライアントサーバー:Uubuntu 16.04 デスクトップ(HP ML30 Gen9)
- 作者: 阿久津良和
- 出版社/メーカー: 技術評論社
- 発売日: 2016/10/07
- メディア: 大型本
- この商品を含むブログを見る
会社のPC:Windows10とか7とかMacとか雑多。ドメイン参加必須なので、WindowsはPro
もちろんすべて同セグメント内にあって、192.168.x.xなどでpingが通る前提
ADサーバー
自分がやってないからわからないけど、おそらく普通に構築
Linuxサーバー
普通に15.10を入れて、16.04がでたのでアップグレードしたもの。サーバー室にあるので普段使いのPCからSSH接続して使う
必要なものをインストール
Google検索と日本語では、新しいものが見つからない。
結局Ubuntuの公式が最強だった。
ActiveDirectoryWinbindHowto - Community Help Wiki
ファイル共有のsamba,
ADユーザーでLinuxに入れるようにするWinbind
LinuxをADに参加させるためのKerberosをイントールする
% sudo apt-get install winbind samba libnss-winbind libpam-winbind krb5-user
途中、Kerberosの設定情報入力を求められるけど、テキストで管理したいのでそのままエンター
ネットワーク周りの設定
ADに参加させるためには、Windowsでやる場合と同じく、ネームサーバーをADサーバーにする必要がある。
ドメイン名:bizocean.local
realm:BIZOCEAN.LOCAL
ワークグループ名:BIZOCEAN
ADサーバーのIP:192.168.87.11
ADサーバーの名前:bizadwsp01
liniuxサーバーの名前:ml30gen9
Linuxサーバーのhostnameを変更
% sudo vim /etc/hostname ml30gen9
今回は、型番からml30gen9を使用。
ADサーバー側でも、ml30gen9と下記で設定する固定IPを登録しておく。
/etc/hostsに、hostnameと、ADサーバーの情報もいれる
127.0.0.1 localhost 127.0.1.1 ml30gen9 ml30gen9.bizocean.local #AD周りの情報を入れる 192.168.87.11 bizocean.local bizadwsp01 bizadwsp01.bizocean.local
/etc/resolv.confを変更
新し目のUbuntuだと、/etc/resolv.confを直接編集せずにいろんな所からresolvconfというサービスが、自動で情報をひっぱって作っているらしい。なかなか変わらなくてはまる。
% vim /etc/resolvconf/resolv.conf.d/base search bizocean.local nameserver 192.168.87.11 nameserver 192.168.0.254
上記だけでは変わらないので、ネットワークインターフェースの方もいじる
また、固定IPの設定もする。
インターフェースに無線などがある場合はややこしくなる。
% vim /etc/network/interfaces # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto eno1 iface eno1 inet static address 192.168.2.70 netmask 255.255.252.0 gateway 192.168.0.254 #dns-nameservers 192.168.0.254 dns-nameservers 192.168.87.11 192.168.0.254
変更したら、いろいろ再起動してみて
% sudo service network-manager restart % sudo service resolvconf restart
/etc/resolv.confがいい感じになるまでいじくる
% cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 192.168.87.11 nameserver 192.168.0.254 search bizocean.local
Sambaの設定
【改訂新版】サーバ構築の実例がわかるSamba[実践]入門 (Software Design plus)
- 作者: 高橋基信
- 出版社/メーカー: 技術評論社
- 発売日: 2016/03/04
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
ファイルは、/etc/samba/smb.confという名前だけど、winbindもこの設定を使う
ADユーザーでログインした際に使われるディレクトリはtemplate homedirで設定する。
/home/%D/%Uだと、/home/BIZOCEAN/yu_yamazakiのようなディレクトリになる。
[global]の最初の方を変更
$ sudo vim /etc/samba/smb.conf [global] workgroup = BIZOCEAN password server = bizadwsp01.bizocean.local #password server = 192.168.87.11 realm = BIZOCEAN.LOCAL security = ads idmap config * : range = 16777216-33554431 template homedir = /home/%D/%U template shell = /bin/bash winbind use default domain = true winbind offline logon = yes winbind enum users = yes winbind enum groups = yes
再起動
sudo /etc/init.d/samba restart sudo /etc/init.d/winbind restart
Kerberosの設定
3か所変更する
% sudo vim /etc/krb5.conf [libdefaults] default_realm = BIZOCEAN.LOCAL dns_lookup_realm = false dns_lookup_kdc = true [realms] BIZOCEAN.LOCAL = { kdc = 192.168.87.11 admin_server = ml30gen9.bizocean.local } [domain_realm] .bizocean.local = BIZOCEAN.LOCAL bizocean.local = BIZOCEAN.LOCAL
nsswitchのにwinbind追加
公式だとshadowには入れてないけど一応入れておく
% sudo vim /etc/nsswitch.conf passwd: compat winbind group: compat winbind shadow: compat winbind
PAM回り
公式ドキュメント通り設定
PAM
% sudo vim /etc/pam.d/common-account account sufficient pam_winbind.so account required pam_unix.so
他はコメントアウト
% sudo vim /etc/pam.d/common-auth auth sufficient pam_winbind.so auth sufficient pam_unix.so nullok_secure use_first_pass auth required pam_deny.so
他はコメントアウト
% sudo vim /etc/pam.d/common-session session [default=1] pam_permit.so # here's the fallback if no module succeeds session requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around session required pam_permit.so # The pam_umask module will set the umask according to the system default in # /etc/login.defs and user settings, solving the problem of different # umask settings with different shells, display managers, remote sessions etc. # See "man pam_umask". session optional pam_umask.so # and here are more per-package modules (the "Additional" block) session optional pam_krb5.so minimum_uid=1000 session required pam_unix.so session optional pam_systemd.so session optional pam_mkhomedir.so # end of pam-auth-update config session optional pam_mkhomedir.so skel=/etc/skel umask=0022
足りない分追記
ADドメインに参加
% sudo net ads join -U domain_add Enter domain_add's password: Using short domain name -- BIZOCEAN Joined 'ML30GEN9' to dns domain 'bizocean.local' No DNS domain configured for ml30gen9. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER
- Uでドメイン追加権限のあるADユーザーを指定する。
joinedが出てるので成功
Administoratorでもいいけど、今回はドメイン参加用ユーザーがいたので使う
DNSエラーは無視してもいいっぽい。
ユーザー、グループ確認
% id yu_yamazaki uid=16777233(yu_yamazaki) gid=16777220(domain users) groups=16777220(domain users),16777245(g_all_bizocean),16777217(BUILTIN\users) % getent group % getent passwd
各コマンドで、Linux上にいなくて、AD上にはいるユーザー、グループの情報をとれることを確認する。
このグループを使って、Sambaの共有フォルダ、sudoresなどを変えるけど
上記"domain users"のようにグループ名にスペースが入っていると使えなくてはまる。gidもダメだった。
そのため、スペースのないグループを作って、ユーザーを参加させる必要がある。
ADドメインユーザー限定共有フォルダの作成
AD認証を使って、Windowsから書き込みなどができるフォルダを作る。
今回はg_all_bizoceanグループのみを追加。@をつけるとグループの意味らしい。
pathは今回、別途HDDを追加したのでマウントしたものを使っている
% sudo vim /etc/samba/smb.conf [bizocean-ws] path = /mnt/HGST3TB/bizocean-ws browseable = yes read only = no public=no guest ok = no create mode = 0770 directory mode = 0770 valid users = @g_all_bizocean
これでおおよそやりたいことはできた。
ADのグループが反映されないとき
ADでユーザーをグループに追加し、samba、winbind等を再起動したけど反映されないときがあった。
sambaのキャッシュファイルを消し、サービスの再起動などをしたら反映された。
<s>sudo rm /var/cache/samba/*</s>
netコマンドに専用のがあった
sudo net cache flush