用户和组管理
文章目录
各配置文件说明
配置文件 | 作用 |
---|---|
/etc/passwd | 用户及其属性信息(名称、uid、基本组id等等 |
/etc/group | 组及其属性信息 |
/etc/shadow | 用户密码及其相关属性 |
/etc/gshadow | 组密码及其相关属性。在用户执行基本组切换时使用 |
配置文件 | /etc/passwd | /etc/group |
---|---|---|
第一字段 | 用户名 | 组名 |
第二字段 | 密码占位符 | 组密码 |
第三字段 | UID | GID |
第四字段 | GID | 以当前组为附加组的用户列表(分隔符为逗号 |
第五字段 | 用户的描述信息 | |
第六字段 | 用户家目录 | |
第七字段 | 用户的登录shell |
配置文件 | /etc/shadow |
---|---|
第一字段 | 登录名 |
第二字段 | 加密后的密码 |
第三字段 | 最近一次更改密码的日期 |
第四字段 | 密码的最小使用期限 |
第五字段 | 密码的最大使用期限 |
第六字段 | 密码警告时间段 |
第七字段 | 密码禁用期 |
第八字段 | 帐号的过期日期 |
第九字段 | 保留字段 |
加密方式
对称加密:加密和解密使用同一个密钥
公钥加密:每个密码都成对出现,一个为私钥(secret key),一个为公钥(public key)
单向加密:也叫散列加密,提取数据特征码,能加密不能解密,常用于做数据完整性校验
单向加密特点:
- 雪崩效应(初始条件的微小改变,将会引起结果的巨大改变)
- 定长输出
- MD5:Message Digest,128位定长输出
- SHA1:Secure Hash Algorithm,160位定长输出
- SHA224:224位定长输出
- SHA256:256位定长输出
- SHA384:384位定长输出
- SHA512:512位定长输出
useradd 作用:创建用户
- -u 指定用户UID
- -g 指定用户GID(给用户指定一个组)
- -G 给用户添加一个附加组
- -c 给创建的用户添加描述
- -s 给创建的用户指定shell(给用户指定一个操作系统)
- -M 创建用户的时候不给其指定家目录,但系统会自动分配到home默认目录下
- -r 创建一个系统用户
- -D //直接打印/etc/default/useradd文件的内容或配合其它选项
//(例如-s SHELL)直接修改/etc/default/useradd文件中的默认值
[root@localhost ~]# useradd -u 1001 -g 1000 -G root -c ‘这是一个测试账号’ -d /root/zhewang -s /etc/bin/bash zhewwang
[root@localhost ~]# grep zhewang /etc/passwd
zhewwang:x:1001:1000:‘这是一个测试账号’:/root/zhewang:/etc/bin/bash
[root@localhost ~]# id zhewwang
uid=1001(zhewwang) gid=1000(jinxin) 组=1000(jinxin),0(root)
useradd -M //不给用户指定家目录,但是系统会自动分配到home目录下
[root@localhost ~]# useradd -M zhe
[root@localhost ~]# id zhe
uid=1002(zhe) gid=1002(zhe) 组=1002(zhe)
[root@localhost ~]# grep zhe /etc/passwd
zhe:x:1002:1002::/home/zhe:/bin/bash
useradd -r
[root@localhost ~]# useradd -r sir
[root@localhost ~]# id sir
uid=997(sir) gid=995(sir) 组=995(sir)
[root@localhost ~]# usermod -c 这是一个系统测试账户 sir
[root@localhost ~]# grep sir /etc/passwd
sir:x:997:995:这是一个系统测试账户:/home/sir:/bin/bash
userdel 作用:删除用户
- -r 删除用户的同时删除其家目录
userdel 作用:删除用户
[root@localhost ~]# useradd zhe
[root@localhost ~]# id zhe
uid=1000(zhe) gid=1001(zhe) 组=1001(zhe)
[root@localhost ~]# userdel zhe
[root@localhost ~]# id zhe
id: zhe: no such user
//但是这样只删除了用户账号,此用户的家目录和mail还存在系统中
[root@localhost ~]# find / -name zhe
/var/spool/mail/zhe
/home/zhe
[root@localhost ~]# useradd zhe
[root@localhost ~]# id zhe
uid=1000(zhe) gid=1001(zhe) 组=1001(zhe)
[root@localhost ~]# userdel -r zhe
[root@localhost ~]# id zhe
id: zhe: no such user
[root@localhost ~]# find / -name zhe
[root@localhost ~]#
//加了-r删除了以后,此用户在系统中的家目录及mail都会被删除
id 作用:查看账户信息
- -u 查看账户UID
- -g 查看账户GID
- -G 查看账户group
[root@localhost ~]# id zhe
uid=1000(zhe) gid=1001(zhe) 组=1001(zhe),1002(xq)
[root@localhost ~]# id -u zhe
1000
[root@localhost ~]# id -g zhe
1001
[root@localhost ~]# id -G zhe
1001 1002
usermod 作用:修改用户账号属性
- -u 修改账户UID属性
- -G 修改账户GID属性
- -a -G 修改账户附加组属性并且不覆盖以前的组,不加-a直接覆盖之前的所属组
- -d -m 改变用户家目录的同时把原来家目录的文件移动到新的家目录中
- -e YYYY-MM-DD 指明账户的过期日期
- -f YYYY-MM-DD 设定非活动期限,也就是账户过期后还留有一定的时间来更改密码
- -L 锁定账户,被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
- -U 解锁账户
- -s 改变用户的shell
usermod -u -g 作用:修改用户的UID和GID
[root@localhost ~]# grep wang /etc/passwd
wangzhe:x:1005:1003::/home/wangzhe:/bin/bash
[root@localhost ~]# usermod -u 1003 -g 1004 wangzhe
[root@localhost ~]# grep wangzhe /etc/passwd
wangzhe:x:1003:1004::/home/wangzhe:/bin/bash
usermod -a -G 作用:修改账户附加组并且不覆盖以前的组
[root@localhost ~]# id zhesir
uid=1004(zhesir) gid=1005(zhesir) 组=1005(zhesir)
[root@localhost ~]# usermod -a -G 1003 zhesir
[root@localhost ~]# id zhesir
uid=1004(zhesir) gid=1005(zhesir) 组=1005(zhesir),1003(wangzhe)
usermod -d -m 作用:该百年用户家目录并把原来家目录的文件移动到新的家目录中
[root@localhost ~]# grep wangzhe /etc/passwd
wangzhe:x:1003:1004::/tmp/kk:/bin/bash
[root@localhost ~]# touch /tmp/kk/haha
[root@localhost ~]# ls /tmp/kk
haha
[root@localhost ~]# usermod -d /home/wangzhe -m wangzhe
[root@localhost ~]# grep wangzhe /etc/passwd
wangzhe:x:1003:1004::/home/wangzhe:/bin/bash
[root@localhost ~]# ls /home/wangzhe/
haha
//在-d后面加上目的目录地址
user -s 作用:修改账户所使用的shell
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
[root@localhost ~]# grep wangzhe /etc/passwd
wangzhe:x:1003:1004::/home/wangzhe:/bin/bash
[root@localhost ~]# usermod -s /bin/sh wangzhe
[root@localhost ~]# grep wangzhe /etc/passwd
wangzhe:x:1003:1004::/home/wangzhe:/bin/sh
su 作用:切换用户
切换用户方式 | 特点 |
---|---|
su USERNAME | 非登录式切换,即不会读取目标用户的配置文件 |
su - USERNAME | 登录式切换,即会读取目标用户的配置文件,完全切换 |
su - | 不指定用户时默认切换至root用户 |
su - xxx 作用:登陆式切换,直接读取要登陆用户的配置文件,完全切换
[root@localhost ~]# su - wangzhe
上一次登录:四 9月 19 16:04:06 CST 2019pts/0 上
最后一次失败的登录:四 9月 19 16:05:27 CST 2019pts/0 上
最有一次成功登录后有 1 次失败的登录尝试。
[wangzhe@localhost ~]$
su - 作用:不指定用户的时候会默认切换会root账户
[wangzhe@localhost ~]$ su -
密码:
上一次登录:四 9月 19 16:05:35 CST 2019pts/0 上
[root@localhost ~]#
bash的配置文件
配置文件类型 | 配置文件路径 |
---|---|
全局配置 | /etc/profile /etc/profile.d/*.sh /etc/bashrc |
个人配置 | ~/.bash_profile ~/.bashrc |
配置文件类型 | 功能 |
---|---|
profile类 | 为交互式登录的shell提供配置,用来设定环境变量、运行命令或脚本 |
bashrc类 | 为非交互式登录的shell提供配置,用来设定本地变量、定义命令别名 |
登录式shell如何读取配置文件?
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非登录式shell如何读取配置文件?
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
passwd 作用:密码管理
语法:passwd [options] [USERNAME]
- stdin //从标准输入获取用户密码
//例:echo "redhat"|passwd --stdin user1 - -l //锁定用户
- -u //解锁用户
- -n mindays //指定最短使用期限
- -x maxdays //指定最长使用期限
- -w warndays //提前多少天开始警告
- -i inactivedays //非活动期限,密码过期后到禁用前的这段时间
echo ‘123456’ | passwd wangzhe 作用:给用户创建一个密码
[root@localhost ~]# echo '123456' | passwd --stdin wangzhe
更改用户 wangzhe 的密码 。
passwd:所有的身份验证令牌已经成功更新。
passwd -l 作用:锁定某个账户的密码
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe:$6$mPIGfHT0$iiwBaZgDICXiC8nszsTTCP/RNPkwXJ9ubqW8cUOu7FtL/zVimLfEU0wWq5cuWRwCImvf7ZM9G045ZLqwkuWZ/0:18158:0:99999:7:::
[root@localhost ~]# passwd -l wangzhe
锁定用户 wangzhe 的密码 。
passwd: 操作成功
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe:!!$6$mPIGfHT0$iiwBaZgDICXiC8nszsTTCP/RNPkwXJ9ubqW8cUOu7FtL/zVimLfEU0wWq5cuWRwCImvf7ZM9G045ZLqwkuWZ/0:18158:0:99999:7:::
//被锁定的账户在第二段开头会有两个!号
passwd -u 作用:解锁账户密码
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe:!!$6$mPIGfHT0$iiwBaZgDICXiC8nszsTTCP/RNPkwXJ9ubqW8cUOu7FtL/zVimLfEU0wWq5cuWRwCImvf7ZM9G045ZLqwkuWZ/0:18158:0:99999:7:::
[root@localhost ~]# passwd -u wangzhe
解锁用户 wangzhe 的密码。
passwd: 操作成功
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe:$6$mPIGfHT0$iiwBaZgDICXiC8nszsTTCP/RNPkwXJ9ubqW8cUOu7FtL/zVimLfEU0wWq5cuWRwCImvf7ZM9G045ZLqwkuWZ/0:18158:0:99999:7:::
passwd -d 作用:删除账户密码
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe:$6$mPIGfHT0$iiwBaZgDICXiC8nszsTTCP/RNPkwXJ9ubqW8cUOu7FtL/zVimLfEU0wWq5cuWRwCImvf7ZM9G045ZLqwkuWZ/0:18158:0:99999:7:::
[root@localhost ~]# passwd -d wangzhe
清除用户的密码 wangzhe。
passwd: 操作成功
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:0:99999:7:::
//第二段乱码已经没了就是代表密码已经被删除
passwd -n 作用:修改账户密码最短使用期限
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:0:99999:7:::
[root@localhost ~]# passwd -n 8 wangzhe
调整用户密码老化数据wangzhe。
passwd: 操作成功
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:8:99999:7:::
passwd -x 作用:修改账户密码最长使用期限
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:8:99999:7:::
[root@localhost ~]# passwd -x 10 wangzhe
调整用户密码老化数据wangzhe。
passwd: 操作成功
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:8:10:7:::
passwd -w 作用:提前多少天开始提示用户更换密码
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:8:10:7:::
[root@localhost ~]# passwd -w 20 wangzhe
调整用户密码老化数据wangzhe。
passwd: 操作成功
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:8:10:20:::
passwd -i 作用:用户密码已经到期后还可以使用多久
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:8:10:20:::
[root@localhost ~]# passwd -i 30 wangzhe
调整用户密码老化数据wangzhe。
passwd: 操作成功
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:8:10:20:30::
chage 作用:改变用户密码过期信息命令
语法:chage [options] USERNAME
- -d //最近一次的修改时间
- -E //过期时间
- -I //非活动时间
- -m //最短使用期限
- -M //最长使用期限
- -W //警告时间
chage -d 作用:最近一次更改密码的日期
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::18158:8:10:20:30::
[root@localhost ~]# chage -d 69 wangzhe
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:8:10:20:30::
//这个不需要管理,只要更新了密码,第三段会自动更改
chage -E 作用:更改账号的过期时间
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:8:10:20:30::
[root@localhost ~]# chage -E 年-月-日 wangzhe
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:8:10:20:30:222:
chage -I 作用:用户密码已经到期后还可以使用多久
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:8:10:20:30:222:
[root@localhost ~]# chage -I 888 wangzhe
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:8:10:20:888:222:
//和passwd -i 命令同样的作用
chage -m 作用:修改账户密码最短使用期限
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:8:10:20:999:222:
[root@localhost ~]# chage -m 6666 wangzhe
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:6666:10:20:999:222:
//和passwd -m 命令的作用一样
chage -M 作用:
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:777:10:20:999:222:
[root@localhost ~]# chage -M 99999 wangzhe
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:777:99999:20:999:222:
//和passwd -x 命令的作用一样
chage -W 作用:提前多少天开始提示用户更换密码
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:777:555555:20:999:222:
[root@localhost ~]# chage -W 999999 wangzhe
[root@localhost ~]# grep wangzhe /etc/shadow
wangzhe::69:777:555555:999999:999:222:
//和passwd -w 命令的作用一样
openssl 作用:密码生成工具
语法:openssl command [ command_opts ] [ command_args ]
- command //包含标准命令、消息摘要命令、加密命令
- version //查看程序版本号
- dgst //提取特征码
- passwd //生成密码
- rand //生成伪随机数
openssl passwd -1 -salt xxxxxxxx 作用:生成加密后的密码
[root@localhost ~]# openssl passwd -1 -salt jinxinruntian //jinxinruntian 是你加入密码里面的杂质
Password: //此处密码为:123456
$1$jinxinru$HSIyROhBWD38pgNJQGoyQ/
openssl rand -bash64 作用:生成伪随机数
[root@localhost ~]# openssl rand -base64 20
2jmfGEom6VmHW9ZmoviUnmNnr60=
group组管理
groupadd 作用:创建组
语法:group [options] GROUP
- -g GID //指定GID
- -r //添加一个系统组
groupadd 作用:创建一个组
[root@localhost ~]# groupadd jinxin
[root@localhost ~]# grep jinxin /etc/group
jinxin:x:1006:
group -g 作用:指定这个组的GID
[root@localhost ~]# groupadd -g 1009 runtian
[root@localhost ~]# grep runtian /etc/group
runtian:x:1009:
group -r 作用:创建一个系统组
[root@localhost ~]# groupadd -r jinxinruntian
[root@localhost ~]# grep jinxinruntian /etc/group
jinxinruntian:x:995:
groupmod 作用:修改组信息
语法:groupmod [options] GROUP
- -g GID //修改指定组的GID
- -n groupname //修改组名
groupmod -g 作用:修改组ID
[root@localhost ~]# grep jinxinruntian /etc/group
jinxinruntian:x:995:
[root@localhost ~]# groupmod -g 1090 jinxinruntian
[root@localhost ~]# grep jinxinruntian /etc/group
jinxinruntian:x:1090:
groupmod -n 作用:修改组名称
[root@localhost ~]# grep jinxinruntian /etc/group
jinxinruntian:x:1090:
[root@localhost ~]# groupmod -n weijunqiang jinxinruntian
[root@localhost ~]# grep weijunqiang /etc/group
weijunqiang:x:1090:
groupdel 作用:删除组
[root@localhost ~]# groupdel weijunqiang
[root@localhost ~]# grep weijunqiang /etc/group
[root@localhost ~]#
gpasswd 作用:给组创建密码
语法:gpasswd [option] GROUP
- -a, --add USER //将用户添加至组
- -d, --delete USER //将用户从组中删除
- -r, --delete-password //删除组密码
gpasswd 作用给组创建一个密码
[root@localhost ~]# gpasswd jinxin
正在修改 jinxin 组的密码
新密码:
请重新输入新密码:
[root@localhost ~]#
gpasswd -a 作用:添加用户到组里面
[root@localhost ~]# gpasswd -a wangzhe jinxin
正在将用户“wangzhe”加入到“jinxin”组中
[root@localhost ~]# id wangzhe
uid=1003(wangzhe) gid=1004(zhe) 组=1004(zhe),1003(wangzhe),1006(jinxin)
gpasswd -d 作用:将用户从组里面删除
uid=1003(wangzhe) gid=1004(zhe) 组=1004(zhe),1003(wangzhe),1006(jinxin)
[root@localhost ~]# gpasswd -d wangzhe jinxin
正在将用户“wangzhe”从“jinxin”组中删除
[root@localhost ~]# id wangzhe
uid=1003(wangzhe) gid=1004(zhe) 组=1004(zhe),1003(wangzhe)
gpsswd -r 作用:删除组密码
[root@localhost ~]# grep jinxin /etc/gshadow
jinxin:$6$eqpQSiGAdY/wj$cKBrgVPQAKT15t0xqv55kjVnAmKvO1seBA/Qdp5ZvxA7BfBB6zVLlybTNDON0O2CIRyHdWPPPwJDufuo4kFMh1::
[root@localhost ~]# gpasswd -r jinxin
[root@localhost ~]# grep jinxin /etc/gshadow
jinxin:::wangzhe
newgrp 作用:普通用户临时切换组
语法:newgrp [-] [group]
[wangzhe@localhost ~]$ id
uid=1003(wangzhe) gid=1006(jinxin) 组=1006(jinxin),1003(wangzhe),1004(zhe) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[wangzhe@localhost ~]$ newgrp runtian
密码:
[wangzhe@localhost ~]$ id
uid=1003(wangzhe) gid=1007(runtian) 组=1007(runtian),1003(wangzhe),1004(zhe),1006(jinxin) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[wangzhe@localhost ~]$ exit
exit
[wangzhe@localhost ~]$ id
uid=1003(wangzhe) gid=1006(jinxin) 组=1006(jinxin),1003(wangzhe),1004(zhe) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023