arinux

Linux サーバー設定備忘録
<< MySQL (2) - passwd 管理 | main | MySQL (4) - メールアカウント管理 (1) >>
MySQL (3) - passwd 管理 (2)


nss-mysql を利用して、/etc/passwd, /etc/group, /etc/shadow の情報を DB から取得する方法を説明します。


メモ nss-mysql インストール


以下は、クライアントとなるサーバー(ここでは test15.arinux.net)上で実施します。


  1. http://download.savannah.gnu.org/releases/nss-mysql/ から、
    「nss-mysql-1.0.tar.gz」 をダウンロードして、「/usr/local/src」 に置きます。


  2. 解凍します。
    [test15]# cd /usr/local/src
    [test15]# tar zxvf nss-mysql-1.0.tar.gz
    


  3. コンパイルに必要なパッケージを追加インストールします。
    (依存するパッケージも追加されます)
    [test15]# yum install gcc
    [test15]# yum install gcc-c++
    [test15]# yum install yum zlib-devel
    


  4. コンフィグ、コンパイル、インストールします。
    [test15]# ./configure --with-mysql-lib=/usr/local/mysql/lib --with-mysql-include=/usr/local/mysql/include
    [test15]# make
    [test15]# make install
    


  5. /etc/nss-mysql.conf を編集します。このファイルは、group と passwd 情報の取得に使用されます。
    [test15]# vi /etc/nss-mysql.conf
    
    (以下の箇所を編集)
    users.host = inet:slave01.arinux.net:3306;          # 参照先のDBサーバー名
    users.database = usersdb;                           # 接続先のデータベース名
    users.db_user = cwuser;                             # 接続時のユーザー名
    users.db_password = 'n,V0dX6kjgcd;                  # 接続時のパスワード
    users.backup_host = inet:slave02.arinux.net:3306;   # 上記DBサーバーに接続できない時の参照先
    users.backup_database = usersdb;                    # 接続先のデータベース名
    users.backup_db_user = cwuser;                      # 接続時のユーザー名
    users.backup_db_password = n,V0dX6kjgcd;            # 接続時のパスワード
    users.table = user;                                 # 参照先のテーブル名
    users.where_clause = user.status = 'A' AND user.shost = test15.arinux.net';  # 接続元のホスト名
    


  6. /etc/nss-mysql-root.conf を編集します。このファイルは、shadow 情報の取得に使用されます。
    [test15]# vi /etc/nss-mysql-root.conf
    
    (以下の箇所を編集)
    shadow.host = inet:slave01.arinux.net:3306;         # 参照先のDBサーバー名
    shadow.database = usersdb;                          # 接続先のデータベース名
    shadow.db_user = cwuser;                            # 接続時のユーザー名
    shadow.db_password = n,V0dX6kjgcd;                  # 接続時のパスワード
    shadow.backup_host = inet:slave02.arinux.net:3306;  # 上記DBサーバーに接続できない時の参照先
    shadow.backup_database = usersdb;                   # 接続先のデータベース名
    shadow.backup_db_user = cwuser;                     # 接続時のユーザー名
    shadow.backup_db_password = n,V0dX6kjgcd;           # 接続時のパスワード
    shadow.table = user;                                # 参照先のテーブル名
    shadow.where_clause = user.status = 'A' AND user.shost = 'test15.arinux.net';  # 接続元のホスト名
    


  7. mysql モジュールをシンボリックリンクします。
    [test15]# cd /usr/local/mysql/lib
    [test15]# mkdir orgfiles
    [test15]# mv libmysqlclient.so orgfiles/.
    [test15]# mv libmysqlclient.so.15 orgfiles/.
    [test15]# mv libmysqlclient_r.so orgfiles/.
    [test15]# mv libmysqlclient_r.so.15 orgfiles/.
    [test15]# ln -s libmysqlclient.so.15.0.0 libmysqlclient.so
    [test15]# ln -s libmysqlclient.so.15.0.0 libmysqlclient.so.15
    [test15]# ln -s libmysqlclient_r.so.15.0.0 libmysqlclient_r.so
    [test15]# ln -s libmysqlclient_r.so.15.0.0 libmysqlclient_r.so.15
    [test15]# ls -l
    (一部省略)
    lrwxrwxrwx 1 root root        24 Dec  3 14:18 libmysqlclient.so -> libmysqlclient.so.15.0.0*
    lrwxrwxrwx 1 root root        24 Dec  3 14:06 libmysqlclient.so.15 -> libmysqlclient.so.15.0.0*
    -rwxr-xr-x 1 root mysql  5120308 Aug  4 22:51 libmysqlclient.so.15.0.0*
    lrwxrwxrwx 1 root root        26 Dec  3 14:18 libmysqlclient_r.so -> libmysqlclient_r.so.15.0.0*
    lrwxrwxrwx 1 root root        26 Dec  3 14:07 libmysqlclient_r.so.15 -> libmysqlclient_r.so.15.0.0*
    -rwxr-xr-x 1 root mysql  5143389 Aug  4 22:52 libmysqlclient_r.so.15.0.0*
    


  8. 共有ライブラリの検索パスを追加します。
    [test15]# vi /etc/ld.so.conf
    
    include ld.so.conf.d/*.conf
    /usr/local/lib
    /usr/local/mysql/lib    # この行を追加
    


  9. システムに反映させます。
    [test15]# ldconfig
    


  10. MySQL へ接続できるかどうかを確認します。
    [test15]# mysql -h slave01.arinux.net -u cwuser -p usersdb
    Enter password:
    (省略)
    mysql> ¥q
    


  11. /etc/nsswitch.conf を編集します。
    [test15]# vi /etc/nsswitch.conf
    
    (以下の箇所を編集)
    passwd:     files mysql
    shadow:     files mysql
    group:      files mysql
    
    虫眼鏡 編集内容の意味


    「files」 は、/etc/passwd、/etc/shadow、/etc/group のことを指し、これらに該当するユーザー名やパスワードがなかった場合に、「mysql」 を探しに行くことを意味しています。


  12. MySQL DB 上の group, passwd, shadow 情報が参照できるかを確認します。
    [test15]# getent group
    (省略)
    sales:x:512:
    system:x:511:
    
    [test15]# getent passwd
    (省略)
    ari:x:1001:511:Arinux:/home/ari:/bin/bash
    
    [test15]# getent shadow
    (省略)
    ari:$1$UMu5YsKa$XGzhP.p0hk71Y3nQE09iG.:14194:0:99999:7:::
    


  13. ssh ログインのテストをします。
    [test15]# ssh -l ari slave01.arinux.net
    ari@slave01.arinux.net's password:
    Last login: Wed Dec  3 14:46:52 2008 from slave01.arinux.net
    Could not chdir to home directory /home/ari: No such file or directory
    -bash-3.2$
    


  14. ログイン時に自動的にホームディレクトリを作成したい場合は、system-auth-ac を編集します。
    [test15]# vi /etc/pam.d/system-auth-ac
    
    #%PAM-1.0
    # This file is auto-generated.
    # User changes will be destroyed the next time authconfig is run.
    auth        required      pam_env.so
    auth        sufficient    pam_unix.so nullok try_first_pass
    auth        requisite     pam_succeed_if.so uid >= 500 quiet
    auth        required      pam_deny.so
    
    account     required      pam_unix.so
    account     sufficient    pam_succeed_if.so uid < 500 quiet
    account     required      pam_permit.so
    
    password    requisite     pam_cracklib.so try_first_pass retry=3
    password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_autht ok
    password    required      pam_deny.so
    
    session     optional      pam_keyinit.so revoke
    session     required      /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022  # この行を追加
    session     required      pam_limits.so
    session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
    session     required      pam_unix.so
    
    [test15]# ssh -l ari slave01.arinux.net
    ari@slave01.arinux.net's password:
    Creating directory '/home/ari'.
    Last login: Wed Dec  3 15:09:29 2008 from slave01.arinux.net
    [ari@slave02 ~]$
    



つづく

| arinux | MySQL | 17:33 | comments(2) | trackbacks(0) | pookmark |
管理者の承認待ちコメントです。
| - | 2018/05/24 4:24 PM |
管理者の承認待ちコメントです。
| - | 2018/05/25 9:22 AM |









http://www.arinux.net/trackback/89
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< May 2018 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ 掲載予定のタイトル
  • Wordpress
  • Pukiwiki
  • SMTPs/POPs/IMAPs
  • fml
  • Tips
+ CSS Nite
+ MOBILE
qrcode
+ LINKS
+ RECOMMEND
+ PROFILE