Linux操作系统介绍

什么是 Linux?

Linux 是一种开源的类 Unix 操作系统内核,由 Linus Torvalds 于 1991 年首次发布。 广义上的 Linux 通常指基于该内核的完整操作系统(如 Ubuntu、Fedora 等), 结合了 GNU 项目 的软件工具,因此严格称为 GNU/Linux。

Linux 的核心特性

  • 开源免费
    • 源码公开可修改,社区协作开发,遵循 GPL 协议。
    • 用户可自由分发、定制系统(无需支付版权费用)。
  • 多用户与多任务
    • 支持多个用户同时登录,可高效并行执行多个任务。
  • 高稳定性与安全性
    • 服务器可连续运行数年无需重启,漏洞修复快,权限管理严格。
  • 硬件兼容性广泛
    • 支持从嵌入式设备到超级计算机的多种硬件架构。
  • 强大的命令行工具
    • 通过终端(Terminal)可深度控制系统,支持脚本自动化。

Linux 发行版(Distros)

  • 基于 Linux 内核的不同打包版本,满足不同场景需求:

    类型 主流发行版 特点
    通用桌面 Ubuntu、Fedora、Linux Mint 界面友好,适合日常办公及开发者使用
    企业服务器 CentOS(Rocky Linux)、RHEL 长期支持(LTS),安全稳定,适用于服务器运维
    轻量级 Alpine、Lubuntu 资源占用低,适合老旧硬件或容器环境
    专精领域 Kali(安全渗透)、Raspbian(树莓派) 预装领域专用工具,开箱即用

Linux 的架构与核心组件

  • 内核(Kernel)

    • 管理硬件资源(CPU、内存、磁盘等),提供核心接口。
    • 支持模块化驱动,可动态加载或卸载。
  • Shell

    • 用户与内核交互的接口(如 Bash、Zsh),支持脚本编程。
  • 文件系统

    • 采用层级目录结构(/ 为根目录),如 ext4、XFS、Btrfs。
    • 常见目录:
      • /bin(基础命令)
      • /etc(配置文件)
      • /home(用户目录)
  • 包管理系统

    • Debian 系(如 Ubuntu):apt(apt install / apt update)
    • Red Hat 系(如 CentOS):yum 或 dnf(yum install)
    • Arch 系:pacman(pacman -S)

基础命令速查

  • 类别 命令 说明
    文件管理 ls、cp、mv、rm 列出文件、复制、移动、删除
    目录操作 cd、mkdir、pwd 切换目录、创建目录、显示当前路径
    权限管理 chmod、chown 修改文件权限与所有者
    文本处理 cat、grep、vim 查看内容、文本搜索、编辑文件
    网络工具 ping、curl、ssh 测试连接、数据传输、远程登录
    进程管理 ps、top、kill 查看进程状态、结束进程

应用场景

  • 服务器与云计算
    • Web 服务(如 Nginx/Apache)、数据库(MySQL)、容器化(Docker/K8s)。
  • 开发与运维
    • 支持 Python、Java、C/C++ 等语言,提供丰富的开发工具链(Git、CI/CD)。
  • 嵌入式与物联网
    • 智能家电、路由器、工控设备(如 OpenWrt)。
  • 学术与科研
    • 科学计算(如 MATLAB 替代品 Octave)、大数据处理(Hadoop/Spark)。

Linux 目录结构详解

  • Linux 采用层级式树形目录结构,整个文件系统以根目录 / 为起点。以下为关键目录及其用途说明:

    目录 作用 典型内容示例
    / 根目录,所有目录的起点 -
    /bin 基础二进制命令(所有用户可用) ls, cp, mv, rm, cat 等常用命令
    /sbin 系统管理命令(通常需管理员权限) fdisk, ip, systemctl 等
    /etc 系统配置文件 passwd, nginx.conf, apt/sources.list
    /home 普通用户的家目录(每个用户拥有独立子目录) /home/alice, /home/bob
    /root root 用户的家目录 root 用户的配置文件和私有数据
    /usr 用户程序与资源(可共享的只读数据) /usr/bin(用户程序)、/usr/lib(库文件)
    /var 动态数据文件(日志、缓存、数据库等) /var/log(日志)、/var/cache(缓存)
    /tmp 临时文件(所有用户可读写,定期清理) 运行时产生的临时文件
    /dev 设备文件(如磁盘、USB 等) /dev/sda(磁盘)、/dev/ttyUSB0(USB设备)
    /proc 内核与进程的虚拟文件系统(实时反映系统状态) /proc/cpuinfo(CPU信息)、/proc/meminfo
    /boot 系统启动文件 内核、引导程序(如 GRUB)
    /lib 核心库文件(/bin 和 /sbin 依赖的库) .so 动态链接库文件
    /mnt 临时挂载点(手动挂载设备,如移动硬盘) -
    /media 自动挂载点(系统自动挂载的设备,如U盘、光盘) /media/usb-disk
    /opt 第三方软件安装目录(可选应用,如 JetBrains IDE、WPS) /opt/wps
    /run 运行时数据(系统启动后生成的临时文件,如PID、套接字) /run/docker.sock(Docker套接字)
    /srv 服务数据(存放网站、FTP等服务的文件) /srv/ftp(FTP服务)
    /sys 系统硬件与内核参数配置(虚拟文件系统,用于管理设备、电源、模块等) 设备驱动参数配置
  • 常见问题与操作示例
    1. 如何查看磁盘空间?
      1
      2
      df -h        # 查看磁盘分区使用情况  
      du -sh /var # 统计 `/var` 目录的总大小
    2. 查找特定文件或配置文件
      1
      2
      find /etc -name "*.conf"       # 在 `/etc` 下查找所有 `.conf` 文件  
      locate nginx.conf # 快速定位文件(需先执行 `updatedb`)
    3. 挂载外部设备到 /mnt
      1
      2
      sudo mount /dev/sdb1 /mnt      # 挂载磁盘分区到 `/mnt`  
      sudo umount /mnt # 卸载设备

Linux用户与组管理

一、基础命令

操作 命令示例 作用
创建用户 sudo useradd -m alice 创建用户alice并生成家目录
设置密码 sudo passwd alice 为alice设置登录密码
创建组 sudo groupadd developers 新建组developers
将用户加入组 sudo usermod -aG developers alice 将alice添加到developers组(附加组)
修改用户主组 sudo usermod -g developers bob 将bob的主组改为developers
删除用户 sudo userdel -r alice 删除alice及其家目录
查看用户信息 id alice 显示用户UID、GID及所属组
查看当前用户 whoami -
查看当前用户组 groups -
查看当前用户组 groups -
查看所有用户 cat /etc/passwd -
查看所有组 cat /etc/group -
添加用户 useradd 用户名 -
修改用户信息 usermod -
切换用户 su - 用户名 不加用户名表示切换root
创建新用户组 groupadd -
删除新用户组 groupdel -
查看所有组 cat /etc/group -
修改用户组信息 groupmod -

二、配置文件解析

文件路径 关键字段说明
/etc/passwd 用户名:密码占位符(x):UID:GID:描述:家目录:默认Shell
/etc/shadow 用户名:加密密码:最近修改日:最小天数:最大天数:警告期:失效日:保留字段
/etc/group 组名:组密码占位符(x):GID:组成员列表

三、Mermaid关系图

Linux文件与目录管理

一、核心操作命令

操作 命令示例 作用
查看目录内容 ls -l /home 显示详细文件列表
切换目录 cd /var/log 进入指定目录
创建目录 mkdir -p /data/project/src 递归创建多层目录
删除目录/文件 rm -rf tmp/ 强制递归删除
复制文件/目录 cp -a /backup/config /etc 保留属性复制(包含隐藏文件)
移动/重命名 mv old_name.txt new_name.txt 文件/目录重命名或移动
查看文件内容 cat -n server.conf 显示文件内容并显示行号
实时跟踪日志 tail -f /var/log/nginx/access.log 监控实时更新的日志文件

二、权限与所有权管理

1. 权限符号解释

1
2
3
4
5
6
-rwxr-xr--    → 用户(u)、组(g)、其他人(o)
\_/\_/\_/\
类型| | |
用户权限[rwx]
组权限[r-x]
其他权限[r--]

2. 关键操作命令

1
2
3
4
5
6
7
8
# 修改权限(数字法)
chmod 764 script.sh # rwxrw-r--

# 修改权限(符号法)
chmod u+x,g-w,o=r file.txt # 用户加执行,组删写,其他只读

# 修改所有者
sudo chown alice:developers /project/src # 同时修改用户和组

三、目录结构可视化

四、高级文件操作

场景 组合命令示例 说明
批量重命名 rename 's/.jpg/.png/' *.jpg 所有jpg文件改为png格式
查找并删除旧文件 find /tmp -name "*.log" -mtime +30 -delete 删除30天前的临时日志
目录同步 rsync -avz ~/docs/ backup@server:/backup/ 增量同步到远程服务器
文件差异比对 diff -u file_v1.c file_v2.c 生成可读的差异补丁

五、软链接和硬链接

类型 创建命令 关键特性
软链接 ln -s source link ✔️ 跨文件系统
✔️ 链接目录
❌ 源文件删除后失效
硬链接 ln source link ✔️ 同分区
✔️ 同步更新
❌ 不能链接目录

六、压缩与解压

格式 压缩命令 解压命令
.tar.gz tar -czvf archive.tar.gz dir tar -xzvf archive.tar.gz
.zip zip -r data.zip dir unzip data.zip
.tar.xz tar -cJvf file.tar.xz dir tar -xJvf file.tar.xz

七、常见问题排查

  1. 权限被拒绝(Permission Denied)
    1
    2
    3
    4
    # 检查权限和所有权
    ls -l /path/to/file
    sudo chmod +x script.sh # 添加执行权限
    sudo chown user:group file # 修复所有权

Linux文件权限

一、权限基础

1. 权限表示方式

  • 通过ls -l查看的文件权限格式:
    1
    2
    3
    4
    5
    -rwxr-xr-- 1 user group 4096 Jan 1 12:34 file.txt
    ↑_________
    │ | └──── 其他用户权限(o)
    │ └──────── 组权限(g)
    └─────────── 用户权限(u)
  • 类型标识:
  • -:普通文件
  • d:目录
  • l:软链接

2. 权限符号与数值对应关系

权限 符号 数值
r 4
w 2
执行 x 1
  • 示例:
    1
    rwxr-xr-- = 7 (4+2+1) | 5 (4+0+1) | 4 (4+0+0) → 权限 754

二、权限设置命令

命令 用法 说明
chmod(数字法) chmod 755 file.txt 修改权限为rwxr-xr-x
chmod(符号法) chmod u+x,g-w,o=r file.txt 用户添加执行,组移除写,其他设为只读
chown sudo chown alice:developers file.txt 修改所有者和组
chgrp sudo chgrp www-data /var/www 修改所属组
递归设置 chmod -R 755 /path/to/dir 递归修改目录及其内容

三、关键权限规则

1. 目录权限的特殊性

  • x(执行):允许进入目录或访问其内容(如cd或ls)。
  • r(读):仅允许列出目录内容(仍需x权限才能生效)。
  • w(写):允许在目录中创建/删除文件(仍需x权限)。

示例:

1
2
# 允许浏览但不修改目录内容
chmod 544 directory/ # r-xr--r--(x不可少)

2. 特殊权限

权限 字符表示 数值表示 作用
SUID s(用户位) 4(如4755) 用户执行文件时继承所有者权限(如/usr/bin/passwd)。
SGID s(组位) 2(如2770) 文件继承组权限;目录中新文件自动继承组所有权。
Sticky Bit t(其他位) 1(如1777) 目录下的文件仅所有者可删除(如/tmp)。

设置示例:

1
2
3
4
5
6
7
8
9
10
11
# 设置SUID
chmod u+s /usr/bin/script.sh
chmod 4755 /usr/bin/script.sh

# 设置SGID(共享目录适用)
chmod g+s /shared_dir
chmod 2770 /shared_dir

# 设置Sticky Bit
chmod o+t /tmp/upload
chmod 1777 /tmp/upload

四、默认权限与umask

默认权限规则:

- 文件:最大权限为 666(rw-rw-rw-)。
- 目录:最大权限为 777(rwxrwxrwx)。

umask值:

  • 定义创建文件/目录时需“减去”的权限(如umask 022):
    • 文件:666 - 022 = 644 → rw-r–r–
    • 目录:777 - 022 = 755 → rwxr-xr-x

查看当前umask:

1
umask      # 输出:0022

五、文件权限Mermaid展示

Linux进程与软件管理及Shell

Mermaid 可视化+结构化 的 Linux 进程管理、软件管理及 Shell 知识框架

核心概念分解

1. 进程管理

  • 状态转换逻辑:

  • 关键命令:

    1
    2
    3
    4
    # 后台运行进程
    nohup command &
    # 按名称杀进程
    pkill -f "process_name"

2. 软件管理

  • 包管理对比:
操作 APT (Debian) YUM (RHEL) Pacman (Arch)
更新源 apt update yum check-update pacman -Sy
清理缓存 apt clean yum clean all pacman -Scc

3. Shell 编程

  • 脚本模板示例:
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    # 带参数的脚本
    if [ "$1" == "start" ]; then
    echo "Starting service..."
    else
    echo "Usage: $0 {start|stop}"
    fi
  • 进程与资源监控:
    1
    2
    3
    4
    # 实时磁盘IO
    iotop
    # 内存占用排序
    ps aux --sort=-%mem | head

Linux系统防火墙

Mermaid 可视化 + 结构化 的 Linux 防火墙知识框架

核心功能详解

1. iptables 四表五链

  • 流量控制流程图:
  • 保存规则:
    1
    2
    iptables-save > /etc/iptables/rules.v4  # Debian/Ubuntu
    service iptables save # RHEL/CentOS 6

2. firewalld 高级操作

  • 富规则 (Rich Rules) 示例:
    1
    2
    firewall-cmd --add-rich-rule='
    rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" reject'
  • 与 Docker 的冲突解决:
    1
    firewall-cmd --zone=trusted --add-interface=docker0 --permanent

3. UFW 场景化配置

  • 限制IP访问:
    1
    2
    ufw allow from 192.168.1.100 to any port 22
    ufw deny from 203.0.113.0/24
  • 查看状态:
    1
    ufw status numbered  # 显示带编号的规则

实际应用案例

案例1:Web服务器防火墙

案例2:NAT端口转发

1
2
3
# 将外网 8080 转发到内网 192.168.1.10:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80
iptables -t nat -A POSTROUTING -j MASQUERADE

学习路线建议

阶段 内容
初级 UFW基础命令、firewalld放行端口
中级 iptables四表五链深入、NAT配置
高级 结合Fail2ban防暴力破解、自定义防火墙脚本