問題的提出:
samba缺省是用明文登錄的, 這在安全性上是致命的, 如何解決?
問題的速解:
samba其實也提供了用密文登錄的選擇, 但由於加密登錄機制和明文登錄機制
完全不一樣, 所以samba不得不用另一個密碼文件來記錄各人的密碼.
首先你需要抓回, 編譯並安裝libdes庫, 可以從sepc裡得到(libdes-3.23.tar.gz).
其次, 你需要重新編譯你的samba, 需要自己把Makefile裡
# This is for SMB encrypted (lanman) passWords.
後的四行的注釋符'#'去掉, 並把變量DES_BASE指向正確的地方, 如果你的libdes
是按缺省安裝的話, 那麼應該這樣寫:
DES_BASE=/usr/local/lib
然後重新編譯和安裝你的samba. 你需要自己給smbpasswd加上suid位
chown root /usr/local/samba/bin/smbpasswd
chmod 4555 /usr/local/samba/bin/smbpasswd
接著, 在你的smb.conf的[global]段中加上
encrypt passwords = yes
最後重新生成你的smbpasswd文件,你需要mksmbpasswd.sh, 這在samba的source
路徑下有. 安裝你在Makefile裡的密碼文件的路徑, 如果是缺省則應該是:
cat /etc/passwd mksmbpasswd.sh > /usr/local/samba/private/smbpasswd
然後, chown -R root /usr/local/samba/private
chmod 500 /usr/local/samba/private
chmod 600 /usr/local/samba/private/smbpasswd
現在啟動你的smbd, 此時, 一切都變的安全一點點了...你現在可以用smbpasswd
來改變登錄samba時的密碼.
資源的獲得:
FTP://ftp.sepc.ac.cn/pub/Linux/collect/network/daemons/samba