什么是用户?

Linux用户是指被授权访问和使用Linux系统资源和执行命令的实体

Linux是一个多用户、多任务的操作系统,它允许多个用户同时登录并执行不同的任务。在Linux中,每个用户都有自己的用户名和密码,以及与之关联的用户账户,这个账户定义了用户可以访问哪些文件和目录,以及他们可以执行哪些操作。以下是Linux用户的主要特点:

  • 类型:Linux系统中的用户可以分为两类,普通用户(Regular User)和超级用户(Superuser)。普通用户通常执行日常任务,而超级用户(通常指root用户)拥有对系统的完全控制权限,包括修改系统配置和管理其他用户账户的能力。
  • 层级:Linux通过用户层级的概念来管理权限。每个用户都有一个用户ID(UID),其中root用户的UID为0,拥有最高权限。其他用户的UID则是唯一的,用于区分不同的用户。
  • 资源分配:Linux系统公平地分配系统资源和工作环境给每个用户。这意味着每个用户可以有自己的主目录、文件和应用程序设置,这些内容对其他用户通常是不可见的。
  • 安全性:Linux系统通过用户账户和密码来保护用户数据的安全性。每个用户都需要通过自己的用户名和密码登录系统,这样就能确保用户的数据只能被授权的用户访问。

什么是用户组?

Linux用户组是一组用户的集合,它们被定义用于简化对多个用户的权限管理和资源分配

在Linux系统中,用户组是一个重要的概念,它允许系统管理员对属于同一组的所有用户进行集中管理。每个用户在创建时都会归属于至少一个用户组,这个组称为用户的主组。此外,用户可以属于零个或多个辅助组。这种结构使得权限的分配和管理变得更加灵活和方便。以下是用户组的一些关键特点:

  • 组ID(GID):每个用户组都有一个唯一的组ID(GID),它是标识用户组的数值。组信息保存在 /etc/group 文件中。
  • 文件权限:用户组的概念在文件系统的权限管理中非常重要。文件和目录可以设置特定的权限,供组成员读取、写入或执行。这样,系统管理员可以通过管理用户组来间接控制用户对文件系统的访问。
  • 用户和用户组文件:用户的帐号信息,包括密码以外的所有相关信息,通常存储在 /etc/passwd 文件中,而用户组的信息则存储在 /etc/group 文件中。这些文件由系统维护,并包含了用户和用户组的详细数据。
  • 组的创建和管理:系统管理员可以使用一系列命令来创建、修改或删除用户组。例如,groupadd 命令用于创建新的用户组。
  • 主组与附属组:每个用户有一个主组,这是他们被自动归属的组。除此之外,用户还可以被添加到一个或多个附属组,以便于更精确地控制用户对系统资源的访问。

用户和用户组的关系

Linux下用户和用户组具有一定的关系,主要体现在权限管理和文件所有权等方面。具体如下:

  • 权限管理:用户组是一种将多个用户集合在一起的管理方式,它可以简化权限分配和管理。例如,一个项目团队的所有成员可以被添加到同一个用户组中,然后该组可以被赋予对项目文件的特定权限,这样每个团队成员都将继承这些权限。
  • 文件所有权:在Linux中,每个文件都有所有者(owner)和组(group)的概念。文件的所有者是指创建该文件的用户,而组则是指一组用户的集合。文件的权限分为三种类型:所有者权限、组权限和其他用户权限。通过将用户添加到相同的组,他们可以共享组权限,这有助于协作和资源的共享。
  • 用户和用户组配置文件:在Linux系统中,所创建的用户账号和其相关信息(密码除外)均是存放在 /etc/passwd 配置文件中。这个文件包含了用户的用户名、用户ID(UID)、主目录、默认shell以及用户所属的主组ID(GID)等信息。而用户密码则存储在 /etc/shadow 文件中,这是一个只有root用户才能访问的安全文件。用户组的信息,包括组名、组ID(GID)和组成员列表等,则存储在 /etc/group 文件中。
  • 用户组的作用:用户组的存在不仅有助于管理用户,还可以用于定义一组用户的共同属性和权限。例如,系统管理员可能会创建一个名为 “developers” 的用户组,并为该组分配对某些开发工具的访问权限。然后,所有需要这些工具的开发人员都可以被添加到这个组中,而无需为每个用户单独设置权限。

用户相关命令

linux下管理用户的命令主要包括useradd、userdel、usermod、passwd等。具体如下:

  1. useradd:用于添加新用户。基本语法是 useradd 用户名,例如 useradd user1 会创建一个名为 user1 的新用户。在添加用户时,可以使用一些选项来设置用户的详细信息,如手动设置用户的UID或主目录。
  2. userdel:用于删除用户。命令格式为 userdel 用户名,这将删除指定的用户以及可能与该用户关联的主目录。
  3. usermod:用于修改已有用户的属性。例如,可以使用它来改变用户的密码过期信息、登录名、主目录等。
  4. passwd:用于更改用户密码。系统管理员可以使用 passwd 用户名 来为用户设置或更改密码。

下面是每个命令详细的使用方式:

  1. useradd:用于添加新用户。基本语法是 useradd 用户名,例如 useradd user1 会创建一个名为 user1 的新用户。在添加用户时,可以使用一些选项来设置用户的详细信息,如手动设置用户的UID或主目录。

    • -u:指定用户的UID。
    • -g:指定用户的初始登录组。
    • -d:指定用户的主目录。
    • -s:指定用户的默认shell。
    • -c:添加注释。
    • -m:如果主目录不存在,则创建它。
    • -p:为新用户设置密码。
  2. userdel:用于删除用户。命令格式为 userdel 用户名,这将删除指定的用户以及可能与该用户关联的主目录。

    • -r:同时删除用户的主目录和邮件目录。
  3. usermod:用于修改已有用户的属性。例如,可以使用它来改变用户的密码过期信息、登录名、主目录等。

    • -l:更改用户的登录名。
    • -c:更改用户的注释。
    • -d:更改用户的主目录。
    • -m:将用户的主目录移动到新的路径。
    • -e:更改用户的过期日期。
    • -f:更改用户的密码过期天数。
    • -g:更改用户的初始登录组。
    • -G:将用户添加到一个或多个附加的组中。
    • -L:锁定用户账户。
    • -U:解锁用户账户。
    • -s:更改用户的默认shell。
  4. passwd:用于更改用户密码。系统管理员可以使用 passwd 用户名 来为用户设置或更改密码。

    • -l:锁定用户账户。
    • -u:解锁用户账户。
    • -d:使密码无效。
    • -e:使密码过期。
    • -S:显示密码状态。
    • -n:不更新密码文件。
    • -x:密码永不过期。
    • -w:密码过期后的宽限天数。
    • -R:强制用户在下次登录时更改密码

其他用户命令

  1. id id命令用于打印用户和组的实际和有效ID。实际ID(Real ID)是在登录时分配的,而有效ID(Effective ID)是用于确定访问权限的。

    • 语法:id [选项] [用户名]
    • 常用选项:
      • -u: 显示用户ID(UID)。
      • -g: 显示初始组ID(GID)。
      • -G: 显示所有附加组ID。
      • -n: 显示名称而不是数字ID。
      • -r: 显示实际ID而不是有效ID。
  2. chfn chfn命令用于更改用户的个人信息,如办公室地址、电话号码等。

    • 语法:chfn [选项] [用户名]
    • 常用选项:
      • -f: 更改用户的全名。
      • -o: 更改用户的办公室位置。
      • -p: 更改用户的电话号码。
      • -h: 更改用户的主页目录。
      • -i: 更改用户的即时消息命令。
  3. chsh chsh命令用于更改用户的登录shell。

    • 语法:chsh [选项] [用户名]
    • 常用选项:
      • -s: 指定新的登录shell。
  4. finger finger命令用于查询用户信息,包括登录名、Shell、上次登录时间等。

    • 语法:finger [选项] [用户名]
    • 常用选项:
      • -l: 显示用户的登录信息,包括登录名、Shell、上次登录时间等。
  5. sudo sudo命令允许用户以其他用户(通常是root)的身份执行命令。这是一种常用的权限提升工具,用于执行需要更高权限的命令,而不必直接使用root账户。

    • 语法:sudo [选项] 命令
    • 常用选项:
      • -u: 指定要以其身份运行命令的用户。
      • -s: 启动当前用户的环境。
      • -i: 启动目标用户的环境。
  6. su su命令用于切换当前用户身份到其他用户,通常用于切换到root用户。与sudo不同,su会启动一个新的登录会话,并加载目标用户的环境。

    • 语法:su [选项] [用户名]
    • 常用选项:
      • -c: 执行指定的命令。
      • -s: 指定新用户的登录shell。
      • -: 保留当前环境的配置。

用户组相关命令

Linux 下管理用户组的命令主要有 groupadd、groupmod、groupdel等。具体如下:

  1. groupadd:用于创建一个新的用户组。

    • 语法:groupadd [选项] 组名
    • 常用选项:
      • -g GID:指定新组的组ID(GID)。
      • -f:如果组已经存在,则返回错误。
      • -o:允许创建具有相同GID的组。
      • -r:创建系统组。
  2. groupdel:用于删除一个已存在的用户组。

    • 语法:groupdel [选项] 组名
    • 常用选项:
      • -f:强制删除组,即使组中仍有成员。
  3. groupmod:用于修改已存在的用户组的属性。

    • 语法:groupmod [选项] 组名
    • 常用选项:
      • -g GID:更改组ID(GID)。
      • -n 新组名:更改组名。
  4. newgrp:用于临时切换当前用户的主组或附加组到指定的组。

    • 语法:newgrp [选项] 组名
    • 常用选项:
      • -l:将新组的路径作为当前目录。
  5. groups:用于显示当前用户的组成员资格,即用户所属的所有组。

    • 语法:groups [选项] [用户名]
    • 常用选项:
      • -g:仅显示组ID。
  6. gpasswd:用于管理用户组的密码,尽管这在现代Linux系统中不太常见。

    • 语法:gpasswd [选项] 组名
    • 常用选项:
      • -a 用户名:将用户添加到组中。
      • -d 用户名:从组中删除用户。
      • -A:添加用户到组并设置密码。
      • -M:添加用户到组并禁止设置密码。