一開始都很順,但到了samba server就卡關了,同樣的設定,同樣在centos6上,在一般機器上的samba server都可順利登入,但裝在VMWARE上的就是不行。
卡關卡了一個月,只好另尋出路,不再用本機認證,另裝一台server安裝ldap server,好在有VMWARE,讓我輕易地新增一台ldap server。
Server World真是個好站,讓我簡單的利用複製、貼上就架起了一台LDAP Server,在依樣畫葫蘆,架起了一直卡關的Samba PDC over LDAP,在登入的時候,眼淚幾乎奪眶而出,整整一個月卡關的悲憤,隨著顫抖宣洩而出…。
但是,問題來了,以前samba PDC 沒有搭配LDAP,可以搭配Openwebmail輕鬆修改密碼,但是現在搭配ldap之後,Openwebmail就無法順道修改Samba的密碼,雖然Openwebmail上有smbpasswd = yes這個參數,但是他是搭配auth_unix.pl的參數,在目前的auth_pam.pl上,根本派不上用場,還好,開放源碼的好處,就是讓使用者可以改程式,雖然我不懂perl語言,但還是讓我給試出來了,趕快在此記錄下來,以免未來忘記!
一、修改/var/www/cgi-bin/openwebmail/etc/openwebmail.conf
auth_module auth_pam.pl
二、修改/var/www/cgi-bin/openwebmail/etc/auth_pam.conf
servicename openwebmail
passwdfile_plaintext /etc/passwd
check_nologin no
check_shell no
check_cobaltuser no
三、增加/etc/pam.d/openwebmail檔
auth include system-auth
account include system-auth
password include system-auth
session include system-auth
四、修改/var/www/cgi-bin/openwebmail/etc/auth_ldap.conf
ldaphost xx.xx.xx.xx # LDAP SERVER IP
ou people # LDAP ORGANIZATIONAL UNIT
cn 管理者帳號 # LDAP USER
dc1 xxx # FIRST DC
dc2 xxx # SECOND DC
dc3 xxx
dc4 xxx
password PASSWORD # LDAP PASSWORD
change_smbpasswd yes
讓Openwebmail可以修改samba密碼
五、修改/var/www/cgi-bin/openwebmail/auth/auth_pam.pl
在sub change_userpassword這個副程序下,在最後一行return之前,加上修改smbpasswd的程式碼,這段程式碼是從auth_unix.pl修改而來
#change smbpassword begin
my $cmd = '/usr/bin/smbpasswd';
$cmd=ow::tool::untaint($cmd);
if (-x $cmd) {
open(P, "|-") or
do { open(STDERR, ">/dev/null"); exec($cmd, "-L", "-a", "-s", "$pam_user"); exit 9 };
print P "$pam_newpassword\n$pam_newpassword\n";
close(P);
}
#change smbpassword end
至此,完全搞定!感謝諸佛菩薩加持!
另外,還有一個地方要注意,否則參數改到死都不會成功。
由於openwebmail都已經改跑speedy_suidperl,所以參數更改後,必須先將已在運行的speedy_suidperl給kill掉,否則使你改了參數,他還是執行cache的參數,改到死都沒用!
沒有留言:
張貼留言