• 三、Linux 文件管理+用户管理


    一、文件系统基础命令

    1.1 相对路径 & 绝对路径

    类型

    定义

    示例

    绝对路径

    以根 /

    开头的路径,在任何位置都可使用

    /etc/passwd

    /root/name

    相对路径

    不以根开头,相对于当前所在目录

    passwd(当前目录下的文件)

    bash

    [root@lab ~]# ls passwd        # 在当前目录下找 passwd,不存在则报错
    ls: cannot access 'passwd': No such file or directory
    
    [root@lab ~]# ls /etc/passwd   # 绝对路径,成功
    /etc/passwd

    1.2 文件命名规则

    1. 文件名区分大小写
    2. 同目录下不能存在同名文件
    3. 文件名长度≤255字符
    4. 尽量不用特殊字符:? $ % ^ & *

    1.3 touch 命令

    作用

    1. 创建空文件
    2. 更新已有文件时间戳

    用法

    touch 文件名          # 当前目录创建
    touch /opt/xym       # 指定路径创建

    文件3个时间戳

    • Access Time:最后访问时间
    • Modify Time:文件内容最后修改时间
    • Change Time:文件属性(权限、大小、名称)最后修改时间

    查看时间戳

    stat 文件路径

    总结:文件不存在则创建,存在则更新时间戳。

    1.4 mkdir 创建目录

    mkdir 目录路径                # 创建单层目录
    mkdir -p /opt/a/b/c/d/e/f/g  # -p 递归创建多级父目录
    • -p:父目录不存在自动创建,无报错

    1.5 rm 删除文件/目录

    rm 文件名            # 删除文件,交互式询问
    rm -f 文件名         # -f 强制删除,不询问
    rm -r 目录名         # -r 递归删除目录及内容
    rm -rf 目录名        # 强制递归删除目录(常用)
    • rmrm -i 别名,默认删除会询问
    • rm -rf 谨慎使用,不可逆

    1.6 rmdir 删除空目录

    • 仅能删除空目录,非空目录无法删除
    rmdir 空目录名

    1.7 ls 列出目录内容

    常用参数

    参数

    作用

    -l

    显示详细属性信息

    -a

    显示隐藏文件(以 . 开头)

    -h

    人性化显示文件大小(配合 -l

    -R

    递归列出所有子目录内容

    -t

    按修改时间倒序排序

    -r

    排序取反

    -d

    只查看目录本身属性

    --color=auto

    按文件类型显示颜色

    • llls -l --color=auto 别名

    alias 查看系统的命名别名

    ls -l 字段详解

    -rw-r--r--. 1 root root 2192 May 16 16:46 /etc/passwd

    1. 文件类型
      • -:普通文件
      • d:目录
      • b:块设备(硬盘/光驱)
      • c:字符设备(键盘/鼠标)
      • l:软链接(快捷方式)
      • s:套接字文件
    1. 权限:属主、属组、其他人 rwx(读写执行) 权限
    2. 末尾 . 表示文件受 SELinux 安全机制保护
    3. 硬链接数
    4. 属主、属组
    5. 文件大小(字节)
    6. 修改时间
    7. 文件名

    Linux 后缀无系统识别意义,仅给人看。

    1.8 cd 切换目录

    cd           # 回到当前用户家目录
    cd ~         # 回到家目录
    cd ~用户名   # 进入指定用户家目录
    cd ..        # 回到上一级目录
    cd -         # 切换到上一次所在目录
    cd 路径      # 切换到指定路径

    1.9 pwd 命令

    pwd  # 打印当前所在工作目录

    1.10 file 命令

    专门查看文件真实类型,不受后缀影响。

    file 文件名

    empty表示 空文件

    1.11 cp 拷贝命令

    语法cp 源路径 目标路径

    1. 拷贝文件
    cp /etc/passwd /opt/          # 备份文件到目录
    cp /etc/shadow /tmp/shadow-$(date +%F)  # 按时间命名备份
    1. 拷贝目录
    cp -r /etc /tmp    # -r 递归拷贝目录
    cp -a /etc /tmp    # -a 归档拷贝,保留权限、时间戳、软链接所有属性
    • -a 等同于 -dR --preserve=all

    1.12 mv 移动/重命名

    1. 同目录:mv = 重命名
    2. 不同目录:mv = 移动文件/目录
    mv 原文件名 新文件名       # 重命名
    mv 文件/目录 目标路径      # 移动

    二、用户与用户组管理

    2.1 Linux 用户分类

    用户类型

    UID 范围

    说明

    超级管理员

    UID=0

    root,拥有系统最高权限

    系统用户

    0

    运行系统服务,禁止登录

    普通用户

    UID≥1000

    管理员创建,供日常登录使用

    2.2 用户信息配置文件 /etc/passwd

    每行格式:用户名:x:UID:GID:描述:家目录:登录Shell
    字段说明:

    1. 用户名
    2. 密码占位符 x(真实密码存 /etc/shadow
    3. UID 用户ID
    4. GID 组ID
    5. 备注描述
    6. 用户家目录
    7. 登录Shell

    常见的两类:

      • /bin/bash:可登录系统
      • /sbin/nologin:禁止登录

    sync:x:5:0:sync:/sbin:/bin/sync

    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

    halt:x:7:0:halt:/sbin:/sbin/halt

    比较特殊的登录SHELL

    /bin/sync其实就是sync命令,而sync命令就是将内存中的数据刷入到磁盘中(赶紧把缓存数据写到磁盘里面)

    /sbin/shutdown 和 /sbin/halt 作用一样:关机

    2.3 用户管理命令

    命令

    作用

    useradd

    创建用户

    usermod

    修改用户

    userdel

    删除用户

    passwd

    设置密码

    id

    查看用户信息

    用户组的密码文件/etc/gshadow

    useradd 创建用户

    常用参数

    参数

    作用

    -u

    指定UID

    -g

    指定私有组GID

    -G

    指定附加组(会覆盖原有的附加组新增用-aG)

    -c

    添加描述信息

    -d

    指定家目录

    -s

    指定登录Shell

    -M

    不自动创建家目录

    UID 分配原则:未手动指定时,系统分配 /etc/passwd 中最大 UID + 1。

    默认行为

    • 家目录:/home/用户名
    • 邮箱文件:/var/spool/mail/用户名
    • 创建同名的私有组

     

    示例

    useradd mengxin                  # 创建普通用户
    useradd -u 2026 -c "game user" memeda01
    useradd -s /sbin/nologin mysqluser  # 不可登录用户

    需求一:创建memeda01用户,要求UID是2026,要求描述信息是game user

    useradd -u 2026 -c “game user” memeda01

    需求二:创建mysqluser用户,描述信息database user,不可以登录系统

    useradd -c “database user” -s /sbin/nologin mysqluser

    需求三:创建caiwu用户,私有组就是caiwu,附加组是mysqluser

    useradd -G mysqluser caiwu

    需求四:创建diruser用户,用户的家目录在/tmp/diruser

    useradd -d /tmp/diruser diruesr

    不指定UID系统找最多的UID+1分配

    创建用户会同时创建一个同名的邮箱和组

    用户必须要有一个组

    附加组:用户可以加入到其他组

    passwd 设置用户密码

    passwd 用户名

    usermod 修改用户属性

    选项

    说明

    -G 组名

    修改附加组(会覆盖原有附加组)

    -aG 组名

    新增附加组(不覆盖)

    -d 路径

    修改家目录(只改配置文件,不创建目录)

    -s SHELL

    修改登录 SHELL

    -L

    锁定用户

    -U

    解锁用户

    usermod -s /sbin/nologin 用户名   # 禁止登录
    usermod -aG 组名 用户名           # 追加附加组(-aG 不覆盖原有组)

    userdel 删除用户

    userdel 用户名        # 只删用户,保留家目录、邮件
    userdel -r 用户名     # -r 彻底删除:用户+家目录+邮件

    首先你创建一个用户user110,系统分配的UID假设是1000

    现在你通过userdel删除user110用户,但是家目录和邮件文件不会删除

    家目录和邮件文件UID和GID就是1000

    此时你通过useradd user111的用户--->UID 1000

    user111用户继承了1000的UID

    此时家目录和邮件文件UID和GID就是1000 就被user111可以访问了

    这个时候,文件就没有私密可言了

    老用户abcuser

    家目录和邮件文件没有删除

    再创建一个用户abcuser

    此时删除abcuser用户,这些目录和邮件文件会删除

    老用户abcuser

    家目录和邮件文件没有删除

    再创建一个用户123user

    此时删除123user,老的目录和邮件文件不会删除

    userdel 删除用户的时候,删除的是同名的目录和邮件

    /home/123user 可以被删除

    /home/abcuser

    2.4 用户组配置文件 /etc/group

    格式:组名:x:GID:组内成员

    • 记录组名、密码占位符、GID、组内附加成员
    • 私有组成员不会在此文件显示

    字段

    说明

    第1列

    组名

    第2列

    组的密码占位符

    第3列

    GID

    第4列

    组内成员(私有组的成员不显示)

    2.5 用户组管理命令

    命令

    作用

    groupadd

    创建组

    groupmod

    修改组

    groupdel

    删除组

    gpasswd

    设置组密码、管理组成员

    groupmems

    列出/添加/删除组成员

    groupadd -g 3333 itgroup   # 创建指定GID组
    groupdel 组名              # 删除组(不能删用户私有组)
    gpasswd 组名               # 设置组密码、管理组成员
    newgrp 组名                # 登录组
    groupmems                  # 查看/添加/移除组成员

    groupadd – 创建组

    bash

    groupadd -g 3333 itgroup               # 指定 GID 创建组

    groupmod – 修改组

    bash

    groupmod -n newname oldname            # 重命名组

    groupdel – 删除组

    bash

    groupdel itgroup                       # 若某用户的私有组是该组,则无法删除

    gpasswd – 管理组密码和成员

    bash

    gpasswd 组名                           # 设置组密码
    gpasswd -a user 组名                   # 添加用户到组
    gpasswd -d user 组名                   # 从组中删除用户
    gpasswd -A user 组名                   # 设置组管理员

    groupmems – 管理组成员

    bash

    groupmems -g 组名 -l                   # 列出组成员
    groupmems -g 组名 -a user              # 添加用户
    groupmems -g 组名 -d user              # 删除用户

    也可用 usermod -aG 添加附加组。

    记忆:

    加用户到组:usermod

    删除组的用户:gpasswd

    列出组的成员:groupmens

    2.6 密码影子文件 /etc/shadow

    仅root可读取,存放加密用户密码及密码策略

    mengxin:$6$pfNug4M3ru8qFDpN$0pNQj/37TvTCJzadBGXWXC4ljl6hAyBIwFevxLU.BQuAVzPiS6UuIzikk9.J7QCwF2gmbx5/6uYuEmsH96yn21:20596:0:99999:7:::

    字段

    说明

    第1列

    用户名

    第2列

    加密后的密码(!!/*/!* 表示无密码)

    第3列

    上次修改密码时间(距1970-01-01天数)

    第4列

    密码最短有效期(天数,0表示无限制)

    第5列

    密码最长有效期(天数,99999表示无期限)

    第6列

    告警天数(过期前多少天告警)

    第7列

    密码锁定日期

    第8列

    账户过期时间(距1970-01-01天数)

    第9列

    保留字段

    加密算法标识

    • $6$ → SHA-512(默认)
    • $5$ → SHA-256
    • $1$ → MD5

    用户组的密码文件/etc/gshadow

    生成加密密码(不通过 passwd):

    
    openssl passwd -6 123                  # 输出 SHA-512 加密的密文
    # 然后手动替换 /etc/shadow 对应行

    2.7 chage 密码策略管理

    查看和修改用户密码策略:

    chage -l 用户名          # 查看密码策略
    chage -m 30 -M 90 -W 20 -E 2027-12-01 用户名  # 修改策略
    chage -d 0 用户名        # 强制下次登录改密码

    2.8 默认密码策略配置

    /etc/login.defs 定义新建用户默认规则:

    • PASS_MAX_DAYS 密码最大有效期
    • PASS_MIN_DAYS 密码最小间隔天数
    • PASS_WARN_AGE 过期提前告警天数

  • 相关阅读:
    腾讯面试真题 | 没在我八股文列表里。。。
    Qt在Android上设置连接到指定的WIFI
    从0开始用C写贪吃蛇(基于链表)
    论文阅读-Federated-Unlearning-With-Momentum-Degradation
    SpringBoot集成Mybatis-Plus
    土地利用强度(LUI)综合指数
    数据库(mysql)基本概念
    银河麒麟服务器x86安装ntp客户端,并配置成功可以同步时间
    Apache 董事会即将终止 Apache Ambari 项目
    SiC器件概念
  • 原文地址:https://www.cnblogs.com/zhaomibubai/p/20239563