Linux_红帽8学习笔记分享_4(用户与组管理)
文章目录
1.用户管理useradd命令的使用
注意:如果在实验前servera有问题,我们首先要重置servera平台,重置之后是需要反应过程的,它会在后台先关闭再重启。
1.1使用useradd添加用户
如下图所示,在root用户下,使用useradd来添加用户,参数就是要添加的用户名,passwd后跟的参数是要设置密码的用户,后连续输入两次密码即可,出现successfully即证明添加子用户成功
1.2 Linux系统底层的四个连锁反应
首先我们建立c001,然后设置密码(尽量一字母开头),我们看一下底层连锁反应,我们看到此时home目录下多了个c001,还有d的权限,我们建立c002,会发现我们home目录下自动生成了c002,如下图所示。
我们看再加入了c001和c002之后,会对/etc/passwd文件产生连锁反应,我们输入vim /etc/passwd,其内容在最下行多了两行描述c001和c002的内容,如下图所示。
会对/etc/shadow影子文件产生连锁反应,影子文件中会自动写入c001和c002账户相应的加密密码,如下图所示。
还会对/etc/group组信息文件产生连锁反应,会自动创建同名组,且把改组设置为第一所属组,如下图所示。
2.账户信息文件/etc/passwd中七个字段的含义
例如:a001❌504:505::/home/a001:/bin/bash,其中a001是第一个字段,表示的是用户的名字;x是第二个字段,表示的是隐式密码(每个用户的密码都是用一个隐藏的x来表示的,真正的密码并没有存放在这而是存放在Shadow的文件中);504是第三个字段,代表的是用户的ID(不会两个用户ID相同的情况,对于我们普通用户而言,它的用户ID号是从1000往后开始排,我们可以使用-u参数来自己设定用户ID);505是第四个字段,代表的是组ID(同样ID号是唯一的,它表示的是第一所属组的组ID);在两个冒号之间的是第五个字段,代表的是注释信息(可有可无,可以借助-c参数来添加注释信息);/home/a001是第六个字段,代表的是用户的家目录;/bin/bash是第七个字段,代表的是shell的种类(相当于命令的解释器),例如第一种/bin/bash(指代base shell),它是个缺省值;第二种/sbin/nologin,表示只能远端登录,不能本地登录。
3.组信息文件/etc/group中四个字段的含义
例如:a001❌505:。a001是第一个字段,表示的是组名;x是第二个字段,表示的是组密码;505是第三个字段,表示的是组ID号,505:之后的是第四个字段,举的例子这里是空的,表示的是该组当中的其他用户列表(关系是第一所属组的用户是不显示的)。
4.影子文件/etc/shadow两个字段的含义
影子文件里存放的都是账户的密码,实例在下方
a001:$6$9./UcZIYSGWuGRx6h704MEd3GHMyUylHCZRVkbwPoqg.98A/ogjXoNlylqzhjncXjO…vK7OTLaNLPKL8a8NIIOC1i4ZIK0:16000:0:99999:7
a001第一个字段,表示的是用户名;a001:之后的是第二个字段,表示的是经过加密后的密码,使用的是MD5加密策略。
5.相关测试
5.1 useradd的-s参数
我们在useradd中使用-s参数,它是用来设置shell种类,如下图所示。
5.2 tail和head命令
其中tail能够将其后面跟着的命令内容的最后十行展现在屏幕上,加入-3参数后就只会展示最后三行,如下图所示。
相反的,我们可以使用head使后面跟着的命令内容的前10行展现在屏幕上,如下图所示。
加入-6参数后,将后面跟着的命令内容的前6行展现在屏幕上,如下图所示。
5.3根据组ID推断组名
如上图所示。我们可以依据passwd文件信息发现 C003的组ID是1003,我们在查看group文件信息会发现1003对应的第一所属组的组名就是C003。用这样的方法可以确定一个用户的第一所属组的组名。(方法一)。
5.4让c003可以本地登录
可以使用root的身份更改password的文件将其/sbin/nologin改为/bin/bash(方法一),如下图所示。
可以使用usermod的-s参数来修改其shell内容,改成/bin/bash(方法二),如下图所示。
5.5 useradd的其他参数
-d参数能新指定用户的家目录,-m一般使用在-d之前,如果这个家目录不存在,它们结合表示先创建再指定,-c用来添加注释信息,-u用来指定它的UID,但是不能与系统账户的UID重复,-g用来指定它的第一所属组,-G用来指定除去第一所属组其他的所属组。
6.用户管理之userdel命令的用法
6.1不彻底的删除方法
如上图所示,使用userdel的删除方法删除过后,home下的c002变成了无人认领的垃圾目录了,如下图所示passwd、shadow、group文件信息内的c001都被删除了。
所以使用这个方法,它的家目录并不会被删除。
6.2彻底的删除方法
userdel的-r参数能够将家目录删除,-f参数能够暴力执行,我们使用-rf来做到彻底删除,如下图所示。
7.用户管理之usermod命令的用法
usermod的-u参数可以更改指定用户的ID号,-s参数可以更用户的改shell种类,如下图所示。
8.组管理之groupadd命令的用法
我们可以使用group add的命令来添加组,例子如下图所示。
9.组管理之groupdel命令的用法
它的作用就是删除组,示例如下图所示。
但是我们使用groupdel命令并不能够删除第一所属组。
如果我们要删除第一所属组,我们可以使用userdel命令来删除同名用户(方法一),我们可以使用usermod -g命令来去掉第一所属组,然后再使用groupdel来删除这个组(方法二),方法二如下图所示
10.组和用户的关系
10.1 gpasswd –a 用户名 组名
-a参数就是追加的意思,gpasswd –a该命令的意思就是把后面跟着的用户添加进入这个组内,示例如下图所示
上图在group文件信息的f001的第4个字段上,能够能够看出用户与组的关系,这是一种站在组的角度看用户与组的关系的方法。
如上图所示,这个是站在用户的角度看用户与组的关系的方法,能够看到第一所属组和其他所属组。
10.2 gpasswd –d 用户名 组名
它能够将一个用户从指定组名中删除,如下图所示,删除后d003不在f001中
它的局限性在于:无法改变用户的第一所属组,添加、删除和移动第一所属组都不可以,如下图所示
10.3修改primary group的测试
我们可以使用usermod –g参数来来让指定用户的第一所属组进行改变,改变成为指定所属组,如下图所示
我们将f002设定成为d003的第一所属组
10.4修改附属组的测试
usermod –G实现的是全部附属组的替换,-G可以跟很多组名,每个组名之间用逗号隔开,那么就是将原本的几个附属组全部替换为新指定的组,最后一个内容为要替换的用户名,示例如下图所示
11.chown命令的使用方法
例如:chown b001:group1 qqq1.txt,其中b001就是新的所有者,group1是新的所属组,要更改的对象是qqq1.txt。
chown是用来修改所有者和所属组的,如下图所示对于我们新创建的qqq1和qqq2来说,它们所属组是由所有者的primeary group自动填充
我们使用chown来对所有者和所属组进行更改,如下图所示
11.1只对所属组进行修改
我们使用chown时,只写:右边的内容,使其只对所属组进行修改,示例如下图所示
11.2只对所有者进行更改
我们使用chown时,只写:左边的内容,使其只对所有者进行修改,但是实际的效果是将所属组也更改了,因为所属组会被该所有者的第一所属组自动填充,示例如下图所示
12.用户与组管理之综合测试问题
12.1当两个用户的关系是组外关系时
12.1.1给予组外用户访问权限
首先我们看到我们使用x1用户不能进入到x2的家目录中去,如下图所示。
我们首先看一下x2的所有权限,如下图所示。
如果我们要想让x1用户进入到x2的家目录中去,我们就需要让组外开放x执行权限,我们使用chmod命令,如下图所示。
我们让其他用户对于home下的x2都有执行的权限,于是我们在使用x1用户去访问x2用户的家目录时就成功访问了,如下图所示。
12.1.2给予组外用户读取权限
我们看到我们使用x1用户不能对x2的家目录执行ll命令来看其家目录的内容,如下图所示。
如果我们要想让x1用户对x2的家目录执行ll命令来看其家目录的内容,我们就需要让组外开放r读取权限,我们使用chmod -o命令,如下图所示。
我们让其他用户对于home下的x2都有读取的权限,于是我们在执行ll命令其家目录的内容即可成功,如下图所示。
12.1.3给予组外用户写的权限
我们看到我们使用x1用户不能对x2的家目录执行touch命令来在其家目录下创建文件,如下图所示。
如果我们要想让x1用户对x2的家目录执行touch命令来在其家目录下创建文件,我们就需要让组外开放w写的权限,我们使用chmod -o命令,如下图所示。
我们让其他用户对于home下的x2都有写的权限,于是我们在执行touch命令在其家目录下创建文件即可成功,如下图所示。
而且写出来的文件的所有者和所属组是x1用户。
12.2当用户的关系是组内时
12.2.1给予组内用户访问权限
我们把x1放到x3的同名组中,如下图所示。
此时当我们想要使用x1用户进入到x3的家目录中去,我们需要让x3组内具有执行权限,我们使用chmod的-g参数,如下图所示。
但是此时我们去x1@serveb的窗口下并不能够cd成功,我们需要先退出再用x1的身份登录,为了能够让刚刚修改的操作进行一个同步,如下图所示。
12.2.2给予组内用户读取权限
我们看到我们使用x1用户不能对x3的家目录执行ll命令来看其家目录的内容,如下图所示。
如果我们要想让x1用户对x3的家目录执行ll命令来看其家目录的内容,我们就需要让组内开放r读取权限,我们使用chmod -g命令,如下图所示。
我们让组内用户对于home下的x2都有读取的权限,于是我们在执行ll命令其家目录的内容即可成功,
12.2.3给予组内用户写的权限
同样的我们看到我们使用x1用户不能对x3的家目录执行touch命令来在其家目录下创建文件, 如果我们要想让x1用户对x2的家目录执行touch命令来在其家目录下创建文件,我们就需要让组内开放w写的权限,我们使用chmod命令,如下图所示。
我们让组内用户对于home下的x2都有写的权限,于是我们在执行touch命令在其家目录下创建文件即可成功
13.小结测试
1.创建一个用户,指定用户名,密码设置成aaa:
解:首先我们使用useradd+空格+要创建用户的用户名,再使用passwd+空格+要设置密码的用户的用户名,用户名为###159,密码设置为aaa,Linux操作如下图所示。
2.以该用户的身份建立文件mylinux1.txt,mylinux2.txt,mylinux3.txt
解:使用su – ###159命令登录改用户,使用touch命令分别创建mylinux1.txt,mylinux2.txt,mylinux3.txt文件,Linux操作如下图所示。
\3. 在/tmp目录下建立子目录,指定目录名字
解:使用mkdir+空格+/tmp/###159命令即可,Linux操作如下图所示。
4.查找名称中含有"mylinux”类型为文件,指定所有者,并将找到的结果拷贝到tmp/下指定的目录中。(要求使用一条find命令完成)
解:我们在root身份下使用find+空格+/+空格±name+空格+ “mylinux*”+空格±type+空格+f+空格±user+空格+###159+空格±exec+空格+cp+空格+{}+空格+/tmp/###159/+空格+;命令即可,Linux操作如下图所示
以上就是本文全部内容,如果它对您有帮助,请您帮我点个赞,这对我真的很重要