一、文件系统基础命令
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 文件命名规则
- 文件名区分大小写
- 同目录下不能存在同名文件
- 文件名长度≤255字符
- 尽量不用特殊字符:? $ % ^ & * 等
1.3 touch 命令
作用
- 创建空文件
- 更新已有文件时间戳
用法
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 目录名 # 强制递归删除目录(常用)
- rm 是 rm -i 别名,默认删除会询问
- rm -rf 谨慎使用,不可逆
1.6 rmdir 删除空目录
-
仅能删除空目录 ,非空目录无法删除
rmdir 空目录名
1.7 ls 列出目录内容
常用参数
|--------------|---------------------|
| 参数 | 作用 |
| -l | 显示详细属性信息 |
| -a | 显示隐藏文件 (以 . 开头) |
| -h | 人性化显示文件大小(配合 -l) |
| -R | 递归列出所有子目录内容 |
| -t | 按修改时间倒序排序 |
| -r | 排序取反 |
| -d | 只查看目录本身属性 |
| --color=auto | 按文件类型显示颜色 |
- ll 是 ls -l --color=auto 别名
alias 查看系统的命名别名
ls -l 字段详解
-rw-r--r--. 1 root root 2192 May 16 16:46 /etc/passwd
- 文件类型
- -:普通文件
- d:目录
- b:块设备(硬盘/光驱)
- c:字符设备(键盘/鼠标)
- l:软链接(快捷方式)
- s:套接字文件
- 权限 :属主、属组、其他人 rwx(读写执行) 权限
- 末尾 . 表示文件受 SELinux 安全机制保护
- 硬链接数
- 属主、属组
- 文件大小(字节)
- 修改时间
- 文件名
Linux 后缀无系统识别意义,仅给人看。
1.8 cd 切换目录
cd # 回到当前用户家目录
cd ~ # 回到家目录
cd ~用户名 # 进入指定用户家目录
cd .. # 回到上一级目录
cd - # 切换到上一次所在目录
cd 路径 # 切换到指定路径
1.9 pwd 命令
pwd # 打印当前所在工作目录
1.10 file 命令
专门查看文件真实类型 ,不受后缀影响。
file 文件名
empty表示 空文件
1.11 cp 拷贝命令
语法 :cp 源路径 目标路径
-
拷贝文件
cp /etc/passwd /opt/ # 备份文件到目录
cp /etc/shadow /tmp/shadow-$(date +%F) # 按时间命名备份 -
拷贝目录
cp -r /etc /tmp # -r 递归拷贝目录
cp -a /etc /tmp # -a 归档拷贝,保留权限、时间戳、软链接所有属性
- -a 等同于 -dR --preserve=all
1.12 mv 移动/重命名
-
同目录 :mv = 重命名
-
不同目录 :mv = 移动文件/目录
mv 原文件名 新文件名 # 重命名
mv 文件/目录 目标路径 # 移动
二、用户与用户组管理
2.1 Linux 用户分类
|-------|--------------|-----------------|
| 用户类型 | UID 范围 | 说明 |
| 超级管理员 | UID=0 | root,拥有系统最高权限 |
| 系统用户 | 0<UID<1000 | 运行系统服务,禁止登录 |
| 普通用户 | UID≥1000 | 管理员创建,供日常登录使用 |
2.2 用户信息配置文件 /etc/passwd
每行格式:用户名:x:UID:GID:描述:家目录:登录Shell
字段说明:
- 用户名
- 密码占位符 x(真实密码存 /etc/shadow)
- UID 用户ID
- GID 组ID
- 备注描述
- 用户家目录
- 登录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 过期提前告警天数