锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. Linux---系统的初步学习【 项目四 管理Linux 系统用户、组和权限】

Linux---系统的初步学习【 项目四 管理Linux 系统用户、组和权限】

0
  • 软件开发
  • 发布于 2024-08-17
  • 0 次阅读
黄健
黄健

项目四 管理Linux 系统用户、组和权限

4.1 项目知识初储备

4.1.1Linux用户和组

1. Linux用户和组

在Linux系统中,用户和组是权限管理的基础。用户(User)代表系统中的一个账户,可以是个人或服务。组(Group)是具有相似权限需求的用户的集合。通过用户和组,Linux系统实现了对资源的访问控制。

用户的特点:
  • 每个用户都有一个唯一的用户名。
  • 用户可以有自己的密码,用于系统认证。
  • 用户可以登录系统并执行操作。
  • 用户可以属于一个或多个组。
组的特点:
  • 组是用户账户的集合,通常用于权限管理。
  • 每个组都有一个唯一的组名。
  • 组内的成员可以共享对文件和目录的访问权限。
2. 用户组

用户组是Linux系统中用于组织用户的一种方式。组可以有以下类型:

  • 普通组:由普通用户组成,通常用于共享文件和资源。
  • 系统组:由系统服务和程序组成,用于运行系统服务和维护系统操作。
3. 用户和用户组的关系

用户和用户组之间的关系是多对多的,即一个用户可以属于多个组,一个组也可以包含多个用户。这种关系通过以下方式定义和管理:

  • 主组:每个用户都有一个主组,通常是以用户名命名的组。用户创建文件时,默认归属于这个组。
  • 附加组:用户还可以属于其他附加组,以扩展其权限。

用户可以通过/etc/group文件中的条目来分配到组,例如:

wheel:x:10:alice,bob

这里wheel是组名,x表示加密的组密码(通常不使用),10是组ID(GID),alice和bob是该组的成员。

4. UID和GID

UID(User Identifier)和GID(Group Identifier)是Linux系统中用于标识用户和组的唯一数字。

  • UID:每个用户都被分配一个唯一的UID。UID为-1表示没有用户,0是root用户的特殊UID。
  • GID:每个组都有一个唯一的GID。系统组的GID通常小于1000,普通用户的GID从1000开始。

UID和GID在以下文件中定义:

  • /etc/passwd:包含用户账户信息,每行以用户的UID和GID结束。

    username:x:UID:GID:Gecos:/home/username:/bin/bash
    
  • /etc/group:包含组信息,每行以组的GID结束。

    groupname:x:GID:userlist
    
权限管理

Linux系统中的文件和目录权限由以下三个类别组成:

  • 用户(u):文件所有者的权限。
  • 组(g):文件所有者所在组的权限。
  • 其他(o):既不是文件所有者也不是组内成员的用户的权限。

使用chmod命令可以设置这些权限,例如:

  • chmod u+rwx file:给文件所有者读、写和执行权限。
  • chmod g+r file:给文件所有者所在组读权限。
总结

用户和组的管理是Linux系统安全和权限控制的关键。通过合理分配UID和GID,以及管理用户和组的成员关系,可以确保系统资源的合理访问和保护。

4.1.2 用户配置文件

在Linux系统中,用户配置文件包含了用户账户的重要信息,这些文件由系统管理员管理,用于控制用户账户的行为和权限。以下是详细介绍的三个主要用户配置文件:

1. /etc/passwd 文件

/etc/passwd 是Linux系统中存储用户账户信息的主要文件。这个文件中的每条记录都包含了关于用户的基本信息,格式如下:

username:x:UID:GID:Gecos:home_dir:login_shell
  • username:用户的登录名。
  • x :加密密码的占位符,密码实际存储在/etc/shadow文件中。
  • UID:用户的唯一标识符(User Identifier)。
  • GID:用户主组的组标识符(Group Identifier)。
  • Gecos:通常用于存储用户的真实姓名或描述,源自早期的系统(如UNIX)。
  • home_dir:用户的主目录路径。
  • login_shell:用户登录时使用的默认Shell。
示例:
john:x:1001:1001:John Doe,,,:/home/john:/bin/bash
2. /etc/shadow 文件

/etc/shadow 文件存储了用户的密码信息,包括密码的加密哈希和相关密码政策。这个文件比/etc/passwd文件更安全,因为它减少了密码信息被未授权访问的风险。每条记录的格式如下:

username:hashed_password:last_change:minimum:maximum:warning:inactive:expire:flag
  • username:用户的登录名。
  • hashed_password :密码的加密哈希值。如果字段中是!或*,则表示密码被锁定或不可用。
  • last_change:密码最后一次更改的日期,表示为自1970年1月1日以来的天数。
  • minimum:用户必须等待的天数,才能再次更改密码。
  • maximum:密码过期前的有效天数。
  • warning:在密码过期前用户将收到警告的天数。
  • inactive:密码过期后,账户将被禁用的天数。
  • expire:账户或密码的过期日期,表示为自1970年1月1日以来的天数。
  • flag:保留字段,通常未使用。
3. /etc/login.defs 文件

/etc/login.defs 文件包含了用户和组的默认配置,这些配置将被useradd、groupadd、passwd和gpasswd等命令使用。这个文件定义了用户账户的默认设置,如密码策略、UID和GID的范围等。以下是一些常见的配置选项:

  • PASS_MAX_DAYS:密码的最大有效天数。
  • PASS_MIN_DAYS:密码的最小更改间隔。
  • PASS_WARN_AGE:密码过期前用户将收到警告的天数。
  • ENCRYPT_METHOD:密码加密的方法(如MD5、SHA256等)。
  • UID_MIN 和 UID_MAX:系统用户和普通用户UID的范围。
  • GID_MIN 和 GID_MAX:系统组和普通组GID的范围。
示例配置:
PASS_MAX_DAYS	90
PASS_MIN_DAYS	7
PASS_WARN_AGE	7
ENCRYPT_METHOD SHA512
UID_MIN		1000
UID_MAX		60000
GID_MIN		1000
GID_MAX		60000
总结

这些配置文件是Linux系统中用户和组管理的核心。/etc/passwd提供了用户账户的基本框架,/etc/shadow增加了安全性,而/etc/login.defs定义了系统级的默认设置。系统管理员需要理解这些文件的结构和用途,以确保用户账户的安全和有效管理。

4.1.3 用户组配置文件

在Linux系统中,用户组的配置文件用于定义系统中的组账户以及它们的属性。以下是两个主要的用户组配置文件的详细介绍:

1. /etc/group 文件

/etc/group 文件存储了系统中所有组账户的信息。这个文件的每条记录包含了组的基本信息,格式如下:

groupname:password:GID:member1,member2,...
  • groupname:组的名称。
  • password :组加密密码的占位符或实际密码(通常不使用组密码)。如果密码字段是x,则表示组密码存储在/etc/gshadow文件中。
  • GID:组的唯一标识符(Group Identifier)。
  • member1, member2, ...:属于该组的用户列表,可以包括一个或多个用户名,用逗号分隔。
示例:
wheel:x:10:alice,bob
2. /etc/gshadow 文件

/etc/gshadow 文件存储了组密码和相关属性,类似于用户的/etc/shadow文件。这个文件提供了额外的安全性,因为它允许组密码与组的基本配置分开存储。/etc/gshadow文件的格式如下:

groupname:hashed_password:administrators:members
  • groupname:组的名称。
  • hashed_password :组密码的加密哈希值。如果组没有密码,则该字段通常包含一个!或*。
  • administrators :可以修改组成员资格的管理员列表。这通常是一个用户名列表,用逗号分隔。如果字段是x,则表示管理员与组成员相同。
  • members:实际属于该组的成员列表。这通常是一个用户名列表,用逗号分隔。
示例:
wheel:*:alice:bob
配置文件的用途
  • /etc/group 和 /etc/gshadow 文件共同定义了Linux系统中的组账户和它们的属性。这些文件对于权限管理至关重要,因为它们决定了哪些用户可以访问哪些资源。

  • 组密码(如果使用)可以用于系统级的工具和服务,这些服务可能需要以某个组的身份运行。

  • /etc/gshadow 提供了一种机制,允许特定的用户(管理员)管理组的成员资格,而不必知道组密码。

总结

​ /etc/group 和 /etc/gshadow 文件是Linux系统中管理用户组的核心配置文件。它们提供了一种机制来组织用户、分配权限,并在必要时对组进行密码保护。系统管理员需要熟悉这些文件的结构和用途,以确保系统的安全性和有效管理。

4.2 项目实施

4.2.1 任务一 :管理用户

好的,让我们更深入地了解每个步骤中使用到的命令及其参数的含义,以便更全面地理解用户管理任务。

步骤1:添加新用户
  • useradd命令用于创建一个新的用户账户。参数说明:

    • newuser:指定新用户的用户名。
    sudo useradd newuser
    
  • passwd命令用于为用户设置密码。当指定用户时,系统会提示输入密码。

    • newuser:指定需要设置密码的用户。
    sudo passwd newuser
    
步骤2:设置用户属性
  • id命令显示指定用户的UID、GID以及所属的组。

    • newuser:指定要查询信息的用户。
    id newuser
    
  • usermod命令用于修改现有用户的属性。参数说明:

    • -s:指定用户的登录Shell。
    • /bin/bash:指定新的登录Shell路径。
    sudo usermod -s /bin/bash newuser
    
    • -d:指定用户的主目录。
    • /new/home/dir:新的主目录路径。
    sudo usermod -d /new/home/dir newuser
    
    • -g:更改用户的主组。
    • newgroup:新的主组名称。
    sudo usermod -g newgroup newuser
    
    • -aG:将用户添加到附加的组,而不删除其原有组成员资格。
    • additionalgroup:要添加到的附加组的名称。
    sudo usermod -aG additionalgroup newuser
    
步骤3:删除用户
  • userdel命令用于删除用户账户。参数说明:

    • newuser:指定要删除的用户。
    • -r:删除用户的同时,删除用户的主目录和邮件目录。
    sudo userdel -r newuser
    
步骤4:查看用户信息
  • cat命令用于查看文件内容。这里用来查看/etc/passwd文件,其中包含了所有用户的基本信息。

    cat /etc/passwd
    
  • getent命令用于获取/etc/passwd或/etc/shadow等文件中的条目。

    • passwd:指定查看的文件类型(这里是passwd)。
    • newuser:指定要查询的用户。
    getent passwd newuser
    
步骤5:管理用户权限
  • chown命令用于更改文件或目录的所有者。参数说明:

    • newuser:新的所有者用户名。
    • /path/to/file:指定要更改所有者的文件或目录路径。
    sudo chown newuser /path/to/file
    
  • chgrp命令用于更改文件或目录的用户组。参数说明:

    • newgroup:新的用户组名称。
    • /path/to/file:指定要更改组的文件或目录路径。
    sudo chgrp newgroup /path/to/file
    
  • chmod命令用于更改文件或目录的权限。参数说明:

    • 755:设置权限,其中7表示所有者有读、写、执行权限,5表示组和其他用户有读和执行权限。
    sudo chmod 755 /path/to/file
    
步骤6:用户登录和注销
  • who命令显示当前登录系统的用户列表。

    who
    
步骤7:监控用户活动
  • last命令显示用户的登录历史记录。

    last
    
  • lastlog命令显示系统中所有用户的最后登录时间。

    lastlog
    
注意事项
  • 执行用户管理操作时,通常需要root权限或使用sudo提升权限。
  • 删除用户前,确保备份重要数据,使用-r选项会删除用户的主目录。
  • 使用-aG选项添加用户到附加组时,不会影响用户已有的组成员资格。
  • 合理设置用户权限,遵循最小权限原则,只授予用户完成任务所需的最小权限。

通过这些详细的步骤和参数解释,你应该能够更全面地理解如何在Linux系统中管理用户账户。

4.2.2 任务二 管理组

管理组(Group Management)在Linux系统中是权限和资源访问控制的一个重要方面。以下是详细步骤和解释,包括如何添加、修改、删除组,以及如何管理组内用户的权限。

步骤1:添加新组
  • groupadd命令用于创建一个新的组。例如,创建一个名为newgroup的组:

    sudo groupadd newgroup
    
    • 如果需要,可以同时指定GID:

      sudo groupadd -g 1001 newgroup
      
      • -g 1001:指定新组的GID为1001。
步骤2:修改组属性
  • groupmod命令用于修改现有组的属性。例如,更改组的GID:

    sudo groupmod -g 1002 newgroup
    
    • -g 1002:设置组的新GID。
  • 更改组名:

    sudo groupmod -n newgroupname newgroup
    
    • -n newgroupname:将组名从newgroup更改为newgroupname。
步骤3:删除组
  • groupdel命令用于删除一个已有的组。例如,删除名为newgroup的组:

    sudo groupdel newgroup
    
步骤4:查看组信息
  • cat或getent命令用于查看/etc/group文件的内容,显示所有组的列表和它们的GID:

    cat /etc/group
    # 或者
    getent group
    
  • 要查看特定组的详细信息,可以使用:

    getent group newgroup
    
步骤5:管理组内用户
  • 将用户添加到组中,可以使用usermod命令:

    sudo usermod -aG newgroup username
    
    • -aG newgroup:将username用户添加到newgroup组,-a选项表示附加,不从用户原有的组中移除。
  • 从组中删除用户,仍然使用usermod命令:

    sudo usermod -G newgroup username
    
    • -G newgroup:将username用户的主组更改为newgroup,如果用户之前属于其他组,这些组将不再包含此用户。
  • 使用gpasswd命令管理组密码(如果使用):

    • 设置组密码:

      sudo gpasswd -A newgroup
      
      • -A:为组设置密码,组成员可以使用这个密码访问组资源。
    • 删除组密码:

      sudo gpasswd -R newgroup
      
      • -R:删除组密码。
步骤6:监控组的使用
  • 使用groups命令查看用户所属的所有组:

    groups username
    
  • 使用newgrp命令更改当前会话的组:

    newgrp newgroup
    
    • 这将更改当前会话的组,允许访问该组的文件和资源。
注意事项
  • 在执行组管理操作时,通常需要root权限或使用sudo提升权限。
  • 管理组和用户时要谨慎,错误的配置可能会影响系统的安全性和用户的正常使用。
  • 确保在删除组之前,该组内没有用户,或者已经将用户转移到其他组。
  • 使用-aG选项将用户添加到附加组时,用户将保留其原始组成员资格。

通过这些步骤和参数解释,你应该能够更全面地理解如何在Linux系统中管理组账户,包括添加新组、修改组属性、删除组、查看组信息、管理组内用户以及监控组的使用。

4.2.3 任务三 : 管理账户常用命令

在Linux系统中,管理用户账户和组账户涉及一系列命令,每个命令都有其特定的选项和参数。以下是一些常用命令的详细介绍:

用户账户管理命令
  1. useradd - 添加新用户

    • -c comment:提供用户的描述或注释。
    • -d home_dir:指定用户的主目录。
    • -g initial_group:指定用户的第一个有效组。
    • -s shell:指定用户的登录Shell。
    sudo useradd -c "John Doe" -g 1001 -s /bin/bash newuser
    
  2. usermod - 修改现有用户

    • -u UID:更改用户的UID。
    • -g GID:更改用户的主要GID。
    • -d home_dir:更改用户的主目录。
    • -l new_name:更改用户的账户名。
    sudo usermod -g 1002 -d /new/home/newuser newuser
    
  3. userdel - 删除用户

    • -r:删除用户及其主目录和邮件目录。
    sudo userdel -r username
    
  4. passwd - 更改用户密码

    • 无参数时,更改当前用户的密码。
    sudo passwd username
    
  5. chage - 更改用户账户的密码属性

    • -d 0:将密码的最后更改日期设置为当前日期。
    • -m days:设置密码的最小存活期。
    • -M days:设置密码的最大存活期。
    sudo chage -d 0 -m 5 -M 90 username
    
  6. id - 显示用户的UID、GID和所属组

    • -u:仅显示UID。
    • -g:仅显示GID。
    • -G:显示用户所属的所有组。
    id -u username
    
  7. su - 切换用户

    • -l:模拟完整的登录,包括环境变量的加载。
    su - username
    
组账户管理命令
  1. groupadd - 添加新组

    • -g GID:指定新组的GID。
    sudo groupadd -g 1001 newgroup
    
  2. groupmod - 修改现有组

    • -g GID:更改组的GID。
    • -n new_name:更改组名。
    sudo groupmod -g 1002 -n newgroupname newgroup
    
  3. groupdel - 删除组

    sudo groupdel groupname
    
  4. gpasswd - 更改组密码或设置组管理员

    • -a user:将用户添加到组管理员列表。
    • -d user:从组中删除用户。
    sudo gpasswd -a username newgroup
    
  5. newgrp - 改变当前会话的组

    newgrp groupname
    
  6. groups - 显示用户所属的所有组

    groups username
    
其他辅助命令
  1. whoami - 显示当前用户的用户名

    whoami
    
  2. who - 显示当前登录系统的所有用户

    who
    
  3. last - 显示用户登录记录

    last username
    
  4. lastlog - 显示系统中所有用户的最后登录时间

    lastlog
    
  5. logins - 显示/etc/passwd文件中所有用户的摘要信息

    logins
    
注意事项
  • 使用上述命令时,大多数需要root权限或使用sudo来执行。
  • 在更改用户密码时,确保遵循安全策略,如使用强密码。
  • 使用usermod和groupmod命令更改用户或组的属性时,要确保新的属性不会引起系统的权限问题。
  • 在删除用户或组之前,确保这些账户没有正在运行的进程或重要的数据。
  • 使用chage命令管理密码策略时,要确保遵循组织的密码政策。

通过这些命令,你可以执行用户和组的创建、修改、删除和权限管理等操作,确保系统安全性和符合组织策略。

4.2.4 任务四 : Linux文件权限管理

Linux文件权限管理是操作系统中控制对文件和目录访问的重要组成部分。文件权限决定了谁可以读、写或执行文件。以下是详细介绍Linux文件权限管理的各个方面:

文件权限的类型
  1. 读权限(r):允许用户查看文件内容或目录列表。
  2. 写权限(w):允许用户修改文件内容或在目录中创建、删除文件。
  3. 执行权限(x):允许用户执行文件作为程序或访问目录。
文件权限的主体
  1. 所有者(Owner):文件的所有者,通常是创建文件的用户。
  2. 组(Group):文件所属的用户组。
  3. 其他(Others):既不是所有者也不是组内成员的任何用户。
文件权限的表示方法
  1. 数字表示法 :使用数字代码表示权限,其中4代表读(r),2代表写(w),1代表执行(x)。例如,7(可读可写可执行)= 4+2+1。
  2. 符号表示法 :使用字母简写表示权限,如rwx。
命令和工具
  1. ls -l:列出目录内容及其权限。

    ls -l /path/to/directory
    
  2. chmod:更改文件或目录的权限。

    • 使用数字代码:chmod 755 filename(所有者可读可写可执行,组和其他用户可读可执行)。
    • 使用符号代码:chmod u+x filename(给所有者添加执行权限)。
  3. chown:更改文件或目录的所有者。

    sudo chown newowner filename
    
  4. chgrp:更改文件或目录的组。

    sudo chgrp newgroup filename
    
  5. setfacl:设置文件或目录的访问控制列表(ACL),允许更精细的权限控制。

    setfacl -m u:newuser:rwx filename
    
  6. getfacl:获取文件或目录的ACL。

    getfacl filename
    
特殊权限
  1. SetUID(S):当设置在可执行文件上时,允许用户以文件所有者的权限执行该文件。
  2. SetGID(S):当设置在目录上时,新创建的文件和目录将继承该目录的组。
  3. Sticky Bit(T) :通常用于/tmp等临时文件夹,防止用户删除不属于他们的文件。
文件权限的继承

当文件系统中添加新文件或目录时,它们的权限将基于父目录的模式设置。使用umask命令可以设置系统默认的文件和目录权限。

访问控制列表(ACL)

ACL提供了比传统Unix权限更细粒度的权限控制。可以使用setfacl和getfacl命令来管理ACL。

使用umask设置默认权限

umask(用户文件创建掩码)定义了新创建文件和目录的默认权限。例如,umask 022将导致新文件默认权限为644(rw-r--r--),新目录默认权限为755(rwxr-xr-x)。

注意事项
  • 改变文件权限可能会影响系统的安全性和稳定性,应谨慎操作。
  • 使用chmod、chown和chgrp时,确保你了解权限更改的影响。
  • 特殊权限如SetUID和Sticky Bit应谨慎使用,因为它们可能会带来安全风险。
  • 定期检查和审核文件权限,确保它们符合组织的安全策略。

通过这些工具和命令,你可以有效地管理Linux系统中的文件权限,确保适当的访问控制和数据保护。

原文链接: https://blog.csdn.net/B6665X/article/details/139700156

标签: #软件开发 1171 #Linux 85
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.