什么是用户?
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等。具体如下:
- useradd:用于添加新用户。基本语法是
useradd 用户名
,例如useradd user1
会创建一个名为 user1 的新用户。在添加用户时,可以使用一些选项来设置用户的详细信息,如手动设置用户的UID或主目录。 - userdel:用于删除用户。命令格式为
userdel 用户名
,这将删除指定的用户以及可能与该用户关联的主目录。 - usermod:用于修改已有用户的属性。例如,可以使用它来改变用户的密码过期信息、登录名、主目录等。
- passwd:用于更改用户密码。系统管理员可以使用
passwd 用户名
来为用户设置或更改密码。
下面是每个命令详细的使用方式:
-
useradd:用于添加新用户。基本语法是
useradd 用户名
,例如useradd user1
会创建一个名为 user1 的新用户。在添加用户时,可以使用一些选项来设置用户的详细信息,如手动设置用户的UID或主目录。-u
:指定用户的UID。-g
:指定用户的初始登录组。-d
:指定用户的主目录。-s
:指定用户的默认shell。-c
:添加注释。-m
:如果主目录不存在,则创建它。-p
:为新用户设置密码。
-
userdel:用于删除用户。命令格式为
userdel 用户名
,这将删除指定的用户以及可能与该用户关联的主目录。-r
:同时删除用户的主目录和邮件目录。
-
usermod:用于修改已有用户的属性。例如,可以使用它来改变用户的密码过期信息、登录名、主目录等。
-l
:更改用户的登录名。-c
:更改用户的注释。-d
:更改用户的主目录。-m
:将用户的主目录移动到新的路径。-e
:更改用户的过期日期。-f
:更改用户的密码过期天数。-g
:更改用户的初始登录组。-G
:将用户添加到一个或多个附加的组中。-L
:锁定用户账户。-U
:解锁用户账户。-s
:更改用户的默认shell。
-
passwd:用于更改用户密码。系统管理员可以使用
passwd 用户名
来为用户设置或更改密码。-l
:锁定用户账户。-u
:解锁用户账户。-d
:使密码无效。-e
:使密码过期。-S
:显示密码状态。-n
:不更新密码文件。-x
:密码永不过期。-w
:密码过期后的宽限天数。-R
:强制用户在下次登录时更改密码
其他用户命令
-
id
id
命令用于打印用户和组的实际和有效ID。实际ID(Real ID)是在登录时分配的,而有效ID(Effective ID)是用于确定访问权限的。- 语法:
id [选项] [用户名]
- 常用选项:
-u
: 显示用户ID(UID)。-g
: 显示初始组ID(GID)。-G
: 显示所有附加组ID。-n
: 显示名称而不是数字ID。-r
: 显示实际ID而不是有效ID。
- 语法:
-
chfn
chfn
命令用于更改用户的个人信息,如办公室地址、电话号码等。- 语法:
chfn [选项] [用户名]
- 常用选项:
-f
: 更改用户的全名。-o
: 更改用户的办公室位置。-p
: 更改用户的电话号码。-h
: 更改用户的主页目录。-i
: 更改用户的即时消息命令。
- 语法:
-
chsh
chsh
命令用于更改用户的登录shell。- 语法:
chsh [选项] [用户名]
- 常用选项:
-s
: 指定新的登录shell。
- 语法:
-
finger
finger
命令用于查询用户信息,包括登录名、Shell、上次登录时间等。- 语法:
finger [选项] [用户名]
- 常用选项:
-l
: 显示用户的登录信息,包括登录名、Shell、上次登录时间等。
- 语法:
-
sudo
sudo
命令允许用户以其他用户(通常是root)的身份执行命令。这是一种常用的权限提升工具,用于执行需要更高权限的命令,而不必直接使用root账户。- 语法:
sudo [选项] 命令
- 常用选项:
-u
: 指定要以其身份运行命令的用户。-s
: 启动当前用户的环境。-i
: 启动目标用户的环境。
- 语法:
-
su
su
命令用于切换当前用户身份到其他用户,通常用于切换到root用户。与sudo
不同,su
会启动一个新的登录会话,并加载目标用户的环境。- 语法:
su [选项] [用户名]
- 常用选项:
-c
: 执行指定的命令。-s
: 指定新用户的登录shell。-
: 保留当前环境的配置。
- 语法:
用户组相关命令
Linux 下管理用户组的命令主要有 groupadd、groupmod、groupdel等。具体如下:
-
groupadd:用于创建一个新的用户组。
- 语法:
groupadd [选项] 组名
- 常用选项:
-g GID
:指定新组的组ID(GID)。-f
:如果组已经存在,则返回错误。-o
:允许创建具有相同GID的组。-r
:创建系统组。
- 语法:
-
groupdel:用于删除一个已存在的用户组。
- 语法:
groupdel [选项] 组名
- 常用选项:
-f
:强制删除组,即使组中仍有成员。
- 语法:
-
groupmod:用于修改已存在的用户组的属性。
- 语法:
groupmod [选项] 组名
- 常用选项:
-g GID
:更改组ID(GID)。-n 新组名
:更改组名。
- 语法:
-
newgrp:用于临时切换当前用户的主组或附加组到指定的组。
- 语法:
newgrp [选项] 组名
- 常用选项:
-l
:将新组的路径作为当前目录。
- 语法:
-
groups:用于显示当前用户的组成员资格,即用户所属的所有组。
- 语法:
groups [选项] [用户名]
- 常用选项:
-g
:仅显示组ID。
- 语法:
-
gpasswd:用于管理用户组的密码,尽管这在现代Linux系统中不太常见。
- 语法:
gpasswd [选项] 组名
- 常用选项:
-a 用户名
:将用户添加到组中。-d 用户名
:从组中删除用户。-A
:添加用户到组并设置密码。-M
:添加用户到组并禁止设置密码。
- 语法: