Samba Auth Through Mysql

用mysql來做samba的認証。

文件可以在/usr/local/share/examples/samba/pdb/mysql裡下找到
首先先建資料庫的table

CREATE TABLE user (
logon_time int(9),
logoff_time int(9),
kickoff_time int(9),
pass_last_set_time int(9),
pass_can_change_time int(9),
pass_must_change_time int(9),
username varchar(255),
domain varchar(255),
nt_username varchar(255),
nt_fullname varchar(255),
home_dir varchar(255),
dir_drive varchar(4),
logon_script varchar(255),
profile_path varchar(255),
acct_desc varchar(255),
workstations varchar(255),
unknown_str varchar(255),
munged_dial varchar(255),
uid int(9) NOT NULL DEFAULT "0" PRIMARY KEY auto_increment,
gid int(9),
user_sid varchar(255),
group_sid varchar(255),
lm_pw varchar(255),
nt_pw varchar(255),
acct_ctrl int(9),
unknown_3 int(9),
logon_divs int(9),
hours_len int(9),
unknown_5 int(9),
unknown_6 int(9) default "1260",
bad_password_count int(9),
logon_count int(9)
);
然後新增一筆資料至 user
小第只新增了username, domain, homedir, uid, gid, user_sid, group_sid, lm_pw, nt_pw這些欄位

然後改smb.conf
[global]
netbios name = FOOBAR
workgroup = TESTGROUP
security = domain
domain logons = yes
domain master = yes
passdb backend = mysql:mysql (以下請改成你自已的mysql設定)
mysql:mysql host = localhost
mysql:mysql user = samba
mysql:mysql password = ambas
mysql:mysql database = samba

以上這些資料在網路上都找得到~~不過你還是沒法透過mysql做認証登入

原因在user_sid這個欄位要是這邊沒有加如下資料

S-1-5-21-1573749901-186869194-3963891256-501的話,則會出現如下訊息。

passdb/pdb_mysql.c:row_to_sam_account(93)

No user SID retrieved from database!

小第這邊的解法應該比較算是權宜之計 因為user_sid 這個欄位是nt user 的sid
小第不太清楚自已登入到samba 的機器的sid
所以就亂co了一個sid去填入mysql
然後
用smbpasswd 去改密碼
因為我們在mysql加的密碼就算用encrypt samba還是看不懂~~

問題一
在設定完example/samba/pdb/mysql中的資料後
我啟動的時後,在mysql的log中有出現
SELECT logon_time,logoff_time,kickoff_time,pass_last_set_time,pass_can_change_time,pass_must_change_time,username,domain,nt_username,nt_fullname,home_dir,dir_drive,logon_script,profile_path,acct_desc,workstations,unknown_str,munged_dial,user_sid,group_sid,lm_pw,nt_pw,NULL,acct_ctrl,logon_divs,hours_len,bad_password_count,logon_count,unknown_6 FROM user WHERE user_sid = 'S-1-5-11-1543741201-186861294-3963291256-502'
如下訊息~~
這點還滿疑惑的,不知道他為什麼在我啟動samba的時後,在mysql會多出這筆log,且不知道這個sid是server的sid或是小第遠端putty的sid
而小第的user_sid中的資料就是co這邊的sid

問題二
在我從windows中連到samba的時後,在打帳號密碼之前~~
小第實際測試過,在mysql log中會出現
SELECT logon_time,logoff_time,kickoff_time,pass_last_set_time,pass_can_change_time,pass_must_change_time,username,domain,nt_username,nt_fullname,home_dir,dir_drive,logon_script,profile_path,acct_desc,workstations,unknown_str,munged_dial,user_sid,group_sid,lm_pw,nt_pw,NULL,acct_ctrl,logon_divs,hours_len,bad_password_count,logon_count,unknown_6 FROM user WHERE username is NULL John'
where 的username 都是windows的帳號
可是很不幸的是都沒有辦法這樣直接登入成功~

小第會想用mysql來管理samba 最主要的原因是因為
小第打算把postfix, proftpd, samba 的帳號和密碼統一管理
然後寫一隻程式可以在web介面去做帳號管理

目前在postfix 和proftpd 已經克服 ,而samba 的登入方法也克服不過很不幸的是
samba的加密的格式和postfix 和proftpd 不一樣~沒辦法吃同一個格式~~
目前想想只有透過另一條路pam 來做samba 和mysql的帳號認証~

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料