shell实战案例-批量创建用户

简介: shell实战案例-批量创建用户

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 的其他参数

  1. -c comment 给新用户添加备注
  2. -d home_dir 为主目录指定一个名字(如果不想用登录名作为主目录名的话)
  3. -e expire_date 用YYYY-MM-DD格式指定一个账户过期的日期
  4. -f inactive_days 指定这个账户密码过期后多少天这个账户被禁用; 0表示密码一过期就立即禁用, 1表示
  5. 禁用这个功能
  6. -g initial_group 指定用户登录组的GID或组名
  7. -G group ... 指定用户除登录组之外所属的一个或多个附加组
  8. -k 必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录
  9. -m 创建用户的HOME目录
  10. -M 不创建用户的HOME目录(当默认设置里要求创建时才使用这个选项)
  11. -n 创建一个与用户登录名同名的新
  12. -r 创建系统账户
  13. -p passwd 为用户账户指定默认密码
  14. -s shell 指定默认的登录shell
  15. -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

24798553aabd4cc9ab37adfe2cede799.png

userdel -r

ninesun02 03已存在,有两个个warning : home目录已存在、mailbox 已存在。如何删除呢?

userdel -r 这个操作比较危险,最好备份一下用户目录,以免删除重要文件。

usermod

-p修改账户的密码。

-L锁定账户,使用户无法登录。

-U解除锁定,使用户能够登录。

目录
相关文章
|
2月前
|
Shell
shell脚本实战示例
shell脚本实战示例
57 6
|
2月前
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
61 0
|
3月前
|
Shell Linux C++
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
39 0
|
4月前
|
Shell 索引
shell脚本入门到实战(四)- 数组
shell脚本入门到实战(四)- 数组
|
4月前
|
Shell
shell脚本入门到实战(三) - 变量
shell脚本入门到实战(三) - 变量
|
4月前
|
Shell Linux 人机交互
shell脚本入门到实战(二)--shell输入和格式化输出
shell脚本入门到实战(二)--shell输入和格式化输出
|
4月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
229 0
|
4月前
|
Shell
Shell 三目运算(详细案例)
Shell 三目运算(详细案例)
49 1
|
2月前
|
监控 Shell
Shell脚本实战教学
Shell脚本实战教学
26 5
|
3月前
|
Shell Linux Perl
Shell基础学习---3、Read读取控制台输入、函数、综合应用案例:归档文件、正则表达式入门(第二天学习)
Shell基础学习---3、Read读取控制台输入、函数、综合应用案例:归档文件、正则表达式入门
60 1