Centos

useradd 不在 /etc/shadow 中加密密碼

  • March 1, 2021

在嘗試為 vsftpd 創建新的 FTP 使用者時,我偶然發現了這個問題。使用以下命令創建新使用者並嘗試使用 FileZilla 登錄時,我會收到“密碼錯誤”錯誤。

useradd f -p pass -d /home/f -s /bin/false

這樣做之後,/etc/shadow包含

f:pass:1111:0:99:2:::

一旦我執行以下命令並提供相同的通行證

passwd f

/etc/shadow包含

f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::

似乎在我執行passwd時會發生加密,但不會在useradd時發生

重要的是,在這樣做之後,我可以使用完全相同的憑據登錄 FTP。

我使用 CentOS 5.11,vsftpd 用於 FTP,FileZilla 用於 FTP 訪問

/var/log/secure包含:

Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false

**-p pass為什麼當我傳遞給 useradd時它不起作用?**我需要做什麼才能使其工作?

這是按預期工作的。如果要使用該useradd命令設置密碼,則應該將密碼的雜湊版本提供給useradd.

該字元串pass確實滿足 中散列密碼欄位的格式標準/etc/shadow,但該字元串沒有實際的密碼散列。結果是,出於所有意圖和目的,該帳戶將表現為具有密碼,但您嘗試用於訪問它的任何密碼都將被拒絕,因為它不是正確的密碼。

請參閱man useradduseradd 文件

-p,--password 密碼

crypt(3)返回的加密密碼。預設是禁用密碼。

注意:不推薦使用此選項,因為密碼(或加密密碼)將對列出程序的使用者可見。

您應該確保密碼遵守系統的密碼策略。

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