linux用户和用户组的概念

 

目录

Linux常规操纵 : 多用户操作

1.1 linux的用户与用户组理论

1.1.1 概述

1.1.2 linux的用户分类

1.1.3 linux的用户组

1.1.4 用户与组的关系

1.1.5 用户与组对linux的影响

1.2 linux的用户与用户组实战

1.2.1 Linux用户组的CURD操作

groupadd

groupmod

groupdel

1.2.2 Linux用户的CURD操作

useradd

usermod

passwd

userdel

1.2.3 Linux群组管理员功能

gpasswd

1.3 linux的用户相关命令

1.3.1 id 命令 查看用户信息

1.3.2 su 命令  用户切换


 


Linux常规操纵 : 多用户操作

1.1 linux的用户与用户组理论

1.1.1 概述

 

        Linux是一个真实的、完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。

        root :系统维护

        www:网页修改

        ftp:文件上传

        mysql:SQL查询

 

        不同用户具有不同的权限,每个用户是在权限允许的范围内完成不同的任务,linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。

 

1.1.2 linux的用户分类

1. root 用户(linux的超级管理员)

        拥有最高权限,可以登录系统,进行任何操作。

 

2. 虚拟用户(某项技术运行期间需要的用户,根我们没啥关系)

        这类用户也被称为伪用户或假用户,以与真实用户区分开来。这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等,这类用户都是系统自身拥有的,而非后来添加的。

           

3. 普通真实用户(我们可以操作的)

        这类用户等登录系统,权限有限,由管理员添加。

        注意 :  linux是区分用户进行各种操作的,也就是说如果你想做任何操作都是必须先登录某个用户才可以做相关的操作,所以我们想要操作linux必须有自己的用户!

        那怎么创建用户呢?

 

1.1.3 linux的用户组

        Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。

        每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。

        用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限。

        比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理。

        另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。

 

        说白了用户组就是对linux中同一类对象进行统一管理一种技术手段,将同一类用户放到一个组中去,封装成一个更大的整体;

        就好比 同一类学生封装到一个班级里面,学生就是用户,班级就是组;对班级进行操作其实就是对这个班级的所有学生的操作;

 

1.1.4 用户与组的关系

        用户和用户组的对应关系有:一对一、一对多、多对一和多对多;下图展示了这种关系:

        

 一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。

 一对多:即一个用户可以存在多个用户组中。那么此用户具有多个组的共同权限。

 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。

 多对多:多个用户可以存在多个组中。其实就是上面三个对应关系的扩展。

 

1.1.5 用户与组对linux的影响

        假如 我们现在有这么几个用户 : zwm 、sjg、 wxh

        假设 zwm 和 sjg 用户 是 g1 组 ,wxh 是 g2 组

        我们用 zwm 用户创建了一个文件 file1

        那么对于这个file1来说 就有 三种权限的设置

1. User --> 文件所有者 完全权限 读 写 执行 4 2 1 = 7

        直接创建这个文件的用户(zwm),对这个文件享有很高的权限

2. Group  --> 文件所有者同组权限 读

        这个用户所属组(g1组),与上面用户同组的用户对这个文件有什么样的操作权限

3. Others --> 除文件所有者和所有者组之外那些个用 0

        其他用户(wxh),除了上面的用户和上面的组以外的其他人对这个文件有什么权限操作

 

举个例子

 

 

其中:

        天神:root 用户,无所不能。

        王大毛家:某个用户组

            王大毛:某个用户组中的用户

        王大毛房间的所有者是王大毛,里面的东西,其他人不能乱动,表示为所有者权限 (User)。

        王大毛家内公共区域三兄弟可以共享,表示为所有者同组权限(Group)。

        对于王大毛来说,张小猪就不是他们家的人,表示为所有者非同组权限(others)。

1.2 linux的用户与用户组实战

        因为用户组与用户是一对多的关系,用户肯定是要从属于某个组的,所以我们先从用户组操作起来

1.2.1 Linux用户组的CURD操作

1.2.1.1 GR 组的查询

1. 组信息的查询

执行 : 

 

#cat 命令,查看某个文件的内容  /etc(配置文件目录)/group(配置文件)
[root@localhost ~]# cat /etc/group

 

 

        用户组的所有信息都存放在/etc/group文件中。

        此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下:

                组名:口令:组标识号:组内用户列表

具体解释:

组名:

    组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。

口令:

    口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*,有口令默认是x。

    因为涉及到对组的管理所以linux的组也是有自己的密码的

组标识号 主键ID(可以重复的):

    组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.

组内用户列表:

    是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

 

2. 组密码的查询

执行

 

[root@localhost ~]# cat /etc/gshadow

 

由冒号(:)隔开若干个字段,这些字段具体如下:

    用户组名:用户组密码:用户组管理者:支持的账号名称

具体解释:

用户组名:

        是用户组的名称,由字母或数字构成。

用户组密码:

    这个段可以是空的或!,如果是空的或有!,表示没有密码。

用户组管理者:

    这个字段也可为空,如果有多个用户组管理者,用,号分割。

组成员:

    如果有多个成员,用,号分割。

    当你每次创建的时候 为了保证这个账户归属某个组 所以 创建一个账户的同时 / 创建一个与用户同名的组

    root 账户 root组

 

1.2.1.2 GC 添加组

groupadd

语法 : 

 

groupadd [选项] 组名

命令功能:

        添加群组。

选项和参数:

        -g GID:后面接某个特定的 GID ,用来直接给予某个GID;

        -h :显示此帮助信息并退出

        -r :创建一个系统群组。

        -o :允许创建有重复 GID 的组

 

实例:

1)创建一般群组(GID 从 1000 ! 1000以下代表是系统组)

 

[root@localhost ~]# groupadd group1
[root@localhost ~]# cat /etc/group | grep group1
group1:x:1000:

        | N个命令的管道连接符 ,它的意义就是在于 ,将前一个命令的结果作为原始数据传入下一个命令 ,此处我们将 cat /etc/group 命令的执行结果 ,通过 | 传入给 grep 命令 ,

        grep命令的作用是,在指定内容中查找给定的关键字,因为我们要用grep查找 group1 关键词 ,所以通过上面命令的执行将包含group1 关键词的那行查询出来;

 

2)创建一个自定义GID的组名

        GID : 和我们之间数据库的主键ID一样,用来定位一个组的有效标识,但是linux的GID可以重复(使用-o 参数指定即可);

        GID的编号 : 0~999 传统上是保留给系统帐号使用。自定义的组是1000以上的,刚才我们创建的group1组的ID就是1000;

 

[root@localhost ~]# groupadd -g 1003 group3
[root@localhost ~]# cat /etc/group | grep group3
group3:x:1003:

        此处需要注意一个问题,因为我们自定义的组ID已经指定到了1003, 所以按照ID递进原则之后我们如果创建group3组的话,ID不会是我们没有用到的1002 ,而是 1003+1 --> 1004

 

[root@localhost ~]# cat /etc/group | grep group4
group4:x:1004:

 

3)创建系统群组

 

[root@localhost ~]# groupadd -r sysop1
[root@localhost ~]# cat /etc/group | grep sysop1
sysop1:x:995:

注意

    系统群组的ID是 0-999 所以此处分配了一个 995的ID

    此时大家就要考虑一个问题了,如果系统保留ID用没了,但是我还是想创建系统群组怎么办呢?

    这个时候我们可以使用 -o 参数来设定GID相同的群组

 

[root@localhost ~]# groupadd -r -o -g 995 sysop2
[root@localhost ~]# cat /etc/group | grep sysop2
sysop2:x:995:

 

根据观察我们可以看出,sysop2和sysop1使用了相同的GID;

 

1.2.1.3 GU 修改组

groupmod

命令格式:

 

groupmod [选项] 组名

命令功能:

    修改群组相关参数。

选项和参数:

    -g GID :将组 ID 改为 GID

    -h :显示此帮助信息并退出

    -n NEW_GROUP :改名为 NEW_GROUP

    -o :允许使用重复的 GID

实例:

    修改 sysop2 组的名称为 sysug1 并且修改这个组的ID为 996

 

[root@localhost ~]# groupmod -g 996 -n sysug1 sysop2
groupmod:GID “996”已经存在
[root@localhost ~]# groupmod -g 997 -n sysug1 sysop2
groupmod:GID “997”已经存在
[root@localhost ~]# groupmod -g 998 -n sysug1 sysop2
groupmod:GID “998”已经存在
[root@localhost ~]# groupmod -g 999 -n sysug1 sysop2
groupmod:GID “999”已经存在
[root@localhost ~]# groupmod -g 994 -n sysug1 sysop2

注意 系统的GID是很紧张的!

 

1.2.1.4 GD 删除用户组

groupdel

命令格式:

 

groupdel 组名

命令功能:

        删除用户组时,用户组必须存在,如果有组中的任一用户在使用中的话,则不能删除。

 

实例:

        删除群组名为 sysop1 sysug1 的群组和 

 

[root@localhost ~]# groupdel sysop1
[root@localhost ~]# groupdel sysug1

 

1.2.2 Linux用户的CURD操作

1.2.2.1 UR 用户查看

执行 : 

 

[root@localhost ~]# cat /etc/passwd

是的,没有错,不要怀疑,这个就是查看用户信息的文件 叫 passwd

 

内容如下

 

内容说明 : 

        /etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下: 

            用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

 

用户名:

        是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。

口令:

         一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

 

用户标识号:UID

        用户标识号(User ID),是一个整数,系统内部用它来标识用户。

        0是系统管理员账号,1-999是系统保留账号,1000+即一般账号。useradd 命名默认生成UID=1000。

 

组标识号:GID

        GID:用户组标识号(Group ID),是一个整数,系统内部用它来标识用户组。

 

注释性描述:

        字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。

 

主目录:

        也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

 

登录Shell:

        用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。

 

查看用户密码可以执行 : 

 

[root@localhost ~]# cat /etc/shadow

 

 

        用户(user)影子口令文件,存放账户密码相关信息。该文件的权限必须设置为:400 或者600,即:Linux /etc/shadow文件是只有系统管理员才有权利进行查看和修改的文件。

        每行内容按:分隔。

               登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

 

登录名:

        是与/etc/passwd文件中的登录名相一致的用户账号

 

口令:

存放的是加密后的用户口令字,如果为空,则对应用户没有口令,登录时不需要口令;   

星号代表帐号被锁定;

双叹号表示这个密码已经过期了。

$6$开头的,表明是用SHA-512加密的,

$1$ 表明是用MD5加密的

$2$ 是用Blowfish加密的

$5$ 是用 SHA-256加密的。 

 

最后一次修改时间:

表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。

 

最小时间间隔:

指的是两次修改口令之间所需的最小天数。

 

最大时间间隔:

指的是口令保持有效的最大天数。

 

警告时间:

字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。

 

不活动时间:

表示的是用户没有登录活动但账号仍能保持有效的最大天数。

 

失效时间:

字段给出的是一个绝对的天数(1970年到现在的天数),如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

 

 

1.2.2.2 用户创建

useradd

命令格式:

 

useradd [选项] 使用者账号名

 

命令功能:

用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。

选项和参数:

-u UID: 直接指定一个特定的 UID 给这个账号;

-g 初始群组名:该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。

-G 附加群组名:后面接的组名则是这个账号还可以加入的附加群组。这个选项与参数会修改 /etc/group 内的相关资料。

-M :强制!不要建立用户家目录!(系统账号默认值)

-m :强制!要建立用户家目录!(一般账号默认值)

-c 描述性字符串:注释性描述,这个就是 /etc/passwd 的第五栏的说明内容

-d 目录:指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径!一般情况下linux除了执行shell脚本之外 很少使用相对路径

-r :建立一个系统的账号,系统账号不建立家目录;

-s shell:后面接一个 shell ,若没有指定则预设是 /bin/bash

实例

1)创建一个最普通的账号(用户名 user1 用户描述 这个一个普通账户)

 

[root@localhost ~]# useradd -c 这是一个最普通的账户 user1
[root@localhost ~]# cat /etc/passwd | grep user1
user1:x:1000:1005:这是一个最普通的账户:/home/user1:/bin/bash

此处我们需要关心的问题是 ,普通账户的UID起始是1000,那UID后面的 1005 的 GID是哪个组呢?我们查询一下

 

[root@localhost ~]# cat /etc/group | grep 1005
user1:x:1005:

        通过观察我们发现创建普通用户的时候还会创建一个按用户名命名的组,并且把该用户添加到了这个同名的组里面

        如果是这样的话,我们想在创建用户的时候指定组该怎么办呢?此时可以用 -G 和 -g 参数

 

2)创建一个账户归属 GID=1000 的用户组

 

[root@localhost ~]# useradd -g 1000 user2
[root@localhost ~]# useradd -g group1 user3
[root@localhost ~]# cat /etc/passwd | grep user*
user1:x:1000:1005:这是一个最普通的账户:/home/user1:/bin/bash
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash

        上面的代码我们可以用-g 来初始化用户的组 -g 后面加需要归属的 组的 ID 和 名称 都可以

        那么既然已经设置了基础组还会创建用户同名组么?

 

[root@localhost ~]# cat /etc/group | grep user*
users:x:100:
user1:x:1005:

通过观察我们发现并没有!

 

3)创建一个账户归属自己同名组并归属 GID为1000的组

 

[root@localhost ~]# useradd -G 1000 user4
[root@localhost ~]# useradd -G group1 user5 
[root@localhost ~]# cat /etc/passwd | grep user*
user1:x:1000:1005:这是一个最普通的账户:/home/user1:/bin/bash
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash
user4:x:1003:1006::/home/user4:/bin/bash
user5:x:1004:1007::/home/user5:/bin/bash

通过观察我们可以发现上面的user4 和 user5 有两个不同的GID为 1006 和 1007

那么它归属 GID=1000的组了么?我们查查看

 

[root@localhost ~]# cat /etc/group | grep -E '1000|1006|1007'
group1:x:1000:user4,user5
user4:x:1006:
user5:x:1007:

通过观察我们发现 group1 GID=1000 这个组里添加了user4和user5两个用户

并且系统也帮助我们创建了以user4和user5命名的组

这个就是附加! -G

 

4)创建一个系统账户

 

[root@nn1 ~]# useradd -r sysuser1

 

[root@localhost ~]# cat /etc/passwd | grep sysuser1
sysuser1:x:997:995::/home/sysuser1:/bin/bash

此处我们可以发现 UID是 997(1000以下) GID 995

 

[root@localhost ~]# cat /etc/group | grep 995
sysuser1:x:995:

 

5)创建一个不能使用shell 并且要设置用户的家目录到其他位置

 

[root@localhost ~]# useradd -s /sbin/nologin -d /userhome/user1 -c 一个特殊的普通用户 nologinuser1
useradd:无法创建目录 /userhome/user1
[root@localhost ~]# mkdir -p /userhome/user1 创建这个目录 
[root@localhost ~]# useradd -s /sbin/nologin -d /userhome/user1 -c 一个特殊的普通用户 nologinuser1
useradd:用户“nologinuser1”已存在
[root@localhost ~]# useradd -s /sbin/nologin -d /userhome/user1 -c 一个特殊的普通用户 nologinuser2
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。 
[root@localhost ~]# useradd -s /sbin/nologin -d /userhome/user3 -c 一个特殊的普通用户 nologinuser3
[root@localhost ~]# ll /userhome/
总用量 0
drwxr-xr-x. 2 root         root          6 5月  30 16:47 user1
drwx------. 2 nologinuser3 nologinuser3 62 5月  30 16:47 user3
[root@localhost ~]# cat /etc/passwd | grep nologinuser*
nologinuser1:x:1005:1008:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser3:x:1007:1010:一个特殊的普通用户:/userhome/user3:/sbin/nologin

此处需要注意 : 用户的默认家目录在 /home/用户名 这个目录里

举个例子 : 我创建了一个user 叫user1

那么这个用户的家目录 对应应该就是 /home/user1

那么问题来了 --> 什么是家目录呢?

家目录 和 windows中用户的我的文档类似 用户登陆成功进入的第一个目录就是自己得家目录;

家目录对于用户来说 用户具有最大的管理权限 所以家目录对于用户来说 是 700 权限的;

那啥是700权限呢? 不着急我们一会再说,此处我们主要还是针对用户操作;

 

 

1.2.2.3 UU 用户修改

usermod

命令格式:

 

usermod [选项] 使用者账号名

 

命令功能:

usermod命令用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。

选项和参数:

-c 备注:修改用户帐号的备注文字; 

-d 家目录:修改用户登入时的主目录,前提:已存在要修改的家目录; 

-g 初始群组:修改用户所属的群组; 

-G 附加群组;修改用户所属的附加群组; 

-h:显示帮助信息;

-l 帐号名称 :修改用户帐号名称; 

-s shell:修改用户登入后所使用的shell; 

-u UID:修改用户ID;

实例:

1)将现有用户添加到现有组中

 

[root@localhost ~]# cat /etc/passwd | grep user1
user1:x:1000:1005:这是一个最普通的账户:/home/user1:/bin/bash 
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一个特殊的普通用户:/userhome/user1:/sbin/nologin
[root@localhost ~]# cat /etc/group | grep 1005
user1:x:1005:
[root@localhost ~]# usermod -g group1 user1
[root@localhost ~]# cat /etc/passwd | grep user1
user1:x:1000:1000:这是一个最普通的账户:/home/user1:/bin/bash
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一个特殊的普通用户:/userhome/user1:/sbin/nologin

上面的操作可以观察到之前user1的GID 是1005 修改了之后变成了 1000

 

2)修改用户名 

 

[root@localhost ~]# usermod -l userop1 -c 'web管理员' user1
[root@localhost ~]# cat /etc/passwd | grep user*
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash
user4:x:1003:1006::/home/user4:/bin/bash
user5:x:1004:1007::/home/user5:/bin/bash
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser3:x:1007:1010:一个特殊的普通用户:/userhome/user3:/sbin/nologin
userop1:x:1000:1000:web管理员:/home/user1:/bin/bash

修改了用户名 顺便也修改了备注信息

3)修改用户的家目录位置

 

[root@localhost ~]# cat /etc/passwd | grep userop1
userop1:x:1000:1000:web管理员:/home/user1:/bin/bash
[root@localhost ~]# usermod -d /userhome/user4 userop1
[root@localhost ~]# cat /etc/passwd | grep userop1
userop1:x:1000:1000:web管理员:/userhome/user4:/bin/bash

修改完用户名及家目录之后,不能正常的登录,需要拷贝正常家目录下的三个文件,命令如下:

 

cp ./.bash* /home/新用户的家目录

 

4)修改用户的登录密码

passwd

命令格式:

 

passwd [选项] [使用者账号名]

 

命令功能:

        passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

        root用户可以设置及修改其他用户的密码,普通修改自己的密码。

 

选项:

-d:删除密码,仅有系统管理者才能使用; 

-f :强制执行; 

实例:

因为useradd的用户并没密码可以通过此命令进行设置

 

1) 修改管理员密码

 

[root@localhost ~]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

    passwd 如果不带参数就是修改当前用户的,所以root身份登录修改的也是root的密码,此处需要注意当你在输入密码的时候是不会显示密码的

2) 修改其他用户密码

 

[root@localhost ~]# passwd userop1
更改用户 userop1 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# passwd -f userop1
更改用户 userop1 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

切换验证

 

[root@localhost ~]# su - userop1
su: 警告:无法更改到 /userhome/user4 目录: 没有那个文件或目录
-bash-4.2$ ll
ls: 无法打开目录.: 权限不够
-bash-4.2$ cd /
-bash-4.2$ ll
总用量 16
lrwxrwxrwx.   1 root root    7 5月  30 12:25 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 5月  30 12:28 boot
drwxr-xr-x.  20 root root 3220 5月  30 12:29 dev
drwxr-xr-x.  74 root root 8192 5月  30 17:14 etc
drwxr-xr-x.   7 root root   71 5月  30 16:36 home
lrwxrwxrwx.   1 root root    7 5月  30 12:25 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 5月  30 12:25 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 4月  11 2018 media
drwxr-xr-x.   2 root root    6 4月  11 2018 mnt
drwxr-xr-x.   2 root root    6 4月  11 2018 opt
dr-xr-xr-x. 112 root root    0 5月  30 12:29 proc
dr-xr-x---.   2 root root  114 5月  30 12:28 root
drwxr-xr-x.  23 root root  720 5月  30 12:29 run
lrwxrwxrwx.   1 root root    8 5月  30 12:25 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 4月  11 2018 srv
dr-xr-xr-x.  13 root root    0 5月  30 12:29 sys
drwxrwxrwt.   8 root root  211 5月  30 14:05 tmp
drwxr-xr-x.   4 root root   32 5月  30 16:47 userhome
drwxr-xr-x.  13 root root  155 5月  30 12:25 usr
drwxr-xr-x.  19 root root  267 5月  30 12:29 var
-bash-4.2$ su - root
密码:
上一次登录:四 5月 30 12:31:03 CST 2019从 192.168.92.1pts/0 上

用户自己改密码

 

-bash-4.2$ passwd
更改用户 userop1 的密码 。
为 userop1 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
抱歉,密码不匹配。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

用户自己修改密码的时候必须遵守密码修改原则

1. 先输入当前密码验证

2. 新密码要求由数字和字母组成长度要大于8位

3. 密码中要包含大小写字母

所以自己修改密码的时候还是要花费一定经历的

 

 

 

 

1.2.2.4 UD 用户删除

userdel

命令格式:

 

userdel [选项] 使用者账号名

 

命令功能:

        userdel删除一个用户账号和相关的文件。 userdel命令修改系统账号文件/etc/passwd,删除所有条目有关用户登录名。该用户名必须存在。

选项和参数:

-f,--force  该选项强制删除用户账号,即使该用户仍在登录。

-r, --remove  在用户家目录里面的文件将被删除并且家目录本身和用户的邮件池也会被删除。文件位于其他文件系统的必须手动搜索和删除。

建议不要用 -r 直接删除,用普通删除,家目录先保留一段时间,然后在手动删除,以免家目录内的文件找不回来。

实例:

删除指定的用户

 

[root@localhost ~]# cat /etc/passwd | grep user
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash
user4:x:1003:1006::/home/user4:/bin/bash
user5:x:1004:1007::/home/user5:/bin/bash
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser3:x:1007:1010:一个特殊的普通用户:/userhome/user3:/sbin/nologin
userop1:x:1000:1000:web管理员:/userhome/user4:/bin/bash
[root@localhost ~]# userdel userop1
userdel: user userop1 is currently used by process 9251

上面提示userop1 正在使用不能删除;

那么要是就想删呢?

 

[root@localhost ~]# userdel -rf userop1
userdel: user userop1 is currently used by process 9251
userdel:未找到 userop1 的主目录“/userhome/user4”
[root@localhost ~]# cat /etc/passwd | grep user
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash
user4:x:1003:1006::/home/user4:/bin/bash
user5:x:1004:1007::/home/user5:/bin/bash
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一个特殊的普通用户:/userhome/user1:/sbin/nologin
nologinuser3:x:1007:1010:一个特殊的普通用户:/userhome/user3:/sbin/nologin

强制删除了userop1

注意 : linux没有回退功能,所以删除了就是删除了,就再也找不回来了!

 

1.2.3 Linux群组管理员功能

gpasswd

gpasswd命令是Linux下工作组文件/etc/group和/etc/gshadow管理工具。

命令格式:

 

gpasswd [选项] 要管理的工作组

命令功能:

管理群组。

选项:

-a 用户:添加用户到组; 

-d 用户:从组删除用户; 

-A 用户:指定管理员; 

-h:帮助信息;

-r:删除密码; 

 

实例:

1) 给组设置密码

 

[root@localhost ~]# gpasswd group1
正在修改 group1 组的密码
新密码:
请重新输入新密码:

1)指定组的管理员

 

[root@localhost ~]# gpasswd -A user4 group1

2)添加新用户到组

 

[root@localhost ~]# su - user4
[user4@localhost ~]$ gpasswd -a user2,user3 group1
gpasswd:用户“user2,user3”不存在
[user4@localhost ~]$ gpasswd -a user2 group1
正在将用户“user2”加入到“group1”组中
[user4@localhost ~]$ gpasswd -a user3 group1
正在将用户“user3”加入到“group1”组中
[user4@localhost ~]$ cat /etc/group | grep group
group1:x:1000:user4,user5,user2,user3
group3:x:1003:
group4:x:1004:

 

3)将用户移出组

 

[user4@localhost ~]$ gpasswd -d  user2 group1
正在将用户“user2”从“group1”组中删除
[user4@localhost ~]$ cat /etc/group | grep group1
group1:x:1000:user4,user5,user3

1.3 linux的用户相关命令

1.3.1 id 命令 查看用户信息

 

命令格式:

 

id [选项][用户名称]

 

命令功能:

        id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。

        id命令已经默认预装在大多数Linux系统中。要使用它,只需要在你的控制台输入id。不带选项输入id会显示如下。结果会使用活跃用户。

选项:

-g 显示用户所属群组的ID。 

-G 显示用户所属,附加群组的ID。   

--help   显示帮助。 

实例:

1)查看当前信息

 

[user4@localhost ~]$ id
uid=1003(user4) gid=1006(user4) 组=1006(user4),1000(group1) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

2) 查看其他用户

 

[root@localhost ~]# id user2
uid=1001(user2) gid=1000(group1) 组=1000(group1),1003(group3)
[root@localhost ~]# id -g user2
1000
[root@localhost ~]# id -G user2
1000 1003

 

 

1.3.2 su 命令  用户切换

命令格式:

 

su [-] [要切换的用户名称]

 

命令功能:

su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

选项:

- :切换用户后,环境变量也切换成用户的环境变量;

不加- :切换用户,不切换环境变量

实例:

1)切换到目标用户

su - 会随着用户的切换环境变量

su  不会随着用户的切换环境变量

 

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# su - user4
上一次登录:四 5月 30 17:33:47 CST 2019pts/0 上
[user4@localhost ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user4/.local/bin:/home/user4/bin
[user4@localhost ~]$ su root
密码:
[root@localhost user4]# echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user4/.local/bin:/home/user4/bin
[root@localhost user4]# su - root
上一次登录:四 5月 30 17:49:57 CST 2019pts/0 上
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章