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解除锁定,使用户能够登录。

目录
相关文章
|
5月前
|
Shell
shell脚本实战示例
shell脚本实战示例
80 6
|
5月前
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
103 0
|
5月前
|
Shell Linux C++
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
94 0
|
5月前
|
Shell 索引
shell脚本入门到实战(四)- 数组
shell脚本入门到实战(四)- 数组
|
5月前
|
Shell
shell脚本入门到实战(三) - 变量
shell脚本入门到实战(三) - 变量
|
5月前
|
Shell Linux 人机交互
shell脚本入门到实战(二)--shell输入和格式化输出
shell脚本入门到实战(二)--shell输入和格式化输出
332 0
|
11天前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
27 2
|
1月前
|
网络协议 关系型数据库 MySQL
Shell 脚本案例
Shell 脚本案例
36 8
|
4月前
|
移动开发 监控 安全
【实战指南】从零构建嵌入式远程Shell,提升跨地域协作效率
构建嵌入式远程Shell的文章概述: - 目标:解决嵌入式软件测试中的远程调试难题,提供轻量级解决方案。 - 功能:包括远程交互、命令执行与反馈,强调多客户端并发连接和稳定性。 - 设计:基于Socket服务端架构,使用I/O多路复用和popen函数,确保命令执行与结果反馈。 - 需求:支持命令解析、执行和结果回传,考虑网络不稳定情况下的连接保持。 - 安全性:仅限内部调试,未详细讨论加密等安全措施。 - 实现:关注点在Socket服务端程序,包括监听、数据过滤和命令处理。 - 测试:通过 Telnet 和Windows网络助手验证连接和命令执行功能。
296 61
|
5月前
|
监控 Shell
Shell脚本实战教学
Shell脚本实战教学
57 5