Linux 用户和组,/etc/passwd,/etc/shadow,/etc/group,密码管理

Linux 用户和组及权限管理

基本命令

文件

/etc/passwd                 存储用户信息的文件
/etc/shadow                 存储用户密码信息文件
/etc/group                  存储了组信息
/etc/sudoers                sudo 命令配置文件

  • 添加组

    groupadd                    添加组
        -g                      指定组ID
    
  • 修改组属性

    groupmod                    修改组的属性
    
  • 删除组

    groupdel                    删除组
    

用户

  • 添加

    useradd                     添加用户
        -u                      指定uid 号
        -g                      指定基本组
        -G                      指定附加组
        -s                      指定用户登录的命令解释器
                                -s  /sbin/nologin
                                -s  /bin/bash
        -M                      不创建家目录
    
  • 更新用户信息

    usermod                     更新用户信息
    
  • 删除用户

    userdel                     删除用户
        -r                      删除用户时,同时删除家目录
    
  • 用户密码/锁定

    passwd                      修改用户密码
        -S                      查看用户密码状态
        -l                      锁定用户
        -u                      解锁用户
    
    chage                       修改密码过期时间
        -M                      修改密码最长有效期为多少天
    
  • root

    sudo                        以其他用户身份执行命令
    su                          切换用户
    
  • 查看系统进程及所属的 user 等信息

    ps aux                      
    

文件/权限

ln -s /tmp/ajest.txt /root/Desktop/ajest.txt
                            将/tmp/ajest.txt 文件创建快捷方式到/root/Desktop/ajest.txt

chmod                       修改文件或者目录的权限
    u-r                     撤销读权限
    u-w                     撤销写权限
    o=---                   其他用户权限全部撤销
    o-r                     撤销其他用户列出目录的权限
    o=rwx                   修改其他用户的权限
    g=---                   修改所属组的权限
chmod 1777 /tmp/            对目录设置粘滞位
chmod 2777 /tmp/rootDir     对目录设置sgid 标识

chown root /tmp/ajestDir/ajest.txt 
                            修改文件所属者为root

ls -ld /tmp/rootDir/        查看目录的权限

用户和组

基本原理

  • 计算机使用者(人,正常用户,黑客)扮演 账户(用户,角色)拥有 权限
    执行程序或打开文件,都必须以某一个用户的身份,以某一个权限来动作

  • 用户必须属于某一个组

  • 加密

    • 对称加密

      DES、3DES、AES

    • 非对称加密

      RSA

    • hash 单向散列

      md5、sha-256、sha-512

用户分类

用户分类 UID
普通用户 > 1000
程序用户 1 - 1000
超级管理员用户 0
  • 程序用户

    程序用户不可登录,专门用于运行程序或服务的用户账户,具有较低的权限,只能访问和执行与其任务相关的文件和资源

    程序用户的作用是提供一种安全、隔离和可管理的环境来运行程序,以确保系统的稳定性、安全性和性能

    root 启动了apache httpd 服务,为了安全, root 会将进程转交给 daemon 用户

  • 分为基本组和附加组

  • 先有组,再有用户:

    • 用户必须有且只有一个基本组。
    • 当创建一个用户时,如果没有指定基本组,会先创建一个与该用户同名的组,再创建用户。
  • 一个用户可以有多个附加组

  • 基本组内没有任何用户时才可以被删除

/etc/passwd 文件

  • 存放用户名和其他信息

  • 7 个字段

    冒号:隔开

    root x 0 0 root /root /user/bin/zsh(或/usr/sbin/nologin)
    用户名 口令,x 为占位符(为空则代表无密码) UID GID(组id) 备注 家目录 登录shell/命令解释器(命令或 shell (/bin/bash) 的绝对路径)
  • 超级管理员 UID=0,系统用户 UID 1-999,普通用户 UID 1000以后

  • 普通用户 UID 改为 0 后即可获得 root 权限

  • shell

    • /bin/bash
    • /bin/sh
    • zsh

    echo $0查看命令解释器

/etc/shadow 文件

  • 存放密码信息

  • 9 个字段

  • 格式

    root:$y$j9T$jOd7E6DLFdmgM3x6gciyA/$KHsDhTVufiVEc0ACIUAcrk9N8pPJpYv5ZGPOMtI3mY9:19404:0:99999:7:::
    #用户名:!!代表这个用户没有密码
    #用户名:*代表这个用户的密码是被锁定的
    # $算法$盐值$密码密文
    
    root y y yj9T~3mY9 19404 3 90 7 10
    用户名 密码密文 上次密码修改日期 密码最短有效期 密码的最长有效期 密码过期时间 密码的不活跃期 账户失效时间 保留参数
    hash 加密
    $算法$盐值$密码密文
    距1970.1.1多少天 修改密码后不可再次修改的时间 99999 表示不到期 有效期前提醒的天数 0表示过期后立即失效 自1970 年 1 月 1 日以来的总天数作为账户失效时间,在此规定时间之外,无论过期与否,账号均无法使用。
    |                正常登录系统              |      仍然可以登录系统     |   无法登录
    0   用户不能修改密码    3  用户可以修改密码 83 提示修改密码  90  登录   100  密码锁定
    |----------------------|------------------|---------------|----------|-------------->
    ^                      ^                  ^               ^          ^
    密码修改时间      密码最短有效期         密码过期时间    密码最长有效期   密码不活跃期
    

    显示出具体日期

    date -d "1970-01-01 <数字> days"
    

/etc/group 文件

  • 存放组信息

  • 格式

    gjl:x:1000:gjl
    
    gjl x 1000 gjl
    组名 密码 GID 群组用户
    用户组的名称,由字母或数字构成。 x 是密码标识,
    组密码默认保存在 /etc/gshadow 文件中。
    Group ID

用户和组管理

创建组和用户

  • 创建用户

    useradd <用户名>
    	-u <uid>,指定uid 号
    	-g <gid><组名>,指定基本组
    	-G <gid><组名>,指定附加组
    	-s,指定用户登录的命令解释器,如-s /sbin/nologin,-s /bin/bash
    	-M,不创建家目录
    

    查看日志

    tail -10 /var/log/secure
    	-f 查看变动
    # 先自动创建组,再创建用户
    

    image-20230928092745868

  • 创建组

    groupadd 组名
    	-g <gid>
    # -g 指定组 id
    

    创建组后可直接查询组文件的最后一行

    tail -1 /etc/group
    

删除组和用户

  • 删除用户

    userdel <用户名>
    	-r
    # -r 同时删除家目录
    
  • 删除组

    groupdel 组名
    

修改组和用户

  • 修改用户

    usermod
    	-u <uid> 修改uid
    
  • 修改组信息

    groupmod
    # 如 将 bk2304 组 id 修改为2000
    groupmod bk2304 -g 2000
    

密码管理

  • 查看用户密码状态

    passwd -S <用户名>
    

    image-20230928094516678

    用户名 密码状态 密码最后一次修改时间 密码最短有效期 最长有效期 警告时间 失效时间
    root PS 1969-12-31 0 99999 7 -1
    LK,密码锁定
    NP,没有密码
    PS,有可用密码
    创建时间
    密码最近一次修改时间
    密码过期前7 天警告 -1 表示没有失效时间
  • 删除用户密码

    passwd -d <用户名>
    
  • 设定用户密码

    passwd <用户名>
    # 根据提示输入密码和确认密码
    
  • 用户锁定

    passwd -l <用户名>
    # 用户密码状态显示 LK,/etc/shadow 中密码显示为 "!!"
    

    image-20230928102912388

  • 解锁用户

    passwd -u <用户名>
    
  • 修改密码最长有效期

    passwd -x <用户名>
    

你可能感兴趣的:(linux,运维,服务器,网络安全,编辑器)