用户和组管理

目录


本章节目标:

了解什么是用户什么是组

了解Linux用户和组的相关配置文件

了解用户和组相关的管理命令

概念部分:

用户和组的概念:

用户存在的目的是为了实现资源的分派

用户分类:

【管理员root:0】

【系统用户:1-1000】

【普通用户:10001-60000】

运行中的程序:

进程 :【以进程的发起者身份运行】【进程所能访问的权限来自于发起者的权限】

Linux通过安全上下文的概念完成用户权限的指派【先判断用户是否是某文件的属主】【再判断用户是否属于某个组】【最后定其为其他用户】

Linux用户组类别

用户组类别特性
私有组创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名相同的组
基本组用户的默认组
附加组默认组以为的其他组

各配置文件说明

配置文件作用
/etc/passwd用户及其属性信息(名称、uid、基本组id等等)
/etc/group组及其属性信息
/etc/shadow用户密码及其相关属性
/etc/gshadow组密码及其相关属性。在用户执行基本组切换时使用
配置文件/etc/passwd/etc/group
第一字段用户名组名
第二字段密码占位符组密码
第三字段UIDGID
第四字段GID以当前组为附加组的用户列表(分隔符为逗号)
第五字段用户的描述信息
第六字段用户家目录
第七字段用户的登录shell
配置文件/etc/shadow
第一字段登录名
第二字段加密后的密码
第三字段最近一次更改密码的日期
第四字段密码的最小使用期限
第五字段密码的最大使用期限
第六字段密码警告时间段
第七字段密码禁用期
第八字段帐号的过期日期
第九字段保留字段

加密方法

对称加密:加密和解密使用同一个密钥

公钥加密:每个密码都成对出现,一个为私钥(secret key),一个为公钥(public key)

单向加密:也叫散列加密,提取数据特征码,能加密不能解密,常用于做数据完整性校验

单向加密特点:
    雪崩效应(初始条件的微小改变,将会引起结果
    定长输出

实验部分:用户和组相关的管理命令

用户创建命令useradd:

使用格式:useradd [option] username

[option]:

-u UID  //[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
-g GID      //指定用户所属基本组,可为组名或GID
-G groupname,...    //附加组,可以有多个,用逗号隔开。组groupname必须事先存在
-c "COMMENT"        //注释信息
-d /path/to/directory       //指定用户的家目录。此目录必须不能事先存在, \
                            //否则将不会从/etc/skel中复制环境设置文件
-s shell        //这里的shell最好使用/etc/shells里面有的shell, \
                // /etc/shells指定了当前系统可用的安全shell
-M          //创建用户时不给其创建家目录
-r          //添加一个系统用户

实验操作【-u -g -G -c -d -s】

[root@sh ~]# useradd sh -u 1001 -g 1001 -G xx,ss -c'ssss' -d /opt/sh -s /bon/nologin 
[root@sh ~]# id sh
uid=1001(sh) gid=1001(taoist) 组=1001(taoist),1003(xx),1004(ss)
[root@sh ~]# ls /opt/
sh
[root@sh ~]# cat /etc/passwd | tail -4 
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
wangqing:x:1000:1002:wuliangtianzun:/home/wangqing:/bin/csh
sh:x:1001:1001:ssss:/opt/sh:/bon/nologin

实验操作【-M】

[root@sh ~]# useradd -M ww
[root@sh ~]# ls /home
wangqing

实验操作【-r】

[root@sh ~]# useradd -r lk
[root@sh ~]# id lk
uid=997(lk) gid=995(lk) 组=995(lk)

用户删除命令userdel:

使用格式:user [option] username

[option]:

-r  [删除用户时同时删除其家目录(默认情况下不会删除家目录)]

实验操作【-r】

[root@sh ~]# userdel -r wangqing 
[root@sh ~]# ls /home
[root@sh ~]#

查看用户账号的信息命令id:

使用格式:id [option] username

[option]

-u //查看UID
-g //查看GID
-G //查看组

实验操作【-u -g -G】

[root@sh ~]# id sh
uid=10000(sh) gid=1001(taoist) 组=1001(taoist),1003(xx),1004(ss)
[root@sh ~]# id -u sh
10000
[root@sh ~]# id -g sh
1001
[root@sh ~]# id -G sh
1001 1003 1004

修改用户账号属性的命令:

使用格式:usermod [option] username

[option]

-u UID
-g GID
-a -G groupname    //不使用-a选项,会覆盖此前的附加组
-d -m   //改变用户家目录的同时把原来家目录的文件移动到新的家目录中
-e YYYY-MM-DD       //指明用户帐号过期日期
-f INACTIVE         //设定非活动期限
-L      //锁定帐号。
        //被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
-U      //解锁帐号

//chsh  修改用户的默认shell
//语法:chsh [options] [username]
-s SHELLL

实验操作【-u -g -a -G -d -m】

[root@sh ~]# id jjyy
uid=10001(jjyy) gid=10001(jjyy) 组=10001(jjyy)
[root@sh ~]# usermod -u 10002 -g 1001 -a -G 100 jjyy
[root@sh ~]# id jjyy
uid=10002(jjyy) gid=1001(taoist) 组=1001(taoist),100(users)
root@sh ~]# usermod -d /opt/123 -m jjyy
[root@sh ~]# ls /opt/
123  jjyy  sh
[root@sh ~]# ls /home/
[root@sh ~]#

实验操作【-e -f -L 】

[root@sh ~]# usermod -e 2019-03-20 -f 7 -L jjyy
[root@sh ~]# chage -l jjyy
最近一次密码修改时间					:5月 28, 2019
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:3月 20, 2019
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	:7
[root@sh ~]# ssh jjyy@192.168.91.132
The authenticity of host '192.168.91.132 (192.168.91.132)' can't be established.
ECDSA key fingerprint is SHA256:QZ4qPvKv8db35i50VU7HAAVwv5zfmP92dvVEdYwJtpE.
ECDSA key fingerprint is MD5:a9:63:73:a8:40:4a:5f:4f:3b:85:51:0f:02:58:72:12.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': y
Please type 'yes' or 'no': y

用户切换命令su:

使用格式:su [-] username

切换用户的方式特点
su USERNAME非登录式切换,即不会读取目标用户的配置文件
su - USERNAME登录式切换,即会读取目标用户的配置文件。完全切换
su -不指定用户时默认切换至root用户

实验操作

[root@sh ~]# su - jjyy
上一次登录:三 5月 29 00:04:57 CST 2019pts/0 上
[jjyy@sh ~]$

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 [option] [username]
[option]:

--stdin     //从标准输入获取用户密码, \
            //例:echo "redhat"|passwd --stdin user1
-l      //锁定用户
-u      //解锁用户
-d      //删除用户密码
-n mindays      //指定最短使用期限
-x maxdays      //指定最长使用期限
-w warndays     //提前多少天开始警告
-i inactivedays     //非活动期限,密码过期后到禁用前的这段时间

实验操作【-stdin】

[root@sh ~]# echo "123456" | passwd --stdin jjyy
更改用户 jjyy 的密码 。
passwd:所有的身份验证令牌已经成功更新。

实验操作【-l】

[root@sh ~]# passwd -l jjyy
锁定用户 jjyy 的密码 。
passwd: 操作成功

实验操作【-u】

[root@sh ~]# passwd -u jjyy
解锁用户 jjyy 的密码。
passwd: 操作成功

实验操作【-d】

[root@sh ~]# passwd -d jjyy
清除用户的密码 jjyy。
passwd: 操作成功

实验操作【-n -x -w -i】

[root@sh ~]# passwd -n 2 -x 7 -w 5 -i 3 jjyy
调整用户密码老化数据jjyy。
passwd: 操作成功
[root@sh ~]# chage -l jjyy
最近一次密码修改时间					:5月 28, 2019
密码过期时间					:6月 04, 2019
密码失效时间					:6月 07, 2019
帐户过期时间						:12月 12, 2020
两次改变密码之间相距的最小天数		:2
两次改变密码之间相距的最大天数		:7
在密码过期之前警告的天数	:5

改变用户密码过期信息命令chage:

使用格式:chage [option] username

[option]

-d      //最近一次的修改时间
-E      //过期时间
-I      //非活动时间
-m      //最短使用期限
-M      //最长使用期限
-W      //警告时间

实验操作【-d】

[root@sh ~]# chage -d 1 jjyy
[root@sh ~]# chage -l jjyy
最近一次密码修改时间					:1月 02, 1970
密码过期时间					:1月 09, 1970
密码失效时间					:1月 12, 1970
帐户过期时间						:12月 12, 2020
两次改变密码之间相距的最小天数		:2
两次改变密码之间相距的最大天数		:7
在密码过期之前警告的天数	:5

实验操作【-E】

[root@sh ~]# chage -E 2030-12-30 jjyy
[root@sh ~]# chage -l jjyy
最近一次密码修改时间					:1月 02, 1970
密码过期时间					:1月 09, 1970
密码失效时间					:1月 12, 1970
帐户过期时间						:12月 30, 2030
两次改变密码之间相距的最小天数		:2
两次改变密码之间相距的最大天数		:7
在密码过期之前警告的天数	:5

实验操作【-I】

[root@sh ~]# chage -I 10 jjyy
[root@sh ~]# chage -l jjyy
最近一次密码修改时间					:1月 02, 1970
密码过期时间					:1月 09, 1970
密码失效时间					:1月 19, 1970
帐户过期时间						:12月 30, 2030
两次改变密码之间相距的最小天数		:2
两次改变密码之间相距的最大天数		:7
在密码过期之前警告的天数	:5

实验操作【-m】

[root@sh ~]# chage -m 20 jjyy
[root@sh ~]# chage -l jjyy
最近一次密码修改时间					:1月 02, 1970
密码过期时间					:1月 09, 1970
密码失效时间					:1月 19, 1970
帐户过期时间						:12月 30, 2030
两次改变密码之间相距的最小天数		:20
两次改变密码之间相距的最大天数		:7
在密码过期之前警告的天数	:5

实验操作【-M】

[root@sh ~]# chage -M 50 jjyy
[root@sh ~]# chage -l jjyy
最近一次密码修改时间					:1月 02, 1970
密码过期时间					:2月 21, 1970
密码失效时间					:3月 03, 1970
帐户过期时间						:12月 30, 2030
两次改变密码之间相距的最小天数		:20
两次改变密码之间相距的最大天数		:50
在密码过期之前警告的天数	:5

实验操作【-W】

[root@sh ~]# chage -W 10 jjyy
[root@sh ~]# chage -l jjyy
最近一次密码修改时间					:1月 02, 1970
密码过期时间					:2月 21, 1970
密码失效时间					:3月 03, 1970
帐户过期时间						:12月 30, 2030
两次改变密码之间相距的最小天数		:20
两次改变密码之间相距的最大天数		:50
在密码过期之前警告的天数	:10

密码生成工具openssl:

使用格式:openssl command [commmand_opts] [comand_args]

command     //包含标准命令、消息摘要命令、加密命令
    version     //查看程序版本号
    dgst        //提取特征码
    passwd      //生成密码
    rand        //生成伪随机数

实验操作【vresion】

[root@sh ~]# openssl  version
OpenSSL 1.0.2k-fips  26 Jan 2017

实验操作【dgst】

[root@sh ~]# openssl dgst -md5 /etc/fstab 
MD5(/etc/fstab)= 2ed3a1cb4c50baaf4a7a0ebaa97f9c85

实验操作【passwd】

[root@sh ~]# openssl passwd -1 -salt jjyy
Password: 
$1$jjyy$eiFPyIJZ5lnGddpF9mdxU.

实验操作【rand】

[root@sh ~]# openssl rand -base64 20
hcXGyI0rNEuQ04HZLlIMv5pOK1s=

创建组命令groupadd:

使用格式:groupadd [opention] group

[option]:

-g GID //指定GID
-r     //添加一个系统组

实验操作【-g】

[root@sh ~]# groupadd -g 123 hh
[root@sh ~]# cat /etc/group | grep  hh
hh:x:123:

实验操作【-r】

[root@sh ~]# groupadd -r  kk
[root@sh ~]# cat /etc/group | grep  kk
kk:x:994:

修改组信息命令groupmod:

使用格式:gropmod [option] group

[opention]:

-g GID //修改指定组的GID
-n groupname //修改组名

实验操作【-g】

[root@sh ~]# groupmod -g 321 hh
[root@sh ~]# cat /etc/group | grep hh
hh:x:321:

实验操作【-n】

[root@sh ~]# groupmod -n ll hh
[root@sh ~]# cat /etc/group | grep ll
ll:x:321:

删除组命令groupdel:

使用格式:groupdel [option] group

实验操作

[root@sh ~]# groupdel ll
[root@sh ~]# cat /etc/group | grep ll
[root@sh ~]#

给组设定密码命令gpasswd:

使用格式:gpasswd [opton] group

[option]:

-a, --add USER      //将用户添加至组
-d, --delete USER   //将用户从组中删除
-r, --delete-password   //删除组密码

实验操作【-a】

[root@sh ~]# gpasswd -a jjyy kk
正在将用户“jjyy”加入到“kk”组中

实验操作【-d】

[root@sh ~]# gpasswd -d jjyy kk
正在将用户“jjyy”从“kk”组中删除

实验操作【-r】

[root@sh ~]# gpasswd kk
正在修改 kk 组的密码
新密码:
请重新输入新密码:
[root@sh ~]# gpasswd -r kk

组的删除groupdel

实验操作

[root@sh ~]# groupdel ll
[root@sh ~]# cat /etc/group | grep ll
[root@sh ~]#

给组设定密码命令gpasswd:

使用格式:gpasswd [opton] group

[option]:

-a, --add USER      //将用户添加至组
-d, --delete USER   //将用户从组中删除
-r, --delete-password   //删除组密码

实验操作【-a】

[root@sh ~]# gpasswd -a jjyy kk
正在将用户“jjyy”加入到“kk”组中

实验操作【-d】

[root@sh ~]# gpasswd -d jjyy kk
正在将用户“jjyy”从“kk”组中删除

实验操作【-r】

[root@sh ~]# gpasswd kk
正在修改 kk 组的密码
新密码:
请重新输入新密码:
[root@sh ~]# gpasswd -r kk
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值