PostgreSQLによる認証
後でまとめます
sambaにMySQL/PostgreSQL認証モジュールを組み込む
認証というか、tdbsamをMySQLやPostgreSQLに対応させた感じです。
今回使用したSambaは3.0.23、OSはVine 3.2
(このSQL認証モジュールはsambaのソースに付属してたが、このバージョンからモジュールが分離したらしいです。)
メイク
tar xfj pdbsql-0.1-samba_3.0.23.tar.bz2
cd pdbsql-0.1-samba_3.0.23
./configure --with-samba-dir=../sambaのソースがあるパス
make
make installデフォルトでは /usr/local/samba/lib/pdb にインストールされる。
RPMで、sambaをインストールしてる場合は、下記の場所にコピーしてやる必要がある。
cp *.so /usr/lib/samba/pdb/.
とりあえず、メイクは終わり。
smb.confの設定
上記補足、だいたいみればわかると思いますが....
passdb backend = pgsql:test
test:pgsql host = localhost
test:pgsql port = 5432
test:pgsql user = samba
test:pgsql password = xxxxxx
test:pgsql database = samba
test:table = smbpasswd
test:logon hours column = NULL
passdb backend = pgsql:xxx xxxの部分は任意の文字列で、DB設定する際の接頭辞になる。
xxx:pgsql host = DBサーバのホスト名 or IP
xxx:database = DB名
xxx:table = テーブル名
logon hours column = NULL とするのは、PostgreSQLの場合、pdbedit -a hogehogeで登録時にエラーとなるため、この項目自体を除外させている。
PostgreSQLの設定
MySQLの解説しかなかったが、この辺見ながら、やってみた
http://pdbsql.sourceforge.net/pdb_mysql.html
今回使用したPostgreSQL は8.1、日本語のエンコードは、EUC-JPでDBを作成する。
# samba認証用のデータベースを作成
createuser samba
createdb -U samba samba
#テーブルを作成
ここでは、smbpasswdというテーブル名で作成した。
vi smbpasswd.sql
CREATE TABLE "smbpasswd" ("username" varchar(255) NOT NULL,
"nt_username" varchar(255),
"nt_fullname" varchar(255),"user_sid" varchar(255),
"group_sid" varchar(255),"lm_pw" varchar(255),
"nt_pw" varchar(255),
"plain_pass" varchar(255),"domain" varchar(255),
"home_dir" varchar(255),
"dir_drive" varchar(2),
"logon_script" varchar(255),
"profile_path" varchar(255),"acct_ctrl" varchar(9),
"acct_desc" varchar(255),"workstations" varchar(255),
"logon_divs" varchar(9),
"logon_hours" varchar(255),
"hours_len" varchar(9),
"munged_dial" varchar(255),"logon_count" varchar(5),
"bad_password_count" varchar(5),"logon_time" int,
"logoff_time" int,
"kickoff_time" int,
"pass_last_set_time" int,
"pass_can_change_time" int,
"pass_must_change_time" int,"unknown_str" varchar(255),
"unknown_3" varchar(9),
"unknown_6" varchar(9),PRIMARY KEY ("username")
);
pdbedit -a hogehoge でユーザ追加してみる
結果
[root@test samba]# pdbedit -a hogehoge
new password:
retype new password:
Unix username: hogehoge
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3162671038-3974766871-1557222398-2000
Primary Group SID: S-1-5-32-547
Full Name:
Home Directory: \\test\hogehoge
HomeDir Drive: s:
Logon Script:
Profile Path: \\test\hogehoge
Domain: hogehoge
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 火, 19 1月 2038 12:14:07 JST
Kickoff time: 火, 19 1月 2038 12:14:07 JST
Password last set: 水, 12 7月 2006 00:55:10 JST
Password can change: 水, 12 7月 2006 00:55:10 JST
Password must change: 火, 19 1月 2038 12:14:07 JST
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
LOG: クライアント接続に想定外のEOFがありました
PostgreSQLでエラーが出るが、登録自体はできている
psql -U samba samba -c 'select username,user_sid,group_sid from smbpasswd;'
username | user_sid | group_sid
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
hogehoge | S-1-5-21-3162671038-3974766871-1557222398-2000 | S-1-5-32-547
(1 行)