linux用户管理(useradd、userdel、usermod、groupadd、groupdel、chage、passwd、chpasswd)

用户管理
一、用户账户配置文件介绍
/etc/passwd 用户账户信息文件
/etc/shadow 用户账户密码文件
/etc/group 用户组信息文件
/etc/gshadow 用户组密码所在文件(基本废弃)
/etc/default/useradd 新增账户的默认属性配置
/etc/login.defs 新增用户的属性信息

总结:
useradd 命令会修改/etc/passwd 、/etc/shadow、/etc/group 、/etc/gshadow (同时创建用户与用户组)
passwd 命令会修改/etc/shadow
groupadd命令会修改/etc/group 、/etc/gshadow

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
添加用户时,会修改上述4个文件---------文件md5值会发生变化
[root@oldboyedu ~]# md5sum /etc/passwd /etc/shadow /etc/group /etc/gshadow
2fe9f002726ed0a138d67cd44722f1a6 /etc/passwd
c2ca41415dca17f1a3dc3c286a9b9bff /etc/shadow
c475144a13d87a400b5e16fe6bd70baf /etc/group
659ef4f533df0fa7e457f87755fb1c27 /etc/gshadow

[root@oldboyedu ~]# useradd bingbing

[root@oldboyedu ~]# md5sum /etc/passwd /etc/shadow /etc/group /etc/gshadow
39d60eff90ecd0326fe59e6464b464ad /etc/passwd
0aa8d3b157f042876ec0190a2808a377 /etc/shadow
cee8bc6e85f9dfb9dc0a04e452e834f4 /etc/group
cdfd26351f409ee32fca53a22ad15912 /etc/gshadow

[root@oldboyedu ~]# grep bingbing /etc/passwd /etc/shadow /etc/group /etc/gshadow
/etc/passwd:bingbing:x:1004:1006::/home/bingbing:/bin/bash
/etc/shadow:bingbing:!!:17980:0:99999:7:::
/etc/group:bingbing:x:1006:
/etc/gshadow:bingbing:!:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/etc/passwd文件 用户账户信息文件

root: x: 0: 0: root: /root: /bin/bash
用户名 密码 uid gid 用户描述 用户家目录 用户登录的shell

CentOS7默认shell为bash,bash是sh的扩展,sh是bash的软连接
[root@oldboyedu ~]# awk -F ":" '{print $NF}' /etc/passwd|sort|uniq -c
6 /bin/bash
1 /bin/sync
1 /sbin/halt
18 /sbin/nologin
1 /sbin/shutdown

[root@oldboyedu ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/etc/shadow 用户账户密码文件

nobody 用户名
:* 密码 (!!为未设置密码,设置密码后为长长字符串)
:17834 最近更改密码的时间,自1970年1月1日起的天数
:0 禁止修改密码的时间,即两次修改密码的最少间隔时间
:99999 用户必须修改密码的天数,99999天约270年,自1970年1月1日起
:7 提示修改密码的时间,即密码到期前7天提示修改密码
: 密码过期到禁用账户的间隔天数
: 用户被禁用的天数,自1970年1月1日起
: 标志,保留字段
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/etc/group 用户组信息文件

扫描二维码关注公众号,回复: 6894801 查看本文章

mail :x :12 :mail,postfix
用户组名 用户组密码 gid 用户组成员
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/etc/default/useradd 新增账户的默认属性配置

[root@ 55test ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 #如果useradd没有指定组,并且/etc/login.defs中的USERGROUPS_ENAB为no或者useradd使用了-N选项时,此时该参数生效。创建用户时使用此组ID
HOME=/home #在此目录下创建用户家目录
INACTIVE=-1 #用户过期后账户停权,默认-1表示不启用过期停权
EXPIRE= #账户过期日期,默认为空,表示账户永不过期
SHELL=/bin/bash #新增用户默认shell
SKEL=/etc/skel #默认文件(.bash_logout .bash_profile .bashrc)拷贝路径
CREATE_MAIL_SPOOL=yes #创建邮件文件


此文件修改方法:
1、useradd -D -s /bin/sh #修改默认shell
2、vim /etc/default/useradd

/etc/skel 提供用户环境变量配置文件,由此目录向新增用户家目录添加环境变量配置文件
/etc/login.defs 新增用户的属性信息
[root@ 55test ~]# cat /etc/login.defs |grep -v "#"

MAIL_DIR /var/spool/mail #邮件目录

PASS_MAX_DAYS 99999 #密码修改间隔最大天数
PASS_MIN_DAYS 0 #密码修改间隔最小天数
PASS_MIN_LEN 5 #密码最小长度
PASS_WARN_AGE 7 #密码过期前开始提示天数

UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999

GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999


CREATE_HOME yes #默认是否为用户创建家目录

UMASK 077 #默认umask

USERGROUPS_ENAB yes #默认为用户创建用户组

ENCRYPT_METHOD SHA512 #默认用户密码加密方式

二、用户账户配置操作
useradd 添加用户
-s 用户登录shell
-M 不创建家目录
-u 指定uid
-g 指定用户的属组
-c 添加说明
-d 指定家目录
-e 用户登录截止日期。
[root@ 55test ~]# useradd -u 1555 -M -s /bin/sh -e ' 20190730' -c "what" ppl

[root@ 55test ~]# tail -1 /etc/passwd
ppl:x:1555:1555:what:/home/ppl:/bin/sh

[root@ 55test ~]# chage ppl -l
Last password change : Jul 25, 2019
Password expires : never
Password inactive : never
Account expires : May 05, 57250
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7


chage 查看账户密码过期属性
-l 显示属性信息
-E 密码过期时间
-I 密码过期后账户禁用间隔天数
-m 密码修改间隔最小天数
-M 密码修改间隔最大天数
-W 密码过期前开始提示的天数
[root@ 55test ~]# chage -l lili
Last password change : Sep 21, 2019 #最近一次修改密码时间
Password expires : Nov 20, 2019 #密码过期时间,过期后强制修改密码,-E参数修改
Password inactive : Dec 20, 2019 #密码停权时间,即因密码过期而停用账户的时间,-I参数修改,默认-1表示不停权
Account expires : never #账户过期时间
Minimum number of days between password change : 7 #密码修改间隔最小天数,-m参数
Maximum number of days between password change : 60 #密码修改间隔最大天数。-M参数
Number of days of warning before password expires : 7 #密码过期前开始提示的天数,-W参数

userdel 删除用户
工作中常先用#注释账户来停用账户,一段时间后再删除账户
-r 删除用户家目录及家目录中文件

usermod 修改用户账户属性

-s 用户登录shell
-u 指定uid
-g 指定用户的属组
-c 添加说明
-d 指定家目录
-e 用户登录截止日期。

[root@ 55test ~]# usermod -u 1556 -g kkk -s /bin/bash -e ' 20200730' -c "what the hell" ppl
[root@ 55test ~]#
[root@ 55test ~]# tail -1 /etc/passwd
ppl:x:1556:1004:what the hell:/home/ppl:/bin/bash
[root@ 55test ~]#
[root@ 55test ~]# chage -l ppl
Last password change : Jul 25, 2019
Password expires : never
Password inactive : never
Account expires : Sep 20, 57277
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
[root@ 55test ~]#
[root@ 55test ~]# id ppl
uid=1556(ppl) gid=1004(kkk) groups=1004(kkk)


passwd 修改密码
--stdin 从标准输入接收密码
-e 强制用户下次登录时修改密码
-l 锁定账户
-u 解除锁定
-d 删除用户密码
-i 密码过期后禁用账户的天数

非交互方式修改密码:
方法一:
[root@localhost ~]# echo 12345 |passwd --stdin lili
Changing password for user lili.
passwd: all authentication tokens updated successfully.

方法二:(CentOS 6.X执行成功,CentOS 7.X中切换用户时报错)
[root@localhost ~]# echo 123 >pass
[root@localhost ~]# passwd --stdin kkk <pass
Changing password for user kkk.
passwd: all authentication tokens updated successfully


chpasswd 批量修改密码
方法一:
CentOS 6.X
[root@localhost ~]# cat user
lili:kll
kkk:kll
lll:kll
[root@localhost ~]# chpasswd<user


CentOS 6.X 与 CentOS 7.X
[root@localhost ~]# cat user
lili:kll
kkk:kll
lll:kll
[root@ 55test ~]# chpasswd
lili:kll #此处粘贴文本
kkk:kll
ppl:kll #输入结束后按ctrl+d


方法二:
[root@ 55test ~]# tail -4 /etc/passwd|awk -F ":" '{print $1":ppp"}'|chpasswd

批量创建用户
echo boy{1..10}|xargs -n1|sed 's#.*#useradd &;echo &|passwd --stdin &#'|bash
echo boy{01..10}|xargs -n1|sed -rn 's#(.*)#useradd \1;echo 123456|passwd --stdin \1 #gp'|bash


批量删除用户
echo boy{1..10}|xargs -n1|sed 's#.*#userdel -r &#'|bash

猜你喜欢

转载自www.cnblogs.com/00huajiang/p/11263796.html