Debian 深入解析
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-networkd 或 NetworkManager(桌面环境常用)。
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 # 构建二进制包