がらくたネット


SAMBA with ActiveDirectory

SAMBA with ActiveDirectory

SAMBAをActiveDirectory(以下、AD)と連携させる機会があったので備忘録

いろんな事

  • 昔のWindows2003時代はADとの連携にService For Unix(以下、SFU)を利用していたことが多い
  • Windows2003R2からはSubsystem for Unix Application(以下、SUA)を利用していたことが多い
  • Windows2012からはSUAが非推奨となったので、別の方法で実現しなさいとMicrosoftさんは言っている
  • SFUやSUAで何を連携していたかと言うとNISサーバー経由でのUID/GID。
  • idmapを使ってUID/GIDを変換している
  • idmapはwinbindが担っている
  • winbindのidmappingはtdbデータベースで管理されており、キャッシュされている
  • 一度キャッシュされたデータはなかなか消えない??
  • キャッシュディレクトリは/var/lib/samba
  • SAMBA本体も含め全ファイル削除するには、ディレクトリを削除すればOK。ディレクトリは次の起動時に自動生成されるが、samba/privateとsamba/scriptsだけは自動生成されないので、手動で作成しておく必要あり。作成し忘れるとSAMBAがエラーになる

設定の確認

設定が完了したら色々な方法で確認できる

kinit administrator@AD.LOCAL kerberos認証を実行してキャッシュする

klist kerberos認証している情報を表示

wbinfo -u ユーザー一覧の表示

wbinfo -g グループ一覧の表示

wbinfo -n <username> usernameのSIDを表示

id <domain user name> ユーザ情報の表示、ローカルLinuxユーザもドメインユーザも表示できる

実際の設定

ADドメイン名ad.local.
NTドメイン名AD
ADのDC名win.ad.local.
SAMBAサーバー名samba.ad.local.
SAMBAサーバーNETBIOS名SAMBA

idmap周りの設定ではまります
設定していて思う通りに行かないときは、sambaのloglevelを10に上げておいて
logディレクトリのlog.winbindとlog.winbind-idmapを確認するのが良い

base_ridを500としているのはAD側のビルトインユーザUIDやグループGIDが500番から始まっていて
ridモジュールのidmappingでrangeエラーになっていたのを対応するため

samba関連をインストール  samba samba-winbind krb5-workstation

kerberos設定 /etc/krb5.conf

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = AD.LOCAL

[realms]
 AD.LOCAL = {
  kdc = win.ad.local
  admin_server = win.ad.local
 }

[domain_realm]
 .ad.local = AD.LOCAL
 ad.local = AD.LOCAL

/etc/samba/smb.conf

smb.conf
[global]
        unix charset = UTF8
        display charset = UTF8
        dos charset = cp932

        log file = /var/log/samba/log.%m
        log level = 3
        syslog = 0

        workgroup = AD
        server string = AD file server
        security = ads
        realm = AD.LOCAL
        netbios name = samba

        winbind separator = +
        winbind use default domain = yes
        encrypt passwords = yes

        idmap config * : backend = tdb
        idmap config * : range = 500-20000
        idmap config AD : backend     = rid
        idmap config AD : range       = 10000 - 20000
        idmap config AD : base_rid    = 500

[share]
        path = /samba/share
        store dos attributes = yes
        nt acl support = yes
        writeable = yes
        browseable = yes
        comment = 読み書き自由
        create mask = 0770
        directory mask = 0770
        inherit permissions = Yes
        public = yes
        guest ok = yes
        guest only = yes

[ads-share]
        path = /samba/ads-share
        comment = ADユーザのみ共有
        valid users = "@+domain users"
        read only = no
        writable = yes
        browseable = yes
        nt acl support = yes
        store dos attributes = yes
        inherit permissions = Yes

[ads-admin]
        path = /samba/ads-admin
        comment = AD特定ユーザのみ
        valid users = 'username'
        read only = no
        writable = yes
        browseable = yes
        nt acl support = yes
        store dos attributes = yes
        inherit permissions = Yes