Linux结构与其中的用户及组

Linux的倒树形结构

linux是一个倒树型结构,最大的目录名称叫“/” (根目录),下面有着很多的二级目录存放着不同的配置文件(什么…你说你把根目录删了…emmm…跑路吧,祝福你)

linux系统中的二级目录

/bin ## 二进制可执行文件,系统常规命令
/boot ## 启动目录,存放系统自动启动文件,内核,初始化程序
/dev ## 系统设备管理文件
/etc ## 大多数系统配置文件存放路径
/home ## 普通用户家目录
/lib ## 函数库
/lib64/ ## 64位函数库
/media ## 临时挂载点
/mnt ## 临时挂载点
/run ## 自动临时设备挂载点
/opt ## 第三方软件安装路径
/proc ## 系统硬件信息和系统进程信息
/root ## 超级用户家目录
/sbin ## 系统管理命令,通常只有root可以执行
/srv ## 系统数据目录
/var ## 系统数据目录
/sys ## 内核相关数据
/tmp ## 临时文件产生目录
/usr/ ## 用户相关信息数据

一但把上面的文件删坏了,系统可就完蛋了

Linux中对于用户与组的操作

1.用户存在的意义

类似于一个合法的身份信息(就像你的身份证号)
回收权利

2.组存在的意义

便于区分管理用户之间的身份、权限差别(级别的区分)
共享权利

3.用户的查看

1)查看当前用户
whoami ##查看当前用户
在这里插入图片描述
2)系统中用户的查看
id ##查看指定用户id信息
-u ##查看用户的uid(用户id【身份证号】)
-g ##查看用户的gid(初始组【家庭住址】)
-G ##查看用户所在的所有组的id(包括附加组【所享受的不同的权力与义务】)
在这里插入图片描述
####初始组每个用户只有一个,代表了最基础的分组
####附加组可以有很多个,以此来区分管理不同用户的权限

用户切换

1)gnome-session-quit [–force] ##注销当前用户,再用其他用户登录
2)su - 用户名称
su - 中“-”表示在用户身份切换时同时切换当前用户的环境
su - 执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要,平级用户切换也需要密码
在这里插入图片描述

注意:每使用一次su命令,就会多出来一个bash进程,过多的bash会导致程序出错,所以每次使用su命令之后最好要使用exit或者logout退出,最多保持有两个bash

在这里插入图片描述

用户在系统中的存储方式

/etc/passwd
###用户信息文件
用户名称:密码:uid:gid:说明:家目录:默认shell(有哪些能用可以查看/etc/shells)
在这里插入图片描述
/etc/group
用户组信息文件
组的名字:组密码:组id:组成员
在这里插入图片描述
/etc/shadows
认证信息文件(密码)
在这里插入图片描述
/etc/skel/.*
默认开启shell的配置,用户的骨文件
在这里插入图片描述
/home/username
用户的家目录

文件的监控:watch [-n 频率] +命令(对于命令的按频率执行,ctrl+c退出)

在这里插入图片描述
意思是以每秒一次的频率执行cat /etc/passwd这个命令
在这里插入图片描述

用户管理命令

在下面的实验进行前,由于实验结果很难直接看到,所以我们需要一些准备工作:
打开一个terminal,输入命令
在这里插入图片描述
这个命令的意思是以每秒一次的频率监控/etc/passwd这个文件的后三行
这样我们就可以在每条命令敲完后直观的看到我们的命令对于用户管理的作用

用户的删除

以图中的tom用户为例,现在我们可以看到图中文件的最后一行有一个名为tom的用户
userdel #用户删除命令
userdel student ##删除用户但不删除用户的配置文件在这里插入图片描述
我们再次打开一个terminal,输入userdel tom这个命令,执行命令,我们会看到上面的tom被删掉了
在这里插入图片描述
但是这个时候我们再次建立同样的一个用户时,却被系统报错,为什么呢
在这里插入图片描述
可以看到,虽然我们建立成功了,但是也是被系统提示有问题,这是因为我们删除tom这个用户时,并没有删除干净,tom的家目录以及配置文件都还在,自然会出现问题,而如果我们需要彻底地删除一个用户的话,就需要下面的这个命令:
userdel -r student##删除用户并删除用户的配置文件
在这里插入图片描述
这样删除干净之后再建立的话就不会被系统提示错误

用户建立

useradd##建立用户时,读取/etc/login.defs文件内容确定规则
/etc/login.defs文件如下
在这里插入图片描述
useradd -u **** westos ##制定用户uid
在这里插入图片描述
建立了一个uid为1086的用户tom
useradd -g ** westos ##制定用户初始组id,“**用户组必须是存在的”
在这里插入图片描述
建立了一个gid为10的用户tom
useradd -G ** westos##制定用户的附加组id“**用户组必须是存在的”
在这里插入图片描述
建立一个用户附加组id为10,这是我们打开文件/etc/group可以看到wheel组里多了一个tom
useradd -c “*****” westos##指定用户的说明
在这里插入图片描述
我们可以看到在新建立的用户tom后有一个“abc”的描述
useradd -d /home/lee westos##指定用户的家目录
如果你制定了一个不存在的家目录,你会发现用户还是可以正常建立,并且系统会自动帮你创建这个目录
useradd -s /bin/sh westos##指定用户的默认shell
shell就是用户的操作命令与系统内核沟通的桥梁,不同的shell有不同的用途和表现方式

输入命令watch -n 1 cat /etc/group来监控用户组的变化

groupadd ##建立用户组
在这里插入图片描述
建立了一个名为redhat的用户组
groupadd -g *** ##建立用户组并制定用户组的id
在这里插入图片描述
建立了一个gid为10086的用户组
groupdel##删除用户组
在这里插入图片描述
可以看到,redhat用户组已经被删除

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

更改用户信息

usermod后面加上不同的参数就能实现不同的功能
1.-l 新名字 需要更新的旧名字 ##更改用户名字
在这里插入图片描述
原本有一个用户叫做tom,现在在terminal中输入命令usermod -l harry tom,执行在这里插入图片描述
可以看到原本的tom改成了harry
2.-u 用户新uID 需要更改的用户 #更改用户uid
在这里插入图片描述
可以看到harry的uid变成了1004
3.-g 用户新gID 需要更改的用户 #更改用户gid(gid 初始组的id)
在这里插入图片描述
可以看到harry的gid变成了1000
4.-G 用户附加组 需要更改的用户 #更改一个用户的附加组(但是只是删除原来的,添加后来的(-aG 是只添加,不删除))
在这里插入图片描述
将harry的附加组改为chrony,
在这里插入图片描述
但是从这里可以看出-G这个参数只是单纯的将用户原来的附加组删掉,并给予一个新的附加组身份,而想要在不改变原来附加组的情况下增加一个附加组要用-aG参数,命令如下
在这里插入图片描述
可以看到,在不改变原来附加组的情况下,为harry用户新增加了一个chrony附加组。
5.-G “”(双引号单引号都行(’’)) 需要清空附加组的用户 #清空用户附加组
在这里插入图片描述
可以看到harry的附加组都被删除
6.-c “*”(两个双引号之间什么都不加就是删除) 需要更改的用户 #更改用户说明信息
在这里插入图片描述
例如上图中harry用户的说明是abc,然后我们敲下如下命令
在这里插入图片描述
我们可以看到用户的描述变成了123
7.-s 想要换成的shell 需要更改的用户 #更改用户的shell
8.-d 更改的家目录 需要更改的用户 #更改用户的家目录(只能更改家目录的指向,至于这个家目录对不对,不会查看,也就是说如果改为一个不存在的家目录,在修改时不会报错,但是在登陆用户时会报错)
在这里插入图片描述
可以看到我们指定了一个不存在的目录作为harry用户的家目录,但是命令成功执行,并没有报错,但是在我们想要切换到这个用户中时
在这里插入图片描述
系统提示我这个目录不存在,由于没有正确的配置文件,连shell也出现了问题
在这里插入图片描述
可以看到明显和我们正常使用时的命令提示符不一样,这是因为harry用户没有正确的目录去存放shell的配置文件,自然在运行时会出现问题。
8…但是如果我们已经有了一个正常的家目录,而我们需要改变名字时,不妨用下面的命令
-md 更改的家目录 需要更改的用户 (家目录的指向和名字都会改)(这个参数的前后顺序不可逆(按顺序执行))
在这里插入图片描述
可以看到harry用户的家目录已经变成了/home/hahaha,随后我们切换到harry用户,系统却没有发出报错提示,这是因为-md参数会在更改家目录指向的同时更改家目录的名字,原来存在的家目录的名字变成了hahaha,这样的话hahaha变成了一个真实存在的目录,自然也就不会出现问题了

用户的冻结与解冻

如果在你管理的服务器中有用户做出了一些讨厌的事(比如游戏开挂,比如公共聊天口出脏言),怎么才能有效的制止呢?
将usermod加上下面这两个参数就可以轻松搞定
1.-L 需要锁定的用户 #冻结用户
~~叮~~恭喜您,您的账户已被冻结~~~~~~~
2.-U 需要解锁的用户 #解锁用户
~~给你解冻了(我才不想)~~~~~~~~~~~

passwd文件——用户的详细信息集散地

在你创建一个用户后,登出当前用户,在你想要切换到刚刚建立的用户时却发现登陆界面上并没有你创建的用户,别急,这时候你需要下面这个命令:
passwd 用户名#给你的用户一个密码[这是因为刚刚建立的用户没有密码,默认是冻结的,这时你可以从/etc/passwd文件中看到这个用户但是在登陆界面却找不到这个用户(和冻结状态是一样的,如果在not listed里直接登入这个用户,会提示你认证不通过),需要一个密码,密码给定后,在登陆界面就可以看到这个用户了]

用户认证信息

在你的系统中,所有的用户id信息都被存储在一个文件当中,这个文件就是:
/etc/shadow(新建用户时默认的数值具体见/etc/login.defs文件)
在这里插入图片描述
一共九列(每一列用":"隔开),各列含义如下
1.用户名
2.用户密码(默认加密方式为sha512对称加密,如果加密字符串前出现“!”那么恭喜你,你的用户被冻结了)
3.最后一次密码被更改的时间(从1970年1月1日算起的累计天数)(啥…你说为什么要这么设定…emmmm…不知道,问开发者去)
4.密码最短有效期(密码最短要使用多少天(时间内不能更改))
5.密码最长有效期(用户必须在此有效期内更新密码,如果超时会被冻结)(就比如你没有续费的QQ会员,到期就被停掉了)
6.密码警告期限(密码过期前指定天数内发送警告信息给用户)(~~叮~~系统提示:你的账户还有XX天就要完蛋,赶紧改密码)
7.非活跃天(此位默认为空,如果设定数值,那么在密码最长有效期过后仍然可以使用的天数) (仁慈地留给你最后扑腾的期限,比如信用卡的还款日如果是15号,那你16去还可能还不算失信,到了17号就完了,别问我咋知道的)
8.帐号到期日(默认为空,表示帐号一定会被冻结的时间点)
9.用户自定义(没有被系统所使用)(企业里自定义)

超级用户改密码不需要知道原密码也不会受到密码强度,长度的限制(为所欲为)
普通用户(在terminal中输入passwd直接回车改密码并且改不了其他用户的密码)修改密码需要
1.知道原密码
2.密码不能和帐号名称相似
3.密码不能是纯数字或纯字母
4.密码不能是有序的字母和数字的组合
如果一个超级用户改密码,新的密码不符合要求,系统会提示但不会阻止,用户还是可以用这个不符合要求的新密码登陆,但是普通用户在更改密码的时候必须按照系统要求,否则会被系统阻止(emmm…只许州官放火,不许百姓点灯说的大概就是这个吧)
在这里插入图片描述
虽然提示密码过短,但是还是设定成功了。

对于用户密码的管理

passwd 用户名 #更改用户密码
在这里插入图片描述
passwd -S 用户名 #显示用户密码信息
在这里插入图片描述
passwd -l 用户名#冻结用户(密码前会出现两个!,强度更高)
在这里插入图片描述
passwd -u 用户名#解锁用户(将密码前面的两个!去掉,强度更高)
usermod -L 用户名#冻结用户(密码前会出现一个!,强度较低用passwd -l 冻结的账户用usermod -U解锁需要用两次)
usermod -U 用户名 #解锁用户(在密码不为空时使用)
这时我们对一个用passwd -l锁住的用户(密码前有两个!)使用usermod -U命令,可以看到密码前面去掉了一个!,但还是有一个!,处于锁定状态
在这里插入图片描述
我们这时再次使用usermod -U命令或者使用passwd -u命令都会去掉前面的最后一个!,成功解锁用户
在这里插入图片描述
事实证明,passwd命令对于密码的管理比usermod命令强度更高
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
passwd -d 用户名 #清空用户密码
清空用户密码不是锁住,而是不需要密码也能登陆
在这里插入图片描述
可以看到,harry用户密码栏为空,但是并没有出现!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
用户密码最后一次被修改的时间
passwd -e 用户名 #只能改成0
chage -d * 用户名 #改成*
##当这一项为0时,用户登录时强制改密码(比如发给新生的银行卡密码,批量创建的新帐号密码)
在这里插入图片描述
最短有效期
passwd -n * 用户名 #每一次更新密码后的天内用户自己不能再次更改密码
chage -m * 用户名
在这里插入图片描述
表示harry在改过密码的1天内不能再改密码
在这里插入图片描述
可以看到“you must wait longer”
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
最长有效期
passwd -x * #每一次更新的密码最多使用
天(逾期冻结)
chage -M *
在这里插入图片描述
警告期
passwd -w * #在用户密码即将过期前的天发送警告
chage -W *
在这里插入图片描述
非活跃天
passwd -i * #一旦用户超过最长有效期未更新密码,给予其
天的时间不冻结
chage -I *
在这里插入图片描述
帐号到期日
chage -E "--" 用户名 #用户在日会被冻结,例如2018-01-05
一旦到期,就会被冻结,没有非活跃天(也是从1970年1月1日算起)
在这里插入图片描述

passwd命令和chage命令的许多功能都是一样的,但是也有不一样的地方,千万不要记混了

猜你喜欢

转载自blog.csdn.net/weixin_44243574/article/details/85266783