SambaTips >

目次

概要

  • これは、ワークグループサーバ群のユーザ認証をLDAPに統合する例です。Windowsドメインは構築していません。
  • note.png説明の簡単のため、LDAPへの接続をセキュア(Start TLS等)に設定していませんが、実運用時にはセキュアにするべきです。
  • debian.pngDebian 8で動作を確認しています。

セットアップ手順

LDAPのセットアップ

LDAPのインストール

  1. 関連パッケージをインストールします。
    $ sudo apt-get install slapd ldap-utils
  2. 必要に応じてドメイン名を設定し直します。
    $ sudo dpkg-reconfigure -plow slapd
    Omit OpenLDAP server configuration? No
    DNS domain name: grid.example.com
    Organization name: grid.example.com
    Administrator password: ********
    Confirm password: ********
    Database backend to use: MDB
    Do you want the database to be removed when slapd is purged? No
    Move old database? Yes
    Allow LDAPv2 protocol? No
    ...

Samba連携用スキーマの追加

  1. Sambaをインストールします。デーモンは停止させておきます。
    $ sudo apt-get install samba
    $ sudo /etc/init.d/samba stop
    or
    $ sudo systemctl stop smbd nmbd
    • 同サーバでSambaを運用しない場合には、それらのサービスの自動起動も無効にしておきます。
      $ sudo update-rc.d -f samba-ad-dc remove
      $ sudo update-rc.d -f smbd remove
      $ sudo update-rc.d -f nmbd remove
  2. スキーマファイルをコピーし、それを使ってLDAPにスキーマを追加します。
    $ sudo cp /usr/share/doc/samba/examples/LDAP/samba.schema.gz /etc/ldap/schema/ 
    $ sudo cp /usr/share/doc/samba/examples/LDAP/samba.ldif.gz /etc/ldap/schema/ 
    $ sudo gunzip /etc/ldap/schema/samba.schema.gz
    $ sudo gunzip /etc/ldap/schema/samba.ldif.gz
    $ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/samba.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    adding new entry "cn=samba,cn=schema,cn=config"
  3. 追加されたスキーマを確認します。
    $ sudo ldapsearch -Y EXTERNAL -H ldapi:/// -LLL -b "cn=schema,cn=config" dn
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    dn: cn=schema,cn=config
    
    dn: cn={0}core,cn=schema,cn=config
    
    dn: cn={1}cosine,cn=schema,cn=config
    
    dn: cn={2}nis,cn=schema,cn=config
    
    dn: cn={3}inetorgperson,cn=schema,cn=config
    
    dn: cn={4}samba,cn=schema,cn=config

Samba連携用初期ディレクトリの構築

  1. smbldap-tools を使用して、LDAP連携のための初期ディレクトリ構成を構築します。smbldap-tools をインストールします。
    $ sudo apt-get install smbldap-tools
  2. 設定ファイルを用意します。
    $ sudo cp /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz /etc/smbldap-tools/
    $ sudo cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/
    $ sudo gunzip /etc/smbldap-tools/smbldap.conf.gz
    $ sudo chmod 600 /etc/smbldap-tools/smbldap_bind.conf
    1. /etc/smbldap-tools/smbldap.conf: あらかじめ最初のSambaサーバのローカルSIDを調べ、それを採用します。ほとんどの設定はデフォルトのままでも構いませんが、環境に応じて各ドメイン名やユーザ、グループ、マシン情報格納のためのコンテナ名は変更するとよいでしょう。
      $ sudo net getlocalsid
      SID for domain SALSA is: S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx
      $ sudo cp /etc/smbldap-tools/smbldap.conf{,.org}
      1. $ diff -u /etc/smbldap-tools/smbldap.conf{.org,}
      2. --- /etc/smbldap-tools/smbldap.conf.org 2015-09-20 10:24:42.113630668 +0900
      3. +++ /etc/smbldap-tools/smbldap.conf     2015-09-21 12:22:42.230499129 +0900
      4. @@ -33,12 +33,12 @@
      5.  
      6.  # Put your own SID. To obtain this number do: "net getlocalsid".
      7.  # If not defined, parameter is taking from "net getlocalsid" return
      8. -SID="S-1-5-21-2252255531-4061614174-2474224977"
      9. +SID="S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx"
      10.  
      11.  # Domain name the Samba server is in charged.
      12.  # If not defined, parameter is taking from smb.conf configuration file
      13.  # Ex: sambaDomain="IDEALX-NT"
      14. -sambaDomain="DOMSMB"
      15. +sambaDomain="GRID"
      16.  
      17.  ##############################################################################
      18.  #
      19. @@ -57,18 +57,18 @@
      20.  # Slave LDAP server URI
      21.  # Ex: slaveLDAP=ldap://slave.ldap.example.com/
      22.  # If not defined, parameter is set to "ldap://127.0.0.1/"
      23. -slaveLDAP="ldap://ldap.example.com/"
      24. +slaveLDAP="ldap://ldap.grid.example.com/"
      25.  
      26.  # Master LDAP server URI: needed for write operations
      27.  # Ex: masterLDAP=ldap://master.ldap.example.com/
      28.  # If not defined, parameter is set to "ldap://127.0.0.1/"
      29. -masterLDAP="ldap://ldap.example.com/"
      30. +masterLDAP="ldap://ldap.grid.example.com/"
      31.  
      32.  # Use TLS for LDAP
      33.  # If set to 1, this option will use start_tls for connection
      34.  # (you must also used the LDAP URI "ldap://...", not "ldaps://...")
      35.  # If not defined, parameter is set to "0"
      36. -ldapTLS="1"
      37. +ldapTLS="0"
      38.  
      39.  # How to verify the server's certificate (none, optional or require)
      40.  # see "man Net::LDAP" in start_tls section for more details
      41. @@ -88,7 +88,7 @@
      42.  
      43.  # LDAP Suffix
      44.  # Ex: suffix=dc=IDEALX,dc=ORG
      45. -suffix="dc=example,dc=com"
      46. +suffix="dc=grid,dc=example,dc=com"
      47.  
      48.  # Where are stored Users
      49.  # Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG"
      50. @@ -198,7 +198,7 @@
      51.  # Domain appended to the users "mail"-attribute
      52.  # when smbldap-useradd -M is used
      53.  # Ex: mailDomain="idealx.com"
      54. -mailDomain="example.com"
      55. +mailDomain="grid.example.com"
      56.  
      57.  ##############################################################################
      58.  #
    2. /etc/smbldap-tools/smbldap_bind.conf: 接続先のLDAPと接続用バインド識別名、そのパスワードの設定です。
      $ sudo diff -u /etc/smbldap-tools/smbldap_bind.conf{.org,}
      1. --- /etc/smbldap-tools/smbldap_bind.conf.org 2015-09-19 21:10:13.357718587 +0900
      2. +++ /etc/smbldap-tools/smbldap_bind.conf 2015-09-19 21:14:43.586432990 +0900
      3. @@ -7,7 +7,7 @@
      4.  # master ldap for writing access and a slave ldap server for reading access
      5.  # By default, we will use the same DN (so it will work for standard Samba
      6.  # release)
      7. -slaveDN="cn=Manager,dc=example,dc=com"
      8. -slavePw="secret"
      9. -masterDN="cn=Manager,dc=example,dc=com"
      10. -masterPw="secret"
      11. +slaveDN="cn=admin,dc=grid,dc=example,dc=com"
      12. +slavePw="********"
      13. +masterDN="cn=admin,dc=grid,dc=example,dc=com"
      14. +masterPw="********"
  3. 設定が済みましたら、smbldap-populateコマンドで初期ディレクトリ構成を登録し、rootのパスワードを設定します。※ワークグループとSambaサーバのSIDには先程設定した同じものが登録されます。2台め以降のSambaサーバを構築する場合にも同じSIDを設定していきます。
    $ sudo smbldap-populate
    Populating LDAP directory for domain GRID (S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx)
    (using builtin directory structure)
    
    entry dc=grid,dc=example,dc=com already exist.
    adding new entry: ou=Users,dc=grid,dc=example,dc=com
    adding new entry: ou=Groups,dc=grid,dc=example,dc=com
    adding new entry: ou=Computers,dc=grid,dc=example,dc=com
    adding new entry: ou=Idmap,dc=grid,dc=example,dc=com
    adding new entry: sambaDomainName=GRID,dc=grid,dc=example,dc=com
    adding new entry: uid=root,ou=Users,dc=grid,dc=example,dc=com
    adding new entry: uid=nobody,ou=Users,dc=grid,dc=example,dc=com
    adding new entry: cn=Domain Admins,ou=Groups,dc=grid,dc=example,dc=com
    adding new entry: cn=Domain Users,ou=Groups,dc=grid,dc=example,dc=com
    adding new entry: cn=Domain Guests,ou=Groups,dc=grid,dc=example,dc=com
    adding new entry: cn=Domain Computers,ou=Groups,dc=grid,dc=example,dc=com
    adding new entry: cn=Administrators,ou=Groups,dc=grid,dc=example,dc=com
    adding new entry: cn=Account Operators,ou=Groups,dc=grid,dc=example,dc=com
    adding new entry: cn=Print Operators,ou=Groups,dc=grid,dc=example,dc=com
    adding new entry: cn=Backup Operators,ou=Groups,dc=grid,dc=example,dc=com
    adding new entry: cn=Replicators,ou=Groups,dc=grid,dc=example,dc=com
    
    Please provide a password for the domain root:
    Changing UNIX and samba passwords for root
    New password:
    Retype new password:

Sambaサーバのセットアップ

  1. SambaのバックエンドをLDAPに変更するため設定ファイルを編集します。user、group、machineサフィックスには、smbldap-toolsで登録した適切なコンテナをそれぞれ設定します。
    1. $ diff -u /etc/samba/smb.conf{.org,}
    2. --- /etc/samba/smb.conf.org 2015-09-19 22:32:16.505991422 +0900
    3. +++ /etc/samba/smb.conf 2015-09-20 09:58:33.244331212 +0900
    4. @@ -23,10 +23,16 @@
    5.  
    6.  [global]
    7.  
    8. +   wide links = yes
    9. +   follow symlinks = yes
    10. +   unix extensions = no
    11. +   dos charset = CP932
    12. +   printing = BSD
    13. +
    14.  ## Browsing/Identification ###
    15.  
    16.  # Change this to the workgroup/NT-domain name your Samba server will part of
    17. -   workgroup = WORKGROUP
    18. +   workgroup = GRID
    19.  
    20.  # Windows Internet Name Serving Support Section:
    21.  # WINS Support - Tells the NMBD component of Samba to enable its WINS Server
    22. @@ -92,7 +98,15 @@
    23.  
    24.  # If you are using encrypted passwords, Samba will need to know what
    25.  # password database type you are using.  
    26. -   passdb backend = tdbsam
    27. +;   passdb backend = tdbsam
    28. +   passdb backend = ldapsam:ldap://localhost
    29. +   ldap suffix = dc=grid,dc=example,dc=com
    30. +   ldap user suffix = ou=Users
    31. +   ldap group suffix = ou=Groups
    32. +   ldap machine suffix = ou=Computers
    33. +   ldap admin dn = cn=admin,dc=grid,dc=example,dc=com
    34. +   ldap passwd sync = yes
    35. +   ldap ssl = no
    36.  
    37.     obey pam restrictions = yes
    38.  
    39. @@ -252,3 +266,8 @@
    40.  # to the drivers directory for these users to have write rights in it
    41.  ;   write list = root, @lpadmin
    42.  
    43. +# for test
    44. +[tmp]
    45. +   path = /tmp
    46. +   username = alice
    47. +   valid users = alice
    48. +
  2. LDAP接続用のバインド識別名のパスワードをローカルシークレットDBに格納します。
    $ sudo smbpasswd -W
    Setting stored password for "cn=admin,dc=grid,dc=example,dc=com" in secrets.tdb
    New SMB password:
    Retype new SMB password:
  3. サーバを再起動させます。この連携設定後の初回起動時に、LDAPに sambaDomainName?=<サーバ名>,dc=grid,dc=example,dc=com エントリが追加されます。
    $ sudo /etc/init.d/samba restart
    or
    $ sudo systemctl restart smbd nmbd

2台め以降のSambaサーバ

  • ※最初のSambaサーバと同じ要領で構築しますが、ワークグループで同一のSIDを設定する必要があります。
  1. パッケージをインストールします。
    $ sudo apt-get install samba
    $ sudo /etc/init.d/samba stop
    or
    $ sudo systemctl stop smbd nmbd
  2. 同じSIDを設定します。先にSamba設定ファイルの編集を済ませた場合には、このコマンド実行時にLDAPに対して sambaDomainName?=<サーバ名>,dc=grid,dc=example,dc=com エントリを追加しますので、ご注意ください。
    $ sudo net setlocalsid S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx
    $ sudo net getlocalsid
    SID for domain RUMBA is: S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx
  3. 設定ファイルを最初のサーバと同じ要領で編集します。
  4. LDAP接続用のバインド識別名のパスワードをローカルシークレットDBに格納し、サーバを起動させます。
    $ sudo smbpasswd -W
    Setting stored password for "cn=admin,dc=grid,dc=example,dc=com" in secrets.tdb
    New SMB password:
    Retype new SMB password:
    $ sudo /etc/init.d/samba start
    or
    $ sudo systemctl start smbd nmbd

ユーザとグループの管理

  1. ユーザやグループの情報はLDAPに格納されるため、smbldap-toolsで提供されるコマンドのみを使用してそれらを管理します。サーバローカルにはユーザ、グループを追加しません。
    $ sudo smbldap-useradd -a -u 1000 alice
    $ sudo smbldap-passwd alice
    $ sudo smbldap-useradd -a -u 1001 bob
    $ sudo smbldap-passwd bob
    $ sudo smbldap-groupadd -a -g 500 sambashare
    $ sudo smbldap-groupmod -m alice,bob sambashare
  2. Sambaサーバをファイルサーバとして利用する場合、サーバへの直接ログインはほぼ不要ですが、格納されるファイルのアクセス制御のためユーザとグループの名前解決(NSS)をLDAPに向ける必要があります。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-01 (土) 10:45:05 (76d)