一文读懂Linux用户管理与操作

摘要:这一篇足够你快速了解 Linux 用户与用户组、用户管理操作等知识。

欢迎关注这个啥都要懂一点的男人:
知乎 ——> 多面手程序员
微信公众号 ——> 多面手程序员

如果觉得这篇文章还不错,还请不吝点赞~

知乎原文链接:一篇读懂Linux用户管理与操作

目录

  • Linux 是多用户系统
  • 用户与用户组的概念
    • 文件所有者
    • 用户组成员
    • 其他人
    • 具体例子
    • 0号用户—— root
  • 用户与用户组在 Linux 中的记录
  • Linux 用户账号管理
    • 新增、修改、删除用户
    • 新增、修改、删除用户组
    • 用户身份切换
    • 查询用户信息

一、Linux 是多用户系统

我们知道,任何操作系统都存在 “用户的概念” ,Linux 也不例外。

Linux 允许使用者在 Linux 系统上通过规划不同类型、不同层级的用户,并公平地分配系统资源与工作环境。

而与 Windows 系统最大的不同,在于 Linux 允许不同的用户同时登录主机,同时使用主机的资源,因此 Linux 被称为是多用户系统。

基于此,我们必须详细了解 Linux 对于用户用户组的规划,才能更好地理解 Linux 作为多用户、多任务系统的优势,也才能地使用 Linux 支持我们日常的开发工作。

二、用户与用户组的概念

Linux 作为多用户系统,如何区分不同用户对于文件的权限的问题成为了不可避免的问题。

例如,小 A 希望个人文件不被其他用户读取,而如果不对文件进行权限设置,共享了主机资源的小 B 也可以读取小 A 的个人文件,这是不合理的,不同用户对不同文件所拥有的权限应该不尽相同。

因此,Linux 以 “用户与用户组” 的概念,建立用户与文件权限之间的联系,保证系统能够充分考虑每个用户的隐私保护,很大程度上保障了 Linux 作为多用户系统的可行性。

或者说,“用户与用户组” 与文件权限息息相关。(关于文件权限的概念,会在下一篇文章进行讲解)

因此,从文件权限的角度出发,“用户与用户组” 引申为三个具体的对象——文件所有者用户组成员其他人。每一个对象对某一个文件的持有权限是不同的。

2.1、文件所有者(User)

当一个用户创建了一个文件,这个用户就是这个文件的文件所有者。文件所有者对文件拥有最高权限,同时排他性地拥有该文件。

换句话说,除非文件所有者开放权限,否则其他人无法对文件执行查看、修改等操作。

这也是 Linux 系统能够保护用户隐私的最关键的原因。

在文件所有者占有文件之后,需要文件所有者对其他用户开放权限,其他用户才能查看、修改文件。

如果仅区分 “文件所有者” 和 “其他用户”,那么文件所有者对其他用户开放权限后,所有其他用户均能查看、修改文件。

但是,若文件所有者希望仅对部分用户开放,那么仅仅区分 “用户所有者” 和 “其他用户” 显然不满足需求。

这就引入了 “用户组的概念”。

2.2、用户组成员(Group)

将 “其他用户” 区分为用户组成员和其他人后,若文件所有者希望对部分用户开放权限,而对其他人继续保持私有,则只需要将这部分用户与文件所有者划入一个用户组。

这样,这部分用户就成了与文件所有者同组的用户组成员。用户可以对用户组成员开放文件权限,用户组成员则具备了查看、修改文件的权限,而对其他无关用户保持私有。

用户组成员在团队开发中非常有帮助。

例如,团队成员之间保持文件资源共享,但对非团队成员保持私有,这就需要将文件所有者与团队成员用户划分为同一个用户组,再对用户组成员开放权限即可。

需要注意的是,一个用户可在多个用户组中

2.3、其他人(Others)

顾名思义,就是与文件所有者没有任何联系的其他用户。

2.4、具体例子

至此,我们知道了 Linux 系统下,每一个文件都具有 “文件所有者”、“用户组”、“其他人” 三种身份。

我们举一个具体例子,来详细地了解 “文件所有者”、“用户组”、“其他人” 这三个角色的含义。

假设有一个班级,有一名老师。老师根据自己编写的教案(老师的教案不能分享给其他任何人),指导本班同学共同完成一个黑板报任务。老师为本班同学提供了黑板,并允许本班同学能够查看、修改黑板上的内容,不允许非本班的学生查看、修改黑板上的内容。

我们将这个例子与 Linux 中 ”文件所有者“、”用户组成员“、”其他人“ 进行映射:

老师——教案和黑板的 ”文件所有者“

教室——用户组,老师和学生同属一个用户组

学生——用户组成员

非本班学生——其他人

教案不能分享给任何人——老师是 “文件所有者”,将 ”教案“ 的权限对其他所有人保持私有。

黑板允许班级学生修改,但是不允许非本班人员修改——老师是 “文件所有者”,将 “黑板” 的权限对用户组成员开放权限,而对非用户组成员保持私有

2.5、0号用户——root

在这里不得不提 Linux 系统中,具有最高权限的用户——root。

root 用户是系统中唯一的一个超级管理员,拥有了系统中的所有权限,可以执行任何想要执行的操作,也正因为如此,处于安全考虑,一般情况下不推荐使用 root 用户进行日常使用。

root 用户所在的用户组称为 “root组”,处于 root 组的普通用户,能够通过 sudo 命令获取 root 权限。该部分会在本文第四部分说明。

三、用户与用户组在 Linux 中的记录

Linux 将用户账号、密码等相关的信息分别存储在四个文件夹下:

  • /etc/passwd —— 管理用户UID/GID重要参数
  • /etc/shadow —— 管理用户密码
  • /etc/group —— 管理用户组相关信息
  • /etc/gshadow —— 管理用户组管理员相关信息

这些文件中,每一行代表一个用户或一个用户组,并存储了相关的用户或用户组信息。

3.1、/etc/passwd

该文件中,每一行的存储格式为:

账号名称 : 密码 : UID : GID : 用户信息说明列 : 主文件夹 : shell

root : x : 0 : 0 : root : /root : /bin/bash

其中,

密码项显示 “x” 是出于安全考虑,Linux 将密码信息移到 /etc/shadow 进行存储;

每一个用户都有一个UID、GID,对应的含义就是UserID、GroupID,UID 会映射到 /etc/shadow 以获得密码信息,GID 会映射到 /etc/group 以获取用户的用户组信息

3.2、/etc/shadow

该文件中,每一行的存储格式为:

账号名称 : 密码 : 最近改动密码的日期 : 密码不可被改变的天数 : 密码需要重新更改的天数 : 更改提醒天数 : 密码过期后账号的宽限时间 : 账号失效日期 : 保留

root : (字符串,此处打码) : 200 : 0 : 99999 : 7 : : :

其中,

第二列表示密码加密后的字符串。

/etc/passwd 通过 UID,在该文件中找出对应 UID 的用户,并提取对应密码用于登陆验证。

3.3、/etc/group

该文件中,每一行的存储格式为:

用户组名称 : 用户组密码 : GID : 此用户组包含的账号名称

root : x : 0 : root

其中,

用户组密码通常是为了设置用户组管理员存在的,其信息也移动到 /etc/gshadow 中;

/etc/passwd 通过 GID,在该文件中找到对应的用户组,并提取用户组相关信息;

另外,由于一个用户可以在多个用户组中,因此就有一个初始用户组的有效用户组的概念。

所谓的初始用户组,就是用户所记录的 GID,是在创建用户时生成或指定的用户组;

所谓的有效用户组,就是利用命令 groups 查看并输出的首个用户组,即有效用户组;

用户在登录的时候,以初始用户组身份工作,用户可以用 newgrp 命令实现有效用户组的切换。

3.4、/etc/gshadow

该文件中,每一行的存储格式为:

用户组名 : 密码 : 用户组管理员账号 : 该用户组包含的账号名称

root : : : root

一般用户组不使用用户组管理员,相应地也就不需要设置密码。

————————————————
未完,第四部分碍于篇幅,若有兴趣,请移步原文链接阅读

原文链接:一篇读懂Linux用户管理与操作

————————————————
本文为原创文章,若要转载还请 原链转载

你可能感兴趣的:(一文读懂Linux用户管理与操作)