如何使用useradd或类似命令添加用户?

时间:2011-10-22 11:49:55

标签: linux bash

如何使用useradd或类似命令在linux bash脚本上添加用户。

同时复制位于/etc/skel/的启动脚本,并更改​​已添加的用户的密码。

user1=$1
read -p "Enter your home name" home_name
read -p "Enter your login shell" loginshell
echo "$user1:x:500:500:$user1:/home/$home_name:$loginshell" >> /etc/passwd 
echo "$user1:x:500:" >> /etc/group
mkdir /home/$home_name
chmod 744 /home/$home_name
cp -pr /etc/skel/.bashrc /home/$home_name
echo "$user1: " >> /etc/shadow
echo "`passwd` $user1"

执行此脚本后我得到了错误

passwd: Authentication token manipulation error

如果有任何错误,请你告诉我吗?

3 个答案:

答案 0 :(得分:2)

您应该解释为什么要这样做。在我的观察中,这是一个坏主意。特别是,因为它不能很好地处理所有各种系统(例如,某些Linux系统使用LDAP进行用户身份验证等)。

我相信您的第echo "$user1: " >> /etc/shadow行是错误的。在/ etc / shadow文件的内容中查看(使用sudo),您将了解内部条目不仅仅是用户名后跟冒号。

但实际上,你应该使用 useradd adduser 来做到这一点。你冒着完全破坏你的系统的风险。

答案 1 :(得分:1)

你应该替换

echo "`passwd` $user1"

passwd $user1

输入第一个密码。

但除此问题外,您还添加了具有相同user-id和group-id的所有新用户。因此,技术上没有新用户,但有一个用户有几个“别名”。在撰写500/etc/passwd时,您必须替换/etc/group才能解决问题。

另一个大问题是,用户的新主目录和启动脚本不属于他,而是属于root。您可以在某处添加chown -R $user1:$user1 /home/$homename

答案 2 :(得分:0)

对于您正在创建的群组,您还应该拥有echo "$user1: " >> /etc/gshadow之类的内容。与您为用户和shadow文件所做的相同。