欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

shell脚本自动创建用户设置家目录等

程序员文章站 2022-06-30 16:36:24
...

useradd命令基础

  • useradd 用来创建用户帐号
  • 通过 passwd 设定帐号的密码
  • userdel 删除用户帐号所有信息
  • useradd 创建的用户信息,保存在 /etc/passwd 文件
用法:useradd [选项] 登录
      useradd -D
      useradd -D [选项]

选项:
  -b, --base-dir BASE_DIR	    新账户的主目录的基目录
  -c, --comment COMMENT         新账户的 GECOS 字段
  -d, --home-dir HOME_DIR       新账户的家目录
  -D, --defaults		        显示或更改默认的 useradd 配置
  -e, --expiredate EXPIRE_DATE  新账户的过期日期
  -f, --inactive INACTIVE       新账户的密码不活动期
  -g, --gid GROUP		        新账户主组的名称或 ID
  -G, --groups GROUPS	        新账户的附加组列表
  -h, --help                    显示此帮助信息并推出
  -k, --skel SKEL_DIR	        使用此目录作为骨架目录
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -l, --no-log-init	            不要将此用户添加到最近登录和登录失败数据库
  -m, --create-home	            创建用户的主目录
  -M, --no-create-home		    不创建用户的主目录
  -N, --no-user-group	        不创建同名的组
  -o, --non-unique		        允许使用重复的 UID 创建用户
  -p, --password PASSWORD	    加密后的新账户密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL		        新账户的登录 shell
  -u, --uid UID			        新账户的用户 ID
  -U, --user-group		        创建与用户同名的组
  -Z, --selinux-user SEUSER		为 SELinux 用户映射使用指定 SEUSER

命令行管理用户

  • 添加用户
 useradd    [参数]    用户名
1、默认设置
# useradd redhat
# tail -n1 /etc/passwd
redhat:x:1001:1001::/home/redhat:/bin/bash
# id redhat
uid=1001(redhat) gid=1001(redhat) groups=1001(redhat)
2、指定用户家目录
# mkdir /data/
# useradd -d /data/centos/ centos 
# tail -n1 /etc/passwd
centos:x:1002:1002::/data/centos:/bin/bash
# id centos
uid=1002(centos) gid=1002(centos) groups=1002(centos)
3、指定用户家目录、用户组(一定是已经存在的用户组!)

# cat /etc/group | grep users    ## 查看已存在的 users 用户组
users:x:100:

# useradd -d /data/ubuntu/ -g users ubuntu
# tail -n1 /etc/passwd
ubuntu:x:1003:100::/data/ubuntu/:/bin/bash
# id ubuntu
uid=1003(ubuntu) gid=100(users) groups=100(users)
## 常用的参数
-u    指定用户uid

-g    指定用户初始组信息,这个组必须已经存在

-G    指定附加组,这个组必须存在

-c    用户说明

-d    用户家目录

-s    用户所使用的shell,/etc/shells记录了用户能使用shell的名
  • 删除用户
userdel   -r   用户名      ## -r 表示删除用户信息及用户的系统配置
# userdel -r centos
  • 用户信息更改
(5) 用户信息更改

usermod   参数     用户

		 -l      #  更改用户名称
		
		 -u      #  更改uid
		
		 -g      # 更改gid
		
		 -G      # 更改附加组
		
		 -aG     # 添加附加组
		
		 -c      # 更改说明
		
		 -d      # 更改家目录指定
		
		 -md     # 更改家目录指定及家目录名称
		
		 -s      # 更改shell
		
		 -L      # 冻结帐号
		
		 -U      # 解锁
## 更改用户redhat的家目录
# usermod -d /data/redhat  redhat   
## 更改用户redhat的用户组
# usermod -g users redhat  
# id redhat
uid=1001(redhat) gid=1001(redhat) groups=1001(redhat)
# usermod -l redhat02 redhat  # 更改用户名redhat为redhat02
# id redhat
id: redhat: no such user
# id redhat02
uid=1001(redhat02) gid=1001(redhat) groups=1001(redhat)
  • 用户权限下放

在系统中超级用户可以下放普通用户不能执行的操作命令给普通用户

超级用户执行 visudo 进入编辑 /etc/sudoers模式
格式: 用户  用户所在的主机名 =(下放权限的用户身份) 命令
## 查看主机名
[aaa@qq.com ~]# hostname
server2
## 新增用户hadoop
# useradd hadoop -d /data/hadoop -g users
## 设置密码
# passwd hadoop
## 超级用户root 执行 visudo
[aaa@qq.com ~]# visudo
## 找到第 90 行
      ## Allow root to run any commands anywhere
      root    ALL=(ALL)       ALL
      
## 在其后添加(可以执行yum,kill,killall,并且不需要输入用户密码)
	 ## Allow hadoop to run any commands anywhere
	hadoop  server2=(root)   NOPASSWD:/usr/bin/yum, /bin/kill,/usr/bin/kill, /usr/bin/killall
hadoop用户能在server2主机内以超级用户身份执行 NOPASSWD执行 yum,kill,killall命令,并且不用输入该用户密码

下放权限前后对比

shell脚本自动创建用户设置家目录等shell脚本自动创建用户设置家目录等

脚本自动化创建用户

[aaa@qq.com ~]# vim useraddSRE.sh 
#!/bin/sh

## default setting
user='kafka'
group='users'
dir='/data/'
homedir=$dir$user
password='aaa@qq.com'

## add the account
useradd -d $homedir -g $group $user >/dev/null

## modify the validity period of the account and password
chage -M 99999 $user
echo $user:$password | chpasswd >/dev/null

## create a directory and change its permissions
[ ! -d $homedir ] && mkdir /data/
chown -R $user:$group $homedir >/dev/null
chmod -R 644 $homedir >/dev/null
cd $homedir

chage用法

chage命令 是用来修改帐号和密码的有效期限

chage  [选项]  用户
用法:chage [选项] 用户

选项:
  -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
  -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
  -h, --help                    显示此帮助信息并推出
  -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
  -l, --list                    显示帐户设置信息
  -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
  -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
  -R, --root CHROOT_DIR         chroot 到的目录
  -W, --warndays 警告天数       将过期警告天数设为“警告天数”

/etc/login.defs 默认设定了几个参数,以后设置口令可以按照此文件的参数设定为准

PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

也可以在/etc/default/useradd可以找到如下2个参数进行设置

## useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。

[aaa@qq.com ~]# chage -l kafka

shell脚本自动创建用户设置家目录等

举例!  设置密码过期7天后,密码自动失效,该用户将无法登陆系统。

[aaa@qq.com ~]# chage -M 60 kafka   ## 设置密码最大过期时间为60天
[aaa@qq.com ~]# chage -I 7 kafka    ## 设置密码失效时间为7天
[aaa@qq.com ~]# chage -l kafka      ## 查看设置信息

shell脚本自动创建用户设置家目录等

文件的拥有属性

  • chgrp 改变文件或目录的用户组
# chgrp -R root /data/kafka/
  • chown 改变文件或目录的拥有者
# chown -R root /data/kafka/
  • 同时改变文件或目录的拥有者和用户组
# chown kafka.users /data/kafka/
# chown root:root /data/kafka/

shell脚本自动创建用户设置家目录等