一个执着于技术的公众号

1、用户和组的概念

Linux系统对用户与组的管理是通过ID号来实现的。我们在登录系统时,输入用户名与对应密码,操作系统会将用户名转化为ID号后再判断该账号是否存在,并对比密码是否匹配。

Linux中,用户ID号被称为UID,组ID号被称为GID。其中,UID为0,代表超级管理员,也就是通常所说的root账号。Linux用户总共分为三种,分别如下:

  • root用户(ID 0)

  • 系统用户(ID 1~499)

  • 普通用户(ID 500-60000)

在 linux 系统中,所创建的用户帐号和其相关信息 (密码除外) 均是存放在 / etc/passwd 配置文件中。由于所有用户对 passwd 文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了 / etc/shadow 的配置文件中。

我们先来查看下/etc下的passwd配置文件:

在 /etc/passwd 配置文件中,从左至右各字段的对应关系及其含义:

由于 passwd 不再保存密码信息,所以用 x 占位代表。

2、用户密码文件

为安全起见,用户真实的密码采用 MD5 加密算法,加密后保存在 / etc/shadow 配置文件中,该文件只有 root 用户可以读取。

与 passwd 文件类似,shadow 文件也是每行定义和保存一个账户的相关信息。第一个字段为用户帐户名,第二个字段为账户的密码。

3、用户组账号文件

用户组帐号信息保存在 / etc/group 配置文件中,任何用户均可以读取。用户组的真实密码保存在 / etc/gshadow 配置文件中。

在 group 中,第一个字段代表用户组的名称,第二个字段为 x,第三个为用户组的 ID 号,第四个为该用户组的用户成员列表,各用户名间用逗号分隔。

4、添加用户

用法:useradd [选项] 用户名称
常用选项:

-c    设置账号描述信息,一般为账号全程

-d    设置账号家目录,默认为/home/用户名

-e    设置账号失效日期,格式为YYYY-MM-DD

-g    设置账号的基本组

-G    设置账号的附件组,多个附件组中间用逗号隔开

-M   不创建账号家目录,一般与-s结合使用

-s    设置账号登录shell,默认为bash

-u    指定账号UID

示例:

[root@qll251 ~]# useradd -s /sbin/nologin -M user01
# 创建账号user01,限制该用户无法登陆系统且没有家目录 [root@qll251 ~]# useradd -c administrator -d /home/admin -e 2020-03-11 -g root -G mail,bin admin
# 创建一个名为admin的账号,描述是administrator,账号家目录为/home/admin,账号失效时间为2020年3月11号,账号基本组为root,附件组为mail、bin

5、设置账号属性

用法:usermod [选项] 账号名称
常用选项:

-d   修改账户家目录

-e    修改账号失效日期

-g   修改账号所属基本组

-G   修改账号所属附件组

-s    修改账号登录shell

-u    修改账号UID

示例:    

[root@qll251 ~]# usermod -d /home/nginx nginx01
# 修改nginx01家目录为/home/nginx [root@qll251 ~]# usermod -u 1005 admin
# 修改admin的UID为1005 root@qll251 ~]# usermoud -s /sbin/nologin admin
# 限制admin用户无法登陆系统

6、删除账号

userdel [-r] 帐户名

-r 为可选项,若带上该参数,则在删除该账户的同时,一并删除该账户对应的家目录。

[root@qll251 ~]# userdel -r admin

7、修改账号属性

用法:passwd [选项] [账号名称]

常用选项:

-l   锁定账号,仅root可使用此选项

--stdin    从文件或管道读取密码

-u    解锁密码

-d    快速清空账号密码,仅root可使用此选项

示例:

[root@qll251 ~]# echo "abc123" | passwd --stdin admin
# 无交互式创建admin账号的密码为adc123 [root@qll251 ~]# passwd -l admin
# 锁定admin账号

8、创建用户组

用户和用户组属于多对多关系,一个用户可以同时属于多个用户组,一个用户组可以包含多个不同的用户。

groupadd [选项] 用户组名称

常用选项:

-g    设置组ID

[root@qll251 ~]# groupadd -g 1002 xiaoming
# 创建用户组xiaoming,同时指定GID为1002

9、修改用户组属性

(1)改变用户组的名称
groupmod -n 新用户组名  原用户组名

[root@qll251 ~]# groupmod -n admin02 admin
# 将用户组admin重命名为 admin02

(2)重设用户组的 GID

groupmod -g new_GID 用户组名称

[root@qll251 ~]# groupmod -g 1001 admin02
# 将用户组admin02的GID修改为1001

10、删除用户组

语法:groupdel 用户组名

在删除用户组时,被删除的用户组不能是某个账户的私有用户组,否则将无法删除,若要删除,则应先删除引用该私有用户组的账户,然后再删除用户组。

[root@qll251 ~]# groupdel test
[root@qll251 ~]# grep test /etc/group    #没有输出,说明 teacher 用户组已不存在,删除成功

11、添加、移除用户到指定的组/设置用户组管理员

将用户添加到指定的组,使其成为该组的成员:
gpasswd -a 用户账户  用户组名

[root@qll251 ~]# gpasswd -a test admin02
# 将test用户添加至admin02用户组

从用户组中移除某用户:
gpasswd -d 用户账户  用户组名

[root@qll251 ~]# gpasswd -d test admin02
# 将admin02用户组中的test用户移除

将某用户指派为某个用户组的管理员:

gpasswd -A 用户账户 要管理的用户组

[root@qll251 ~]# gpasswd -A test admin02
# 将test用户设置为admin02组的用户组管理员

12、用户其他相关

另外,linux 还提供了 id,whoami 和 groups 等命令,用来查看用户和组的状态。

id 命令用于显示当前用户的 uid、gid 和所属的用户组的列表

whoami 用于查询当前用户的名称

groups 用于查看指定用户所隶属的用户组

附:将用户添加到组中,也可以如下操作

usermod -a -G groupA user
-a 代表 append, 也就是 将自己添加到 用户组 groupA 中,而不必离开其他用户组。

千万不能直接用: 
usermod -G groupA

这样做会使你离开其他用户组,仅仅做为这个用户组 groupA 的成员

[root@qll251 ~]# usermod -a -G  admin test
# 将test用户添加至admin用户组中,并且不离开已有的用户组

  往期精彩

◆  干货 | 手把手教你如何搭建一个私有云盘

◆  干货 | Linux平台搭建网关服务器

◆  干货 | Linux主流发行版配置IP总结

◆  硬核科普服务器硬盘组成与基本原理

◆  忘带U盘了??别急!一行Python代码搞定文件传输

◆  什么是集群?看完这篇你就知道啦!

超详细的Linux 用户与用户组知识的更多相关文章

  1. 史上最详细 Linux 用户与用户组知识

    1.用户和用户组文件 在 linux 中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的. 在 linux 系统中,所创建的用户帐号和其相关信息 (密码除外) 均是存放在 / ...

  2. Linux 学习笔记之超详细基础linux命令 Part 10

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 9----------------- ...

  3. Linux 学习笔记之超详细基础linux命令(the end)

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 14---------------- ...

  4. Linux 学习笔记之超详细基础linux命令 Part 14

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 13---------------- ...

  5. Linux 学习笔记之超详细基础linux命令 Part 13

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 12---------------- ...

  6. Linux 学习笔记之超详细基础linux命令 Part 12

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 11---------------- ...

  7. Linux 学习笔记之超详细基础linux命令 Part 9

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 8----------------- ...

  8. Linux 学习笔记之超详细基础linux命令 Part 8

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 7----------------- ...

  9. Linux 学习笔记之超详细基础linux命令 Part 7

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 6----------------- ...

随机推荐

  1. 解释JDBC抽象和DAO模块?

    通过使用JDBC抽象和DAO模块,保证数据库代码的简洁,并能避免数据库资源错误关闭导致的问题,它在各种不同的数据库的错误信息之上,提供了一个统一的异常访问层.它还利用Spring的AOP 模块给Spr ...

  2. 学习Docker(二)

    一.Docker快速入门 Docker 改变了什么? 1.简化配置 2.流水线管理 3.应用隔离 4.提高开发效率 5.快速部署 6.面向产品:产品交付 7.面向开发:简化环境配置 8.面向测试:多版 ...

  3. C++中初始化列表的使用(总结)

    原文链接 https://www.cnblogs.com/dishengAndziyu/p/10906081.html 参考链接:https://www.cnblogs.com/laiqun/p/57 ...

  4. 祖先元素transform非none时在Iphone6上引起后代fixed/absolute元素的怪异表现及解决方案

    如题,祖先元素transform非none时,记录一下Iphone6中引起后代元素fixed参考视图怪异表现和解决方案. 层叠关系及参考视图 层叠上下文是HTML元素的三维概念,这些HTML元素在一条 ...

  5. jQ模拟打字效果插件typetype

    typetype是一个jquery插件,可以模拟人类的打字效果. 效果图如下所示: 查看演示 http://weber.pub/demo/160828/jQuery.Type/jQuery.type. ...

  6. x64 番外篇——保护模式相关

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  7. MySQL外键约束On Delete和On Update的使用

    On Delete和On Update都有Restrict,No Action, Cascade,Set Null属性.现在分别对他们的属性含义做个解释. ON DELETE restrict(约束) ...

  8. QGIS源码编译步骤详解——官方新方案

    目录 源码下载 环境下载 Cygwin64 OSGeo4W CMAKE Visual Studio 2017 环境配置 配置 编译   方案详细可见源码文件中INSTALL.md. 源码下载   QG ...

  9. ubuntu连接不到WiFi

    ubuntu连接不到WiFi 在软件与更新中,进入附加驱动. 搜到对应的无线网卡驱动,安装后在重启电脑.

  10. java过滤器拦截器的执行时机

    https://www.cnblogs.com/shamo89/p/8534580.html https://www.cnblogs.com/juanzila/p/11276067.html