Debian 深入解析

FreeGuideOnline 最新 2026-07-15

bash sudo apt update && sudo apt upgrade -y # 立即更新软件清单并升级包 sudo apt install sudo curl vim -y # 补充基础工具(若 netinst 未装)


## 四、APT 包管理系统精要
### 4.1 sources.list 详解
`/etc/apt/sources.list` 定义软件来源。每行格式:

deb [选项] 镜像URL 发行版 组件1 组件2 ...

例:

deb https://deb.debian.org/debian bookworm main contrib non-free-firmware

常用组件:
- `main`:完全自由软件。
- `contrib`:自由软件但依赖非自由软件。
- `non-free`:非自由软件(Debian 12 后拆分为 `non-free` 和 `non-free-firmware`)。  
为了获取必要固件,建议保留 `non-free-firmware`。

### 4.2 包管理命令速查
- `apt search 关键词`:搜索包。
- `apt show 包名`:查看包详情。
- `apt install 包名`:安装包。
- `apt remove 包名`:卸载包(保留配置)。
- `apt purge 包名`:彻底删除(含配置)。
- `apt autoremove`:移除不再需要的依赖。
- `apt full-upgrade`:升级系统时可智能处理依赖变更(稳定版内常用)。
- `apt-mark hold 包名`:锁定包版本阻止升级。

### 4.3 dpkg 底层工具
APT 依赖 `dpkg` 直接操作 `.deb` 包:
```bash
dpkg -l                    # 列出所有已安装包
dpkg -i package.deb        # 手动安装本地 .deb 包
dpkg --get-selections      # 导出包列表
dpkg --set-selections      # 从列表恢复包选择

4.4 镜像源与代理优化

使用 apt-transport-https 支持 HTTPS 源,可通过 netselect-apt 测速选择最快镜像。
企业环境可搭建本地缓存代理(如 apt-cacher-ng)减少外网流量。

五、系统配置与管理基础

5.1 主机名与时区

hostnamectl set-hostname mydebian
timedatectl set-timezone Asia/Shanghai

5.2 语言与本地化

dpkg-reconfigure locales      # 生成所需 locale(如 en_US.UTF-8)
localectl set-locale LANG=en_US.UTF-8

5.3 内核模块与固件

  • 加载内核模块:modprobe module_name
  • 查看加载模块:lsmod
  • 阻止模块加载:在 /etc/modprobe.d/ 下创建 .conf 黑名单。
  • 安装缺失固件:apt install firmware-linux(包含大量二进制固件)。

5.4 计划任务 cron

用户级 crontab -e 编辑定时任务。系统级脚本放置在 /etc/cron.hourly/etc/cron.daily 等目录。推荐使用 systemd-timer 作为替代方案,可获得更精确的控制和日志。

六、用户与权限模型

6.1 用户管理命令

useradd -m -s /bin/bash username    # 创建用户
passwd username                     # 设置密码
usermod -aG sudo username           # 加入 sudo 组(需提前安装 sudo)
deluser username                    # 删除用户

6.2 文件权限与特殊位

  • chmod 755 file:所有者读写执行,同组和他人读执行。
  • chown user:group file:变更属主。
  • SUID/SGID/sticky 位:以数字模式设置(如 chmod 4755 为 SUID),可让普通用户临时以文件所有者身份执行程序。

6.3 Sudo 配置

通过 visudo 编辑 /etc/sudoers,典型行:

%sudo ALL=(ALL:ALL) ALL

要求密码验证,可添加 NOPASSWD: 免除密码(谨慎使用)。

七、网络连接与防火墙

7.1 接口配置

Debian 传统使用 /etc/network/interfaces。使用 ifupdown 管理网络:

auto eth0
iface eth0 inet dhcp

静态 IP 示例:

auto eth0
iface eth0 inet static
    address 192.168.1.100/24
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8

现代替代品有 systemd-networkdNetworkManager(桌面环境常用)。

7.2 防火墙:nftables 取代 iptables

Debian 10 起默认使用 nftables。基础配置模板:

nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0; policy drop; }
nft add rule inet filter input ct state established,related accept
nft add rule inet filter input iif lo accept
nft add rule inet filter input tcp dport 22 accept

保存规则:nft list ruleset > /etc/nftables.conf 并通过 systemd 启用 nftables.service

7.3 安全通信 SSH

apt install openssh-server
systemctl enable --now ssh

加固配置(/etc/ssh/sshd_config):禁用 root 登录、修改端口、使用密钥认证。

八、系统服务与 systemd

Debian 8 开始全面采用 systemd。

8.1 常用操作

systemctl start | stop | restart | status service
systemctl enable --now service      # 立即启动并设为开机自启
journalctl -u service -f            # 查看服务实时日志

8.2 编写简单的服务单元

/etc/systemd/system/myapp.service

[Unit]
Description=My Custom App
After=network.target

[Service]
ExecStart=/usr/local/bin/myapp
Restart=always
User=nobody

[Install]
WantedBy=multi-user.target

systemctl daemon-reload 后即可管理自定义服务。

8.3 日志管理

journalctl 替代传统 syslog,可持久化日志到磁盘:

mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal

九、安全更新与系统加固

9.1 无人值守更新

安装 unattended-upgrades

apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades   # 选择“是”启用自动安全更新

可选配置 /etc/apt/apt.conf.d/50unattended-upgrades 包含其他源或发送邮件通知。

9.2 启用 AppArmor

Debian 10+ 默认安装 AppArmor,确保其运行:

aa-status

为网络服务添加额外限制,需安装 apparmor-profiles 或自定义配置。

9.3 内核安全参数

通过 sysctl/etc/sysctl.d/ 文件调整:

net.ipv4.tcp_syncookies = 1
kernel.randomize_va_space = 2
kernel.kptr_restrict = 1

生效命令:sysctl --system

十、深入 Deb:构建与定制

10.1 从源码构建软件包

Debian 包开发工具链:

apt source 包名            # 获取源码包
apt build-dep 包名         # 安装构建依赖
cd 包目录
debuild -b -uc -us         # 构建二进制包