2011-05-26 44 views
3

想象一下,由舊的crypt crypt DES哈希組成的NIS用戶數據庫/var/yp/input-files/passwd。目標是將此數據庫遷移到md5或散列哈希。當使用yppasswd更改密碼時,它使用與現有條目相同的算法(可能出於遺留原因)生成,即crypt保留crypt,md5保留md5NIS yppasswd哈希從crypt到md5的遷移

我們目前的計劃是編寫一個包裝yppasswd的特殊密碼更改腳本。有沒有更好的方法來告訴yppasswd默認生成md5格式的密碼?

回答

2

我想通了現在:

  1. 下載分發的NIS-例如包Debian下的apt-get source nis
  2. 編輯相應的YP-工具-2.9/src目錄/ yppasswd.c
  3. 通過int has_md5_passwd = 1;int main (int argc, char **argv)

yppasswd年初更換int has_md5_passwd = 0;則始終創建MD5哈希值。

+0

這並不完全適用於yp-tools 2.12中的yppasswd。如果你走這條路線,你需要在'main'的頂部設置'int hash_id = MD5;'並註釋掉'hash_id = get_hash_id(pwd-> pw_passwd);'後面的行。 – asciiphil 2013-01-25 20:35:30

1

最近的Linux發行版通過PAM支持NIS密碼更新,這意味着您可以使用本地passwd程序而不是yppasswd。這也意味着您可以配置散列算法,該算法仍然(如yp-tools 2.12)不可能與yppasswd一起使用。

您的系統應該有一個/etc/pam.d/passwd文件,要麼含有,或者更可能的是,指的是包含一行形式的另一個文件:

password sufficient pam_unix.so md5 nis 

第二場可能會有所不同,而有可能是其他參數在最後,但你要加載的passwordpam_unix.so,它應該至少具有nis參數以及適用於您的NIS服務器(md5sha256等)

您的分佈可能哈希函數HAV儘管如此,更好的配置方式是確保您的更改不會被稍後的自動化過程覆蓋。

在RedHat派生系統(至少包括RHEL,CentOS,Scientific Linux和Fedora)上,您至少需要使用authconfig程序--enablenis參數。對於MD5哈希值以上的情況下,下面的命令行就足夠了:

authconfig --enablenis --usemd5 --update 

在Debian系統(也可能是Debian的衍生品,但我不能在此刻檢查),要做到這一點似乎有道將/usr/share/pam-configs/unix複製到別的東西(比如/usr/share/pam-configs/nis),編輯新文件以給它適當的設置和新的配置文件名稱,然後運行pam-auth-update,禁用「Unix身份驗證」配置文件並啓用新的配置文件。