如何使用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
如果有任何错误,请你告诉我吗?
答案 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
文件所做的相同。