在 Ubuntu 14.04.2 LTS 上执行以下命令:
adduser fu
然后输入密码bar
并按Enter所有其他问题,创建一个允许我登录并具有以下特征的用户/etc/passwd
:
fu:x:1002:1002:,,,:/home/fu:/bin/bash
但是,做一个:
useradd fu --password bar --groups adm,cdrom,sudo,dip,plugdev,lpadmin --shell /bin/bash --create-home
创建于/etc/passwd
fu:x:1002:1002::/home/fu:/bin/bash
并且不允许我登录和添加--user-group
也无济于事......
根据我的需要useradd
(对于 docker 脚本)我该如何进行?
PS 我已经看过了/usr/sbin/adduser
,但是perl
我不清楚要添加哪些参数才能adduser
具有与useradd
这可能不起作用,因为您的密码
bar
未加密。状态的手册页useradd
:Stack Overflow 上的这个问题有一些答案可能对您的脚本有帮助,因为该问题询问有关添加用户和密码的问题。
由于已接受的答案未根据用户评论更新该问题,因此我将在此处重现该解决方案:
该命令会将用户的密码更改
fu
为bar
. 当然,用户需要使用 useradd 创建。另一种解决方案是使用
chpasswd
,正如投票第二高的答案所暗示的那样:我已经测试了这两种解决方案,它们都有效。
编辑以删除
adduser
信息并指出链接问题中的哪些建议实际有效。问题#1:
用户条目中的逗号
/etc/passwd
只是用户信息的字段分隔符,例如“全名”、“房间号”、“工作电话”和“家庭电话”,所以我猜省略它们与将它们留空是一样的字段;问题#2:
从Trusty
man
页面useradd
:这意味着预期的密码
useradd
是一个已经加密的密码(通过我的测试判断SHA-512
):实际上,作为参数传递给该-p
选项的字符串以纯文本形式写入,/etc/shadow
登录时从此处读取的密码预计将被加密。因此,最直接的解决方案是使用以下方式设置密码
passwd
:如果您不能使用
passwd
,子 shell 中的此 python 命令作为-p
选项的参数应该执行以下操作:命令分解:
python -c 'import crypt; print crypt.crypt("<string>", "$<encryption_type>$<encryption_salt>")'
*<string> = 要加密的字符串;<encryption_type> = 加密类型;<encryption_salt> = 加密盐
加密
<string>
使用<encryption type>
和<encryption_salt>
使用crypt()
库调用在这种情况下:
<string>
=bar
, 加密密码<encryption_type>
=6
,SHA-512
<encryption_salt>
=< /dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32
, 随机32个字符串