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

项目四 管理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),alicebob是该组的成员。

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 文件包含了用户和组的默认配置,这些配置将被useraddgroupaddpasswdgpasswd等命令使用。这个文件定义了用户账户的默认设置,如密码策略、UID和GID的范围等。以下是一些常见的配置选项:

  • PASS_MAX_DAYS:密码的最大有效天数。
  • PASS_MIN_DAYS:密码的最小更改间隔。
  • PASS_WARN_AGE:密码过期前用户将收到警告的天数。
  • ENCRYPT_METHOD:密码加密的方法(如MD5、SHA256等)。
  • UID_MINUID_MAX:系统用户和普通用户UID的范围。
  • GID_MINGID_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:查看组信息
  • catgetent命令用于查看/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来执行。
  • 在更改用户密码时,确保遵循安全策略,如使用强密码。
  • 使用usermodgroupmod命令更改用户或组的属性时,要确保新的属性不会引起系统的权限问题。
  • 在删除用户或组之前,确保这些账户没有正在运行的进程或重要的数据。
  • 使用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权限更细粒度的权限控制。可以使用setfaclgetfacl命令来管理ACL。

使用umask设置默认权限

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

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

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

  • 22
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值