用户和组管理
目录
bash的配置文件:
配置文件类型 | 配置文件路径 |
---|---|
全局配置 | /etc/profile |
/etc/profile.d/*.sh | |
/etc/bashrc | |
个人配置 | ~/.bash_profile |
~/.bashrc | |
配置文件类型 功能 | |
profile类 为交互式登录的shell提供配置,用来设定环境变量、运行命令或脚本 | |
bashrc类 为非交互式登录的shell提供配置,用来设定本地变量、定义命令别名 |
用户组类型
用户组类别 | 特性 |
---|---|
私有组 | 创建用户时,如果没有为其指定所属的组, |
系统会自动为其创建一个与用户名相同的组 | |
基本组 | 用户的默认组 |
附加组(额外组) | 默认组以外的其它组 |
配置文件信息
配置文件 | 作用 |
---|---|
/etc/passwd | 用户及其属性信息(名称、uid、基本组id等等) |
/etc/group | 组及其属性信息 |
/etc/shadow | 用户密码及其相关属性 |
/etc/gshadow | 组密码及其相关属性。在用户执行基本组切换时使用 |
配置文件 | /etc/passwd | /etc/group |
---|---|---|
第一字段 | 用户名 | 组名 |
第二字段 | 密码占位符 | 组密码 |
第三字段 | UID | GID |
第四字段 | GID | 以当前组为附加组的用户列表(分隔符为逗号) |
第五字段 | 用户的描述信息 | |
第六字段 | 用户家目录 | |
第七字段 | 用户的登录shell |
配置文件 | /etc/shadow |
---|---|
第一字段 | 登录名 |
第二字段 | 加密后的密码 |
第三字段 | 最近一次更改密码的日期 |
第四字段 | 密码的最小使用期限 |
第五字段 | 密码的最大使用期限 |
第六字段 | 密码警告时间段 |
第七字段 | 密码禁用期 |
第八字段 | 帐号的过期日期 |
第九字段 | 保留字段 |
用户创建命令useradd
- 语法:useradd [option] USERNAME
- -u UID 指定用户UID,[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
- -g GID 指定用户所属基本组,可为组名或GID,组groupname必须事先存在
- -G groupname,... 附加组,可以有多个,用逗号隔开。组groupname必须事先存在
- -c "COMMENT" 注释信息(或用户描述)
- -d /path/to/directory 指定用户的家目录。此目录必须不能事先存在,否则将不会从/etc/skel中复制环境设置文件
- -s shell 这里的shell最好使用/etc/shells里面有的shell,/etc/shells指定了当前系统可用的安全shell
- -M 创建用户时不给其创建家目录
- -r 添加一个系统用户(系统用户不用登陆不用家目录配合-M -s nologin使用)
- -D 直接打印/etc/default/useradd文件的内容或配合其它选项(例如-s SHELL)直接修改/etc/default/useradd文件中的默认值
- useradd [option] USERNAME
[root@hostnamectl ~]# useradd tianxiadiyi
[root@hostnamectl ~]# tail -1 /etc/passwd
tianxiadiyi:x:1006:1006::/home/tianxiadiyi:/bin/bash
- -g 指定组(指定组时组必须先存在)
[root@hostnamectl ~]# tail -1 /etc/group
guilai:x:1005:
[root@hostnamectl ~]# useradd -u 1005 -g 1005 -G root -c "my world" -d /home/world -s /bin/bash guilai
[root@hostnamectl ~]# tail -1 /etc/passwd
guilai:x:1005:1005:my world:/home/world:/bin/bash
创建组groupadd
- groupadd [options] GROUP
-g GID //指定GID
-r //添加一个系统组
hostnamectl ~]# groupadd -g 1008 xiaobai
[root@hostnamectl ~]# grep xiaobai /etc/group
xiaobai:x:1008:
id 查看用户的帐号属性信息
- id 查看用户的帐号属性信息
-u : 查看UID
-g : 查看GID
-G : 查看Groups
[root@hostnamectl ~]# id guilai
uid=1005(guilai) gid=1005(guilai) 组=1005(guilai),0(root)
用户删除命令userdel
- userdel [option] USERNAME
-r:删除用户的同时删除其家目录(userdel默认不会删除其家目录)
[root@hostnamectl ~]# userdel tianxiadiyi
[root@hostnamectl ~]# id tianxiadiyi
id: tianxiadiyi: no such user
删除组命令groupdel
- groupdel [options] GROUP
[root@hostnamectl ~]# grep xiaobai /etc/group
xiaobai:x:1008:
[root@hostnamectl ~]# groupdel xiaobai
[root@hostnamectl ~]# grep xiaobai /etc/group
[root@hostnamectl ~]#
修改用户帐号属性的命令
- usermod 修改用户属性
- usermod [options] username
-u :UID
-g :GID
-a -G groupname: 不使用-a选项,会覆盖此前的附加组
-d -m : 改变用户家目录的同时把原来家目录的文件移动到新的家目录中
-e :YYYY-MM-DD 指明用户帐号过期日期
-f :INACTIVE 设定非活动期限
-L : 锁定帐号,被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
-U : 解锁帐号
chsh 修改用户的默认shell (建议用-s 更简单)
chsh [options] [username]
-s: SHEL - -u修改账户UID (UID不能重复)
[root@hostnamectl ~]# usermod -u 10002 guilai
[root@hostnamectl ~]# id guilai
uid=10002(guilai) gid=1005(guilai) 组=1005(guilai),0(root)
- -g 修改用户基本组
[root@hostnamectl ~]# usermod -g 1007 guilai
[root@hostnamectl ~]# id guilai
uid=10002(guilai) gid=1007(tianxaidiyi) 组=1007(tianxaidiyi),0(root)
- -a -G修改用户附加组
[root@hostnamectl ~]# grep swordsman /etc/group
swordsman:x:1008:
[root@hostnamectl ~]# usermod -a -G 1008 guilai
[root@hostnamectl ~]# id guilai
uid=10002(guilai) gid=1007(tianxaidiyi) 组=1007(tianxaidiyi),0(root),1008(swordsman)
- -G覆盖用户附加组
[root@hostnamectl ~]# id guilai
uid=10002(guilai) gid=1007(tianxaidiyi) 组=1007(tianxaidiyi),1008(swordsman)
- -d修改用户家目录(文件不会移动只移动家目录地址)
[root@hostnamectl ~]# usermod -d /opt/world guilai
[root@hostnamectl ~]# grep guilai /etc/passwd
guilai:x:10002:1007:my world:/opt/world:/bin/bash
- -d -m修改用户家目录(包括家目录里所有文件)
[root@hostnamectl ~]# mkdir -p /opt/world/abc
[root@hostnamectl ~]# usermod -d /home/guilai -m guilai
[root@hostnamectl ~]# grep guilai /etc/passwd
guilai:x:10002:1007:my world:/home/guilai:/bin/bash
[root@hostnamectl ~]# ls /home/
guilai/ world/
[root@hostnamectl ~]# ls /home/guilai/
abc
- -L : 锁定帐号,被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:$6$8xpOiM55$1rmh9cE7t3ttiDvG.P5SUlcVBoaO29J48Np1pjwDHaemQN.OTuIwjQn9Fi0/.dEivY8J7XkWRvsCJddHvMeII0:18158:0:99999:7:::
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:!$6$8xpOiM55$1rmh9cE7t3ttiDvG.P5SUlcVBoaO29J48Np1pjwDHaemQN.OTuIwjQn9Fi0/.dEivY8J7XkWRvsCJddHvMeII0:18158:0:99999:7:::
- -U :解锁帐号
[root@hostnamectl ~]# usermod -U guilai
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:$6$8xpOiM55$1rmh9cE7t3ttiDvG.P5SUlcVBoaO29J48Np1pjwDHaemQN.OTuIwjQn9Fi0/.dEivY8J7XkWRvsCJddHvMeII0:18158:0:99999:7:::
- -s:修改用户shell
[root@hostnamectl ~]# usermod -s /bin/sh guilai
[root@hostnamectl ~]# grep guilai /etc/passwd
guilai:x:10002:1007:my world:/home/guilai:/bin/sh
修改组信息命令groupmod
- groupmod [options] GROUP
- -g修改指定组的UID
[root@hostnamectl ~]# grep Hermit /etc/group
Hermit:x:1010:
- -n groupname 修改组名
[root@hostnamectl ~]# groupmod -n Devil Hermit
[root@hostnamectl ~]# grep Devil /etc/group
Devil:x:1010:
切换用户命令su
切换用户的方式 | 特点 |
---|---|
su USERNAME | 非登录式切换,即不会读取目标用户的配置文件 |
su - USERNAME | 登录式切换,即会读取目标用户的配置文件。完全切换 |
su - | 不指定用户时默认切换至root用户 |
配置文件类型 | 功能 |
---|---|
profile类 | 为交互式登录的shell提供配置,用来设定环境变量、运行命令或脚本 |
bashrc类 | 为非交互式登录的shell提供配置,用来设定本地变量、定义命令别名 |
-
root su至其他用户不需要密码,非root用户su至其他用户时需要输入目标用户的密码
-
su [options] [-] [USER [arg]...]
-
su - username 登录式切换,即会读取目标用户的配置文件。完全切换
[root@hostnamectl ~]# su - guilai
上一次登录:四 9月 19 17:50:54 CST 2019pts/0 上
[guilai@hostnamectl ~]$ pwd
/home/guilai
- su username 非登录式切换,即不会读取目标用户的配置文件
[root@hostnamectl ~]# su guilai
[guilai@hostnamectl root]$ pwd
/root
- su - :其他用户登陆root
不指定用户时默认切换至root用户
-c 'COMMAND' 切换身份执行命令,命令执行结束后又回到原来的身份
[root@hostnamectl ~]# su - doom -c 'touch a'
[root@hostnamectl ~]# ls /home/doom/
a
密码管理命令passwd
- passwd [options] [USERNAME]
- passwd 修改密码
[root@hostnamectl ~]# passwd guilai
更改用户 guilai 的密码 。
新的 密码:
- --stdin 从标准输入获取用户密码,例:echo "redhat"|passwd --stdin user1
[root@hostnamectl ~]# echo '123' |passwd --stdin guilai
更改用户 guilai 的密码 。
passwd:所有的身份验证令牌已经成功更新。
- -l: 锁定用户
- -u : 解锁用户
- -d : 删除用户密码
- -n mindays 指定最短使用期限
[root@hostnamectl ~]# passwd -n 10 guilai
调整用户密码老化数据guilai。
passwd: 操作成功
- -x maxdays 指定最长使用期限
[root@hostnamectl ~]# passwd -x 1000 guilai
调整用户密码老化数据guilai。
passwd: 操作成功
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:$6$tzRXztt8$V/dBaNOSefO.NwdL1.Rwqg2CnhSsrTlL.PlmJ2F/mY3CimCxzDeJ2m2qiWEfMbFyb4uPdSFr0aOZ3iJBV/h5H.:18158:10:1000:7:::
- -w warndays 提前多少天开始警告
[root@hostnamectl ~]# passwd -w 970 guilai
调整用户密码老化数据guilai。
passwd: 操作成功
[root@hostnamectl ~]# grep guilai /etc/shadow
guilai:$6$tzRXztt8$V/dBaNOSefO.NwdL1.Rwqg2CnhSsrTlL.PlmJ2F/mY3CimCxzDeJ2m2qiWEfMbFyb4uPdSFr0aOZ3iJBV/h5H.:18158:10:1000:970:::
- -i inactivedays 非活动期限,密码过期后到禁用前的这段时间(修改密码缓冲时间)
[root@hostnamectl ~]# passwd -i 30 guilai
调整用户密码老化数据guilai。
passwd: 操作成功
改变用户密码过期信息命令chage
- chage [options] USERNAME
- -l:列出用户以及密码的有效期
[root@hostnamectl ~]# passwd -i 30 guilai
调整用户密码老化数据guilai。
passwd: 操作成功
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间 :9月 19, 2019
密码过期时间 :6月 15, 2022
密码失效时间 :7月 15, 2022
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :1000
在密码过期之前警告的天数 :970
- -d:指定密码最后修改日期 (chage -d 30 表示在改变用户密码30天后密码自动失效或 YYYY-MM-DD 后失效)
[root@hostnamectl ~]# chage -d 2019-09-20 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间 :9月 20, 2019 // 最近一次修改密码时间
密码过期时间 :6月 16, 2022
密码失效时间 :7月 16, 2022
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :1000
在密码过期之前警告的天数 :970
用户第一次登陆就要改密码
[root@hostnamectl ~]# chage -d 0 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :1000
在密码过期之前警告的天数 :970
- -E:过期时间
[root@hostnamectl ~]# chage -E 2019-09-30 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间 :9月 20, 2019
密码过期时间 :6月 16, 2022
密码失效时间 :7月 16, 2022
帐户过期时间 :9月 30, 2019 //过期时间
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :1000
在密码过期之前警告的天数 :970
- -I:非活动时间
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间 :9月 20, 2019
密码过期时间 :6月 16, 2022
密码失效时间 :7月 17, 2022 //密码失效时间
帐户过期时间 :9月 30, 2019
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :1000
在密码过期之前警告的天数 :970
- -m:最短使用期限
[root@hostnamectl ~]# chage -m 7 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间 :9月 20, 2019
密码过期时间 :6月 16, 2022
密码失效时间 :7月 17, 2022
帐户过期时间 :9月 30, 2019
两次改变密码之间相距的最小天数 :7 //最短使用期限
两次改变密码之间相距的最大天数 :1000
在密码过期之前警告的天数 :970
- -M:最长使用期限
[root@hostnamectl ~]# chage -M 100 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间 :9月 20, 2019
密码过期时间 :12月 29, 2019
密码失效时间 :1月 29, 2020
帐户过期时间 :9月 30, 2019
两次改变密码之间相距的最小天数 :7
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :970 //最长使用期限
- -W:警告时间
[root@hostnamectl ~]# chage -W 60 guilai
[root@hostnamectl ~]# chage -l guilai
最近一次密码修改时间 :9月 20, 2019
密码过期时间 :12月 29, 2019
密码失效时间 :1月 29, 2020
帐户过期时间 :9月 30, 2019
两次改变密码之间相距的最小天数 :7
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :60 //警告时间
密码生成工具openssl
-
openssl command [ command_opts ] [ command_args ]
-
dgst :提取特征码
[root@hostnamectl ~]# openssl dgst -md5 /etc/fstab
MD5(/etc/fstab)= cfd02cb5d1c01774a7284abc7a887f24
- passwd :生成密码,"asdfghjk"是添加的杂质
- openssl passwd -1 -salt string
[root@hostnamectl ~]# openssl passwd -1 -salt asdfghjk
Password:
$1$asdfghjk$k5FsdUb517DwcRnATU3hK.
- rand:生成伪随机数
-openssl rand -base64 NUM //NUM表示随机数的长度
[root@hostnamectl ~]# openssl rand -base64 10
g2nSOFq1x35ABA==
给组设定密码命令gpasswd
- gpasswd [option] GROUP
- gpasswd
doom:x:1021:
[root@hostnamectl ~]# gpasswd doom
正在修改 doom 组的密码
新密码:
请重新输入新密码:
- -a, --add USER 将用户添加至组
[root@hostnamectl ~]# gpasswd -a guilai doom
正在将用户“guilai”加入到“doom”组中
- -d, --delete USER 将用户从组中删除
[root@hostnamectl ~]# gpasswd -d guilai doom
正在将用户“guilai”从“doom”组中删除
- -r, --delete-password 删除组密码
[root@hostnamectl ~]# gpasswd -r doom
切换组命令newgrp
- newgrp [-] [group]
[root@hostnamectl ~]# gpasswd doom
正在修改 doom 组的密码
新密码:
请重新输入新密码:
[guilai@hostnamectl ~]$ id
uid=1020(guilai) gid=1007(tianxaidiyi) 组=1007(tianxaidiyi),1008(swordsman) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@hostnamectl ~]# su - guilai
上一次登录:四 9月 19 19:36:49 CST 2019pts/0 上
[guilai@hostnamectl ~]$ newgrp doom
密码:
uid=1020(guilai) gid=1021(doom) 组=1021(doom),1007(tianxaidiyi),1008(swordsman) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[guilai@hostnamectl ~]$