Linux

如何更改 Linux NIS 主機上的密碼?

  • August 21, 2013

這似乎應該很簡單,但如果是這樣,我一定會遺漏一些東西。我有一個 Linux NIS 主機,我希望能夠從中更改使用者的密碼(在忘記密碼和類似情況的情況下),但我不能。

一些細節:我正在執行 Scientific Linux 6.4,帶有 ypserv-2.19-26、ypbind-1.20.4-30 和 yp-tools-2.9-12。NIS 被配置為使用/etc/yp/passwd它的 passwd 映射(即不是系統 passwd 文件)。系統是它自己的客戶端並ypwhich返回“localhost”。

因為非特權使用者不應該登錄到 NIS 主機,我們在 中設置了以下內容/etc/nsswitch.conf

passwd:     files compat

這在結束時/etc/passwd

+::::::/bin/false

此外,/etc/pam.d/passwd還包含標準 RHEL 指令:

password   substack system-auth

/etc/pam.d/system-auth是指向 的符號連結/etc/pam.d/system-auth-ac,其中包含:

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so md5 shadow nis nullok try_first_pass use_authtok
password    required      pam_deny.so

(附帶說明一下,我們使用 md5 而不是 sha512,因為我們有一些不支持 sha512 的 Solaris 客戶端。)

如果我passwd以 root 身份執行,它會提示我輸入新密碼,但無法更改它:

$ sudo passwd phil
Changing password for user phil.
New password: 
Retype new password: 
NIS password could not be changed.
passwd: Authentication token manipulation error

日誌文件 ( /var/log/secure) 沒有幫助:

passwd: pam_unix(passwd:chauthtok): password not changed for phil on ypmaster.domain.tld

相反,如果我執行yppasswd,我可以更改密碼:

$ sudo yppasswd phil
Changing NIS account information for phil on ypmaster.domain.tld.
Please enter root password:
Changing NIS password for phil on ypmaster.domain.tld.
Please enter new password:
Please retype new password:

The NIS password has been changed on ypmaster.domain.tld.

但這需要任何需要重置密碼的系統管理員知道(或從我們鎖定的密碼保險箱中查找)系統的 root 密碼,這是我想避免的情況。

那麼我需要如何配置master來允許我們更改使用者密碼而不必每次都輸入系統的root密碼呢?

正如您所發現的,您不能passwd在 NIS 客戶端上以 root 使用者身份更改 NIS 伺服器上的使用者密碼。這真的是常識安全。

同樣,您發現 yppasswd 需要 root 密碼(在 NIS 伺服器上)才能讓您更改使用者密碼。這是基於您應該是 NIS 管理員(NIS 伺服器上的根)來更改其他人的密碼這一事實的額外安全性。

不幸的是,這種安全性不是您想要的,所以 yppasswd 在這裡遇到了麻煩。

我認為這實際上是一個相對較新的東西,或者是一個特定於作業系統的變體——早在我與 NIS 打交道的 Sun Admin 時代,yppasswd如果你是 NIS 伺服器上的 root,我只是信任你……


由於您的要求(讓授權管理員更改 NIS 密碼),我建議您編寫一個直接編輯 NIS 映射並重建/推送它們的 shell 腳本(或您喜歡的語言)。

您可以通過一些創造性的工作來做到這一點sed,然後授予您的管理員使用sudo.

最終,儘管您可能想要考慮遠離 NIS(LDAP 是替代 NIS 的新熱點,幾乎是一種直接替代,而且更容易管理)。

引用自:https://serverfault.com/questions/532637