用户管理和权限管理

一、用户和权限管理

(1)个人电脑与服务器操作系统的差异

  • 个人电脑: 通常只有一个用户(如"cc"用户),不支持多用户同时操作
  • 服务器系统: 运行多个服务,允许多用户同时操作(如阿里云ECS服务器可通过多个终端连接)

(2)多用户功能的必要性

  • 安全考量: 单一用户拥有全部权限存在安全隐患,账号泄露会导致系统完全失控
  • 管理需求: 单个用户无法有效配置和管理服务器上的所有程序和服务

(3)其他系统中的权限管理功能

  • 网站后台: 不同角色权限不同(如学员前台与管理后台)
  • 数据库系统:
    • root用户拥有全部库表权限
    • 普通用户可能仅限访问特定库表
  • 版本控制系统:
    • 普通开发者只能访问自己的代码仓库
    • 超级管理员可访问所有仓库

二、用户组

  • 部门类比:用户组类似于公司的部门,每个用户必须至少属于一个组,就像新员工必须归属于某个部门一样。
  • 权限管理意义:分组的主要目的是方便批量权限设置。例如财务部门员工自动拥有进入财务室的权限,无需单独授权。
  • 多组归属:一个用户可以属于多个组(类似员工可跨部门),但必须指定一个主要组(primary group),其他为附加组(supplementary groups)。
  • 实际应用:在代码管理系统(如Git/SVN)中,将成员加入特定组即可自动获得对应代码库的访问权限。

1. 组ID

  • GID结构:每个组都有唯一的数字标识Group ID(GID),采用整型数字编号。
  • root组:
    • GID固定为0
    • 拥有系统最高权限
  • 系统用户组:
    • GID范围:1-999(CentOS7)
    • 用于运行系统服务(如邮件服务、FTP服务)
    • 注意:CentOS5/6版本范围为1-499
  • 普通用户组:
    • GID范围:1000-65535
    • 第一个自定义用户组默认从GID=1000开始分配

2. Group相关命令

  • 查看全部组:
    • 命令:cat /etc/group
    • 输出说明:每行格式为"组名:x:GID:成员列表"
  • 查看用户所属组:
    • 命令:groups [用户名]
    • 示例:root用户执行groups ccc显示ccc用户的主要组
  • 添加用户组:
    • 命令:groupadd [组名]
    • 示例:groupadd redis创建redis组
  • 删除用户组:
    • 命令:groupdel [组名]
    • 示例:groupdel redis删除redis组

3. gpasswd命令

  • 功能:工作组文件(/etc/group和/etc/gshadow)管理工具
  • 常用选项:
    • -a:添加用户到组(如gpasswd -a user group)
    • -d:从组删除用户
    • -A:指定组管理员
    • -r:删除组密码
  • 特点:实际使用频率较低,主要用于精细化的组权限管理

三、用户

1、用户ID

  • UID分类:
    • root用户:UID=0(UID为0的用户一定是root用户,不论用户名是什么)
    • 程序用户:1-999(CentOS7系统用户范围)
    • 普通用户:1000-65535(CentOS5/6版本中系统用户范围为1-499)
  • 查看方法:通过cat /etc/passwd命令查看所有用户信息
  • 特殊说明:root用户的GID和UID必须都是0,这是系统管理员的特殊标识

2、User相关命令

  • 核心命令:
    • 添加用户:useradd(常用选项:-g指定主组,-G指定附加组,-d指定家目录)
    • 修改密码:passwd(直接跟用户名即可修改密码)
    • 删除用户:userdel(需确保用户未在使用状态)
    • 修改信息:usermod(可修改用户名、家目录、所属组等)
  • 重要选项:
    • -m:自动创建用户家目录
    • -s:指定用户登录shell(如/bin/bash)
    • -L/-U:锁定/解锁用户账号

passwd命令

  • 主要功能:
    • 设置/修改用户密码
    • 管理密码过期时间等认证信息
  • 常用选项:
    • -d:删除密码(仅管理员可用)
    • -l:锁定密码
    • -u:解锁密码
    • -S:显示密码状态信息
  • 密码策略:
    • 系统会提示密码强度不足(如少于8字符)
    • 需两次输入确认密码
    • 普通用户只能修改自己的密码

3、用户管理相关文件

1)/etc/group文件

  • 文件格式解析
    • 分隔符结构: 文件使用冒号":"作为分隔符,将每行内容划分为四个字段
    • 字段组成:
      • 第1字段:组名(如root、bin、daemon等)
      • 第2字段:组密码(通常显示为x)
      • 第3字段:GID(组ID)
      • 第4字段:组内用户列表(可能为空)

  • 各字段详解
    • 组名:
      • 系统预定义组:root(0)、bin(1)、daemon(2)、sys(3)、adm(4)等
      • 用户自定义组:如ccc(1000)、lll(1001)、security(1002)等
    • 密码字段:
      • 显示为x表示密码存储在影子文件/etc/gshadow中
      • 实际密码可能显示为!,表示无密码
      • 注意:组密码功能基本不使用,可以忽略
    • GID:
      • 系统组GID范围:0-999
      • 用户组GID范围:1000+
    • 用户列表:
      • 显示属于该组的附加用户
      • 主用户可能不显示(如root组默认包含root用户但不显示)
  • 相关文件
    • /etc/gshadow:
      • 存储组密码的影子文件
      • 密码字段显示!表示无密码
      • 格式:组名:加密密码:组管理员:组附加用户列表
  • 注意事项
    • 字段对应关系:
      • 组名与/etc/passwd中的GID字段对应
      • 用户主组信息存储在/etc/passwd中
      • 用户附加组信息存储在/etc/group中
    • 特殊组:
      • wheel组(10):具有sudo权限的组
      • mail组(12):邮件相关组
      • disk组(6):磁盘管理组

2)/etc/passwd文件

  • 文件作用:在渗透提权时经常使用,用于查看收集操作系统信息和提权操作
  • 存储位置:系统用户信息保存在/etc/passwd文本文件中
  • 典型内容:包含root、bin、daemon等系统用户和普通用户信息
  • 字段数量:共7个字段,用冒号":"分隔
  • 字段顺序:1.用户名 2.密码 3.UID 4.GID 5.全名 6.home路径 7.shell工具

  • 用户名:第一位是用户名,如root、bin等
  • 密码字段:
  • 特殊标记:*表示无密码,!!表示锁定账户
  • 实际存储:密码以加密形式保存在shadow文件
  • x标记:表示密码存储在/etc/shadow文件中
  • 系统用户特点:伪用户(如bin、daemon)通常没有密码,用于运行程序而非登录

用户描述字段

  • 位置:第五位字段
  • 内容:用户备注或描述信息
  • 特点:
    • 普通用户可能没有描述或只有姓名
    • 系统用户常有功能描述,如"User for sssd"
    • 可选字段,可为空
    • 修改方式:使用useradd -c或usermod -c命令设置

用户主目录字段

  • 位置:第六位字段
  • 作用:指定用户登录后的初始工作目录
  • 示例:
    • 系统用户:/var/lib/service_name
    • 普通用户:/home/username
    • root用户:/root
  • 修改方式:使用useradd -d或usermod -d命令设置

用户Shell字段

  • 位置:第七位字段
  • 作用:指定用户登录后使用的shell解释器
  • 常见值:
    • /bin/false:同样禁止登录
    • /sbin/nologin:禁止登录的shell
    • /bin/bash:可登录的交互式shell
    • 系统用户:通常设置为nologin或false
  • 修改方式:使用useradd -s或usermod -s命令设置

3)/etc/shadow文件

  • 字段组成:包含9个字段,用冒号分隔:
  • 用户名
  • 密码(加密存储)
  • 最后修改时间(从1970年1月1日起的天数)
  • 最小修改间隔时间
  • 密码有效期
  • 密码变更前警告天数
  • 密码过期后宽限天数
  • 账号失效时间
  • 保留字段

  • 密码格式解析

    • 时间转换方法:使用命令date -d "1970-01-01 19157 days"可将天数转换为具体日期(示例中19157天对应2022年7月14日)
    • 密码字段说明:
      • 密码字段为空表示无需密码即可登录
      • "!!"表示密码被锁定
      • "*"表示账号被禁用

密码加密方式

  • 格式结构:$id$salt$encrypted三部分
    • $encrypted:加密后的密码
    • $salt:随机盐值
    • $id:加密算法标识(1=MD5,5=SHA-256,6=SHA-512)
    • 生成命令:openssl passwd -1 -salt admin 123456可生成MD5加密密码
MD5加密算法介绍
    • 算法特性:
      • 单向哈希算法(摘要算法)
      • 相同输入必然产生相同输出
      • 无法从哈希值反推原始数据
    • 安全隐患:
      • 可通过预先计算的彩虹表进行破解
      • 常见密码的MD5值可被直接查表破解(如"123456"的MD5为e10adc3949ba59abbe56e057f20f883e)

加盐的作用与实现

    • 加盐原理:
      • 在密码前后添加随机字符串(盐值)
      • 使相同密码产生不同的哈希结果
      • 防止彩虹表攻击
    • 实现方式:
      • 系统自动生成随机盐值
      • 盐值与加密结果一起存储
      • 验证时使用相同盐值重新计算
    • 安全优势:
      • 即使两个用户使用相同密码,加密结果也不同
      • 攻击者无法通过预计算破解
      • 必须同时获取盐值和加密结果才可能破解

4)密码格式

/etc/sudoers文件格式

    • 全称解析:super user do的缩写,用于执行需要管理员权限的命令
    • 语法结构:

      kaliALL=(ALL)NOPASSWD:/bin/useradd\mathrm{kali} ALL=(ALL) NOPASSWD:/bin/useraddkaliALL=(ALL)NOPASSWD:/bin/useradd

      表示kali用户可以在所有主机上以所有用户身份无需密码执行useradd命令

密码存储与加密方式

    • 命令格式:openssl passwd -1 -salt admin 123456
      • 参数说明:
        • -1:指定使用MD5算法
        • -salt:指定盐值为"admin"
        • "123456"为明文密码
    • 存储格式:$id$salt$encrypted
      • 示例:$1$admin$LClYcRe.ee8dQwgrFc5nz.
      • 数字对应算法:
        • 1:MD5
        • 2a:Blowfish(某些Linux发行版)
        • 5:SHA-256
        • 6:SHA-512

5)/etc/sudoers文件

  • 全称解释: sudo全称为"super user do",意为以超级用户(root)身份执行命令
  • 核心功能: 允许普通用户临时获得root权限执行特定命令,避免频繁切换用户
  • 典型场景: 如系统重启(
    • reboot(reboot)、用户管理(useradd)等需要root权限的操作

sudoers文件的配置

  • 文件路径:/etc/sudoers
  • 访问限制: 默认只有root用户可查看和修改
  • 配置原理: 定义哪些用户/组可以执行哪些命令,以及是否需要密码验证
  • 验证机制: 执行sudo时验证的是用户自身密码而非root密码

配置格式与示例

  • 基础格式:
  • root默认配置:
  • root ALL=(ALL) ALL 表示root可在所有主机执行所有命令
  • 组配置示例:
    • %wheel ALL=(ALL) ALL 表示wheel组成员可获得全部权限

    • 具体案例:
      • kali ALL=(ALL) NOPASSWD:/bin/useradd 表示kali用户可在所有主机免密码执行useradd命令

      • users localhost=/sbin/shutdown −h now 表示users组成员可在本机执行关机命令

  • no password配置的含义
    • 标准流程: 执行sudo命令时需要输入用户自身密码进行验证
    • 免密配置: 添加NOPASSWD选项后可直接执行命令而无需密码验证
    • 安全提示: 免密配置应谨慎使用,仅适用于低风险操作场景
    • 错误示范: 未配置sudo权限时,即使输入正确密码也会提示"不在sudoers文件中"的错误

四、sudo配置文件

查询用户可用的sudo命令

  • 查询命令:使用sudo -l可以查询当前用户可用root权限执行的命令
  • 空结果说明:若查询结果为空,表示该用户未被授权任何sudo命令
  • 密码验证:执行查询时仍需输入用户密码进行验证

五、用户相关操作

1、id

  • 功能:查看当前用户的UID和GID
  • 应用场景:常用于检测远程代码执行漏洞,通过执行id命令验证服务器权限
  • 输出内容:显示用户ID、组ID及所属附加组信息

2. finger

  • 功能:查看用户登录属性,包括登录时间等
  • 安装说明:在CentOS中需通过yum install -y finger安装
  • 限制:非系统自带命令,需额外安装才能使用

3. w和who命令

  • w命令:显示用户登录IP、登录时间和会话持续时间
  • who命令:查看用户基本信息,包括登录终端等
  • whoami:最常用命令,显示当前登录用户名
  • users:查看当前在线用户列表

4. 用户切换

  • 切换命令:su(switch user)用于切换用户身份
  • 常用场景:如su root切换到root用户,su alan切换到普通用户
  • 密码要求:切换时通常需要输入目标用户的密码

六、文件归属与权限

1. 文件和目录的归属

1)所属组

  • 基本属性:每个文件/目录都有两个关键属性:拥有者(owner)和所属组(group),可通过ll命令查看
  • 查看方法:在home目录执行ll命令时,输出结果中第二列为所属用户,第三列为所属组
  • root权限示例:root目录下所有文件/目录的拥有者和所属组都是root,普通用户无权操作
  • 归属重要性:文件必须明确归属关系,这是Linux权限系统的基础

2)修改文件归属命令

  • 命令格式:chown [选项] 新用户[:新组] 文件/目录
  • 递归修改:使用-R参数可递归修改目录下所有子文件和子目录的归属
  • 同时修改用户和组:chown redis:redis 文件名 可同时修改拥有者和所属组
  • 权限限制:普通用户只能修改自己拥有的文件,root用户可修改任何文件归属
  • 操作示例:
    • 创建测试用户组:groupadd redis
    • 创建测试用户:useradd -g redis redis
    • 修改目录归属:chown -R allen:security 目录名

2. 权限

1)文件和目录权限

  • 权限表示法:
    • 第一位表示类型:d为目录,-为普通文件
    • 后9位分为3组,分别表示:用户权限(u)、组权限(g)、其他用户权限(o)
  • 权限字母含义:
    • r(read):读权限(文件可查看内容,目录可列出内容)
    • w(write):写权限(文件可修改,目录可增删文件)
    • x(execute):执行权限(文件可运行,目录可进入)
    • -:无对应权限
  • 数字表示法:
    • r=4,w=2,x=1
    • 每组权限值为字母对应数字之和(如rwx=7,r-x=5)
  • 特殊说明:
    • root用户不受普通权限限制
    • 777表示所有用户都有完全权限(慎用)

2)权限修改命令

chmod命令

  • 字母表示法:
    • 示例:chmod g+w file(给组添加写权限)
    • 操作符:+添加,-移除,=设置
    • 用户类别:u=用户,g=组,o=其他,a=所有
    • 格式:chmod [ugoa][+-=][rwx] 文件
  • 数字表示法:
    • 示例:chmod 755 file(用户rwx,组和其他rx)
    • 格式:chmod 数字组合 文件
    • 引用法:
      • chmod --reference=参照文件 目标文件(复制权限设置)
      • 示例:chmod --reference=file1 file2

chown命令

  • 权限问题处理:
  • 示例:chmod +x 文件名添加执行权限
  • 当执行文件提示"Permission denied"时,需要添加执行权限
  • 递归修改:
    • 修改目录及其内容:chmod -R 权限 目录名
  • 安全提示:
    • 不要随意设置777权限,会带来安全隐患
    • 特殊配置文件需要保持特定权限数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值