用户和用户组
三种用户 UID
在 Linux 系统中,用户可以分为以下三个主要类型:
-
超级用户(Superuser):超级用户也称为 root 用户,是系统的管理员账户。超级用户具有系统的最高权限,可以访问和修改系统的任何文件和配置。超级用户在执行敏感操作时需要谨慎,并且需要提供管理员密码进行验证。
-
系统用户(System User):系统用户是由系统或安装过程中自动生成的用户账户。这些用户账户专门用于运行系统进程或服务,并且不允许登录系统进行交互。系统用户没有登录系统的权限,因此无法直接与系统交互。
-
普通用户(Regular User):普通用户是由系统管理员或超级用户创建的一般用户账户。普通用户登录到系统后可以执行一般任务并运行应用程序,但没有访问系统关键文件和配置的特权。普通用户通常只能访问自己的用户目录和一些共享的资源。
每个类型的用户在系统中有不同的权限和角色,这样可以确保系统的安全性和管理的灵活性。超级用户用来管理整个系统,而系统用户和普通用户则是为了实现更细粒度的权限控制和用户管理。
用户组 GID
一对一,一对多,多对一,多对多
在 Linux 系统中,用户组(User Group)是一种将用户进行逻辑分组的机制。用户组可以用来授权和管理组中的用户访问文件、目录和其他系统资源。
以下是 Linux 系统中常见的用户组:
-
主用户组(Primary Group):每个用户在系统中都有一个主用户组,它是用户创建时分配的默认用户组。主用户组通常与用户的用户名相同,并且在用户的配置文件(如
/etc/passwd
文件)中定义。 -
辅助用户组(Supplementary Group):除了主用户组外,用户还可以加入一个或多个辅助用户组。可以从这些辅助用户组中获取额外的权限,以便用户可以访问组内其他用户所拥有的资源。
用户组在权限管理、访问控制以及文件和目录的所有权方面发挥重要作用。通过将用户放入特定的用户组,可以方便地授予或撤销组中用户对某些资源的访问权限。同时,用户组还可以用于文件和目录的权限设置,以允许组内用户共享访问或限制访问。
在 Linux 系统中,可以使用 groupadd
命令创建用户组,使用 groupmod
命令修改用户组,使用 groupdel
命令删除用户组。使用 usermod
命令可以将用户添加到或移出用户组。
三个重要文件
etc/passwd /etc/passwd
是一个位于 Linux 系统中的文件,用于存储系统中的用户账户信息。
具体而言,/etc/passwd
文件包含了每个用户账户的以下信息(以冒号分隔):
- 用户名:用户账户的登录名。
- 密码占位符:在过去,密码是以加密形式存储在
/etc/passwd
中,但现在通常是用一个占位符(如x
或*
)表示密码存储在/etc/shadow
文件中。 - 用户ID(UID):是一个唯一的数字标识符,用于标识用户账户。
- 主用户组ID(GID):与用户相关联的主用户组的标识符。
- 用户账户说明信息:一般是用户的全名或其他相关信息。
- 用户主目录:用户账户的主目录路径,通常是用户登录后所处位置。
- 登录Shell:用户登录后启动的默认 Shell。
现代的 Linux 系统通常使用 /etc/shadow
文件存储用户密码的加密哈希值,以提高密码的安全性。/etc/passwd
文件仍然存在,但只包含有关用户账户的基本信息。
Linux是认准UID并不是用户名,若将普通用户的UID在
etc/passwd
改为0,普通用户将有root权限。
/etc/shadow /etc/shadow
是 Linux 系统中的一个重要文件,用于存储用户账户的加密密码哈希值和其他与密码相关的安全信息。
具体而言,/etc/shadow
文件包含了每个用户账户的以下信息(以冒号分隔):
- 用户名:用户账户的登录名。
- 密码哈希值:经过加密算法处理的用户密码的哈希值。实际的密码不会以明文形式存储在此文件中。
- 上次密码更改时间:用户最近一次修改密码的时间,以自 1970 年 1 月 1 日以来的天数表示。
- 密码过期时间:用户密码过期的时间,以自 1970 年 1 月 1 日以来的天数表示,如果为 0,则意味着密码永远不会过期。
- 密码过期前的警告天数:在密码过期之前,系统向用户发送密码过期警告的天数。
- 密码过期后的宽限时间:密码过期后允许用户登录的宽限时间,超过宽限时间后,用户将无法登录。
- 密码失效时间:用户账户被禁用的时间,以自 1970 年 1 月 1 日以来的天数表示。
- 用户账户失效的原因:包含禁用或锁定用户账户的原因。
/etc/shadow
文件的权限非常重要,只有系统管理员(root 用户)才能读取和修改该文件,以确保密码信息的安全性。
需要注意的是,使用直接编辑 /etc/shadow
文件的方式是不推荐的,通常应该使用专门的命令(如 passwd
)来管理用户密码和相关设置,以保证密码的安全性和一致性。
/etc/group /etc/group
是 Linux 系统中的一个文件,它存储了用户组(Group)的信息。
具体而言,/etc/group
文件中的每一行都表示一个用户组,行中的字段由冒号分隔,通常包含以下信息:
- 组名:用户组的名称。
- 组密码占位符:在过去,组密码是以加密形式存储在
/etc/group
中,但现在通常是用一个占位符(如x
或*
)表示组密码存储在/etc/gshadow
文件中。 - 组ID(GID):是一个唯一的数字标识符,用于标识用户组。
- 组成员:属于该组的用户账户列表,它们以逗号分隔。
/etc/group
文件用于管理和组织用户。通过将用户添加到特定的用户组,可以轻松管理对文件、目录和其他系统资源的访问权限。用户组还可以用于共享文件以及对文件和目录的权限设置。
需要注意的是,同样地,直接编辑 /etc/group
文件并不被推荐。应该使用专门的管理命令(如 groupadd
、groupmod
、groupdel
)来创建、修改和删除用户组,以确保数据的一致性和安全性。
文件权限
在 Linux 系统中,每个文件和目录都有相应的文件权限,用于控制对它们的访问和操作权限。文件权限由三个方面组成:所有者权限、群组权限和其他用户权限。
-
所有者权限:表示文件或目录的所有者对其具有的权限。所有者权限包括读取权限(r,数值为4)、写入权限(w,数值为2)和执行权限(x,数值为1)。
-
群组权限:表示文件或目录所属的用户组对其具有的权限。群组权限的设置方式与所有者权限相同。
-
其他用户权限:表示除所有者和群组外的其他用户对文件或目录具有的权限,也被称为"其他"权限。
通过将不同权限的数值相加,可以为每个文件或目录分配一个三位数的权限模式。例如,权限模式为 755 表示所有者具有读、写和执行权限(7),而群组和其他用户具有读和执行权限(5)。
以下是常见的文件权限模式及其含义:
- rwx:具有读、写和执行权限。
- rw-:具有读和写权限,但没有执行权限。
- r-x:具有读和执行权限,但没有写权限。
- r--:只具有读权限,没有写和执行权限。
- -wx:具有写和执行权限,但没有读权限。
- -w-:只具有写权限,没有读和执行权限。
- --x:只具有执行权限,没有读和写权限。
- ---:没有任何权限。
文件权限可以使用 chmod
命令进行更改。例如,使用 chmod 755 file.txt
命令将文件 file.txt
的权限更改为 755。
需要注意的是,修改文件权限可能需要足够的权限,通常需要使用 root 用户或具有超级用户权限的用户才能执行此操作。