目录
useradd选项
批量创建用户
userdel -r
usermod
useradd选项
-D 查看创建用户的默认值
example]# useradd -D
GROUP=100 #新用户会被添加到GID为100的公共组;
HOME=/home #新用户的HOME目录将会位于/home/loginname;
INACTIVE=-1 #新用户账户密码在过期后不会被禁用;
EXPIRE= #新用户账户未被设置过期日期;
SHELL=/bin/bash #新用户账户将bash shell作为默认shell;
SKEL=/etc/skel #系统会将/etc/skel目录下的内容复制到用户的HOME目录下
CREATE_MAIL_SPOOL=yes #系统为该用户账户在mail目录下创建一个用于接收邮件的文件
/etc/skel目录存放的是该用户的环境变量,useradd之后会将/etc/skel目录中的文件复制过来。
useradd 的其他参数
- -c comment 给新用户添加备注
- -d home_dir 为主目录指定一个名字(如果不想用登录名作为主目录名的话)
- -e expire_date 用YYYY-MM-DD格式指定一个账户过期的日期
- -f inactive_days 指定这个账户密码过期后多少天这个账户被禁用; 0表示密码一过期就立即禁用, 1表示
- 禁用这个功能
- -g initial_group 指定用户登录组的GID或组名
- -G group ... 指定用户除登录组之外所属的一个或多个附加组
- -k 必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录
- -m 创建用户的HOME目录
- -M 不创建用户的HOME目录(当默认设置里要求创建时才使用这个选项)
- -n 创建一个与用户登录名同名的新
- -r 创建系统账户
- -p passwd 为用户账户指定默认密码
- -s shell 指定默认的登录shell
- -u uid 为账户指定唯一的UID
?
批量创建用户
#!/bin/bash
# 批量创建用户
# 2022年1月2日17:25:42
# cat user.txt
# ninesun01 123456
# ninesun02 123456
# ninesun03 654321
# 读取如上文件创建用户。
if [ $# -ne 1 ];then
echo "useage: ./createuser.sh user.txt"
exit 1
fi
# 判断是否为file
if [ ! -f $1 ];then
echo "$1 is not a file"
exit 2
fi
IFS=$'\n'
for line in `cat $1`;do
#判断文件中空行
if [ ${#line} -eq 0 ];then # line="ninesun";echo ${#line} -> 7
continue # 如果为空,跳出本次循环不执行后续的useradd
fi
user=`echo $line|awk '{print $1}'`
pass=`echo $line|awk '{print $2}'`
# 判断user是否已存在
id $user &>/dev/null
if [ $? -eq 0 ];then
echo "$user already exist"
else
useradd $user
echo "$pass" | passwd --stdin $user >&/dev/null
if [ $? -eq 0 ];then
echo "$user create successful"
fi
fi
done
userdel -r
ninesun02 03已存在,有两个个warning : home目录已存在、mailbox 已存在。如何删除呢?
userdel -r?这个操作比较危险,最好备份一下用户目录,以免删除重要文件。
usermod
-p修改账户的密码。 -L锁定账户,使用户无法登录。 -U解除锁定,使用户能够登录。
?
|