Bad*_*one 21 useradd password centos ftp shadow
在尝试为 vsftpd 创建新的 FTP 用户时,我偶然发现了这个问题。使用以下命令创建新用户并尝试使用 FileZilla 登录后,我会收到“密码不正确”错误。
useradd f -p pass -d /home/f -s /bin/false
Run Code Online (Sandbox Code Playgroud)
这样做之后,/etc/shadow包含
f:pass:1111:0:99:2:::
Run Code Online (Sandbox Code Playgroud)
一旦我运行以下命令并提供相同的通行证
passwd f
Run Code Online (Sandbox Code Playgroud)
/etc/shadow包含
f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::
Run Code Online (Sandbox Code Playgroud)
似乎在我运行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
Run Code Online (Sandbox Code Playgroud)
为什么当我传递-p pass给 useradd时它不起作用?我需要做什么才能让它发挥作用?
kas*_*erd 44
这是按预期工作的。如果您想使用该useradd命令设置密码,您应该将密码的散列版本提供给useradd.
该字符串pass确实满足 中散列密码字段的格式标准/etc/shadow,但该字符串没有实际的密码散列。结果是,出于所有意图和目的,该帐户将表现为拥有密码,但您尝试用于访问它的任何密码都将被拒绝,因为它不是正确的密码。
请参阅man useradd或useradd 文档:
-p,--password密码crypt(3)返回的加密密码。默认是禁用密码。
注意:不建议使用此选项,因为列出进程的用户将可以看到密码(或加密密码)。
您应该确保密码符合系统的密码策略。
fak*_*ker 32
man用户地址:
-p, --password PASSWORD
The encrypted password, as returned by crypt(3). The default is to
disable the password.
Run Code Online (Sandbox Code Playgroud)
您应该将散列密码传递给它。
不是明文密码。
Den*_*son 16
useradd期望您将密码的哈希值传递给它,而不是密码本身。您可以对命令使用以下变体来为命令提供散列密码useradd:
useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false
Run Code Online (Sandbox Code Playgroud)
要找出可用的方法,请使用:
mkpasswd --method=help
Run Code Online (Sandbox Code Playgroud)
为了避免在命令行上传递密码,将密码放在一个文件中(使用编辑器而不是使用echo或类似的)并执行以下操作:
useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false
Run Code Online (Sandbox Code Playgroud)
这将在命令行上传递散列密码,但不会传递明文密码。
mkpasswd随expect包提供。
| 归档时间: |
|
| 查看次数: |
7165 次 |
| 最近记录: |