debian使用记录
vim安装
- Debian12最小化安装后,需要单独安装
vim:这个不用安装,可以直接使用nano
sh体验AI代码助手代码解读复制代码rz@debian:~$ su |
[vim命令详解:](Linux vi/vim | 菜鸟教程)
检查文件错误
例如:检查修改了 /etc/ssh/sshd_config 中的 PermitRootLogin yes 和 PasswordAuthentication yes,然后执行 systemctl restart ssh 时出现错误。
执行以下命令,获取失败的具体原因:
systemctl status ssh.service |
常见的错误输出会直接指出错误的行号或冲突字段。
SSH 自带配置检查工具,可以精确定位问题:
sshd -t |
root@ debian:"# systemctl status ssh |
我们看到了关键错误:/etc/ssh/sshd_config line 34: unsupported option "yes\357"。这说明第34行有无效字符,错误提示 unsupported option "yes\357"(\357 是八进制表示的字节,通常是 UTF-8 BOM 或非法控制字符)。
查看并确认第34行的内容
sed -n '34p' /etc/ssh/sshd_config | cat -A |
cat -A 会显示隐藏字符(如 ^M 表示回车,M-BM- 等表示 UTF-8 残留)。您很可能会看到类似 yes^M 或 yes$'\357' 的输出。
使用 sed 删除第34行(如果该行就是有问题的 PermitRootLogin yes 等):
sed -i '34d' /etc/ssh/sshd_config |
然后重新添加正确的配置(建议在文件末尾追加):
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config |
sudo配置
- 安装
sudo:
sh体验AI代码助手代码解读复制代码rz@debian:~$ su |
- 配置
sudo,将普通用户rz加入到sudo组,使其具备sudo组权限:
ruby体验AI代码助手代码解读复制代码root@debian:/home/rz# /sbin/usermod -aG sudo rz |
静态IP配置
- 使用
nano命令编辑网络配置文件/etc/network/interfaces:
# This file describes the network interfaces available on your system |
重启网络服务:
systemctl restart networking重启后再次用
ip addr show ens33确认 IP 是否为192.168.50.14。如果没有修改过来,检查你的 Debian 是否同时安装了 NetworkManager和 systemd-networkd,它们可能会忽略
/etc/network/interfaces。
检查 NetworkManager 是否运行:systemctl status NetworkManager如果显示Unit NetworkManager.service could not be found.
如果NetworkManager正在运行且管理了ens33,可以禁用 NetworkManager 对该接口的管理,或直接停止 NetworkManager:
使用systemd-networkd的话,配置文件通常在/etc/systemd/network/下,不要与 interfaces 混用。如果这里设置了
dns-nameservers 8.8.8.8 223.5.5.5但apt update报 DNS 解析失败。而且无论是否注释dns-nameservers行,结果一样。这说明dns-nameservers这一行并没有真正生效。因为 Debian 中/etc/network/interfaces里的dns-nameservers需要配合resolvconf软件包才能将 DNS 写入/etc/resolv.conf。如果你的系统没有安装或启用resolvconf,那么这一行会被完全忽略。
检查当前实际使用的 DNS:cat /etc/resolv.conf你看一下里面的nameserver是什么。很可能是空的。
直接编辑/etc/resolv.conf:nano /etc/resolv.conf
nameserver 8.8.8.8
nameserver 223.5.5.5
- 重启网络服务:
bash体验AI代码助手代码解读复制代码rz@debian:~$ sudo systemctl restart networking.service |
按
q键退出查看服务状态。 若配置的静态IP地址与当前IP地址不一致时,重启network服务(networking.service)时,已经登录的SSH用户会掉线。重新使用新静态IP地址进行登录即可。
bash配置
~目录配置,使用vim编辑~/.bashrc:
config体验AI代码助手代码解读复制代码 ... |
删除
91-93行的注释
- 使用
sudo vim命令编辑/etc/bash.bashrc,启用bash命令补全功能:
config体验AI代码助手代码解读复制代码 ... |
删除
35-41行的注释
- 加载配置,使生效:
sh体验AI代码助手代码解读复制代码rz@debian:~$ source /etc/bash.bashrc |
安装源配置
- 因为在实验与演示环境中,不需要考虑安全更新,同样也不考虑从源代码进行编辑,为加速每次安装软件与更新速度,注释掉安全源与源码源。使用
sudo vim命令编辑/etc/apt/sources.list:
sh体验AI代码助手代码解读复制代码deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main non-free-firmware |
修改完之后,需要执行
sudo apt update更新可用软件列表。
sshd服务允许root远程登录
- 修改
sshd服务配置文件,使用sudo vim命令编辑/etc/ssh/sshd_config:
config体验AI代码助手代码解读复制代码#PermitRootLogin prohibit-password |
- 重启
ssh服务:
sh体验AI代码助手代码解读复制代码rz@debian:~$ sudo systemctl daemon-reload |
Debian 13 中设置中文
首先更新软件源并安装 locales 包:
apt update |
然后使用以下命令配置语言环境:
dpkg-reconfigure locales |
安装中文字体
为了在命令行和图形界面正确显示中文,需要安装中文字体包:
sudo apt install fonts-wqy-microhei fonts-wqy-zenhei |
安装完成后,可以通过以下命令验证字体是否正确安装:
fc-list :lang=zh |
root@debian:~# fc-list :lang=zh |
主机名配置
- 配置主机名,此处设置主机名为
debase,域名为debase.rz:
bash |
- 使用
sudo vim命令编辑/etc/hosts文件,修改内容如下:
bash体验AI代码助手代码解读复制代码127.0.0.1 localhost |
使用
sudo vim /etc/hosts时,会给出警告信息:sudo: unable to resolve host hub: Name or service not known,是由于此时/etc/hosts内容未做同步变更造成的。
- 重新登录,使主机名生效。
- 使用
ping命令,验证主机名与域名:
bash体验AI代码助手代码解读复制代码rz@debase:~$ ping debase |
使用
Ctrl+C中止ping命令。
常用工具batcat、tree、curl
- 安装
batcat与tree:
bash体验AI代码助手代码解读复制代码rz@debase:~$ sudo apt update |
设置系统时区
timedatectl是一个现代的命令行工具,用于查询和更改系统时间和日期设置。设置时区为Asia/Shanghai:
sh体验AI代码助手代码解读复制代码rz@debase:~$ timedatectl |
history配置记录命令执行时间戳
- 在Linux系统中,默认情况下,Bash shell(以及其他类似的shell,如Zsh)会记录输入的命令历史。然而,这些历史记录默认情况下并不会包含命令执行的时间戳。
- 编辑
~/.bashrc文件,添加如下内容到文件尾:
sh |
将
HISTTIMEFORMAT环境变量设置为包含日期和时间(格式为YYYY-MM-DD HH:MM:SS)的字符串。
- 重新加载配置文件:
sh |
- 使用
history命令:
sh体验AI代码助手代码解读复制代码rz@debase:~$ tree ~/ |
每条命令前面有执行时间戳
安装docker
卸载旧版本
如果你之前安装过 Docker Engine 之前,你需要卸载旧版本,避免冲突:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done |
使用官方安装脚本自动安装
安装命令如下:
curl -fsSL https://get.docker.com -o get-docker.sh |
手动安装
1. 更新软件包
首先,更新现有的软件包和包缓存:
sudo apt update |
2. 安装依赖包
安装一些需要的依赖包,这些包允许 apt 使用 HTTPS 协议来访问 Docker 仓库:
sudo apt install apt-transport-https ca-certificates curl software-properties-common |
3. 添加 Docker 官方 GPG 密钥
使用下面的命令来添加 Docker 官方的 GPG 密钥:
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc |
4. 添加 Docker 仓库
添加 Docker 官方的 APT 软件源:
echo \ |
5. 更新 APT 软件包缓存
添加仓库后,更新 APT 包索引:
sudo apt update |
确保你现在从 Docker 官方仓库安装 Docker 而不是 Debian 默认仓库:
apt-cache policy docker-ce |
你应该看到它指向 https://download.docker.com/,确保这就是官方的 Docker 仓库。
6. 安装 Docker
现在,你可以安装 Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
7. 启动并验证 Docker
启动 Docker 并设置为开机自启:
sudo systemctl start docker |
你可以使用以下命令来验证 Docker 是否安装成功:
# 任一个都可以 |
安装 Docker Compose
(如果上面没有安装Docker Compose ,就按这个安装,安装了就不用管了)
因为我们已经安装了 docker-compose-plugin,所以 Docker 目前已经自带 docker compose 命令,基本上可以替代 docker-compose:
root@debian ~ # docker compose version |
如果某些镜像或命令不兼容,则我们还可以单独安装 Docker Compose:
我们可以使用 Docker 官方发布的 Github 直接安装最新版本:
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose |
此时可以使用 docker-compose version 命令检查是否安装成功:
root@debian ~ # docker-compose version |
修改 Docker 配置
以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘 (泪的教训):
cat > /etc/docker/daemon.json << EOF |
然后重启 Docker 服务:
systemctl restart docker |
好了,我们已经安装好了 Docker 和 Docker Compose,然后就可以开始愉快的安装各种软件,限于篇幅,我们不再赘述,今后慢慢介绍安装各种 Docker 软件的方法。
运行以下测试命令确保 Docker 正常工作:
sudo docker run hello-world |
卸载 docker
删除安装包:
sudo apt-get purge docker-ce |
删除镜像、容器、配置文件等内容:
sudo rm -rf /var/lib/docker |
迁移docker目录
本指南的目标是将 Docker 的默认目录 /var/lib/docker 迁移到另一个位置,例如 /abian/docker。
建议迁移后不要立即删旧目录,保留一段时间确认业务正常后再清理。
完全停止 Docker 服务:为了确保数据一致性,必须先完全停止 Docker 服务及其依赖的 socket。
systemctl stop docker.socket
systemctl stop docker迁移数据到新目录:将原有数据完整地迁移到新位置。
# -a 参数等同于 -dR --preserve=all,会保留链接、权限、时间戳等。
cp -a /var/lib/docker/* /abian/docker/- 目标目录
/abian/docker必须已经存在,如果没有,先创建:sudo mkdir -p /abian/docker - 使用
/*是为了复制目录内的内容,而不是整个/var/lib/docker目录本身(否则会变成/abian/docker/docker/...)。
- 目标目录
配置 Docker 使用新目录:编辑或创建 Docker 的配置文件
/etc/docker/daemon.json。sudo nano /etc/docker/daemon.json
在文件中添加或修改
data-root参数,确保 JSON 格式合法:{
"data-root": "/abian/docker",
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.1ms.run",
"https://docker.mirrors.ustc.edu.cn",
"https://dockerproxy.com"
]
}如果已有其他配置项,确保这是个合法的 JSON 格式。
重新加载配置并启动 Docker:
sudo systemctl daemon-reload
sudo systemctl start docker验证迁移结果:确认 Docker 已成功切换至新目录。
sudo docker info | grep "Docker Root Dir"
输出显示
Docker Root Dir: /abian/docker即表示迁移成功。
安装1panel
要安装 curl
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh |
[磁盘与存储管理](磁盘与存储管理 | Debian.Club)
挂载磁盘
# 路径:/etc/fstab |
开启smb局域网共享
安装 Samba 服务:安装
samba软件包。这可以通过在终端中运行sudo apt update && sudo apt upgrade和sudo apt install samba samba-client来完成。创建共享目录:创建一个用于共享的文件夹,并设置合适的权限。例如
sudo mkdir -p /b860。然后,可以将目录的所属组改为nogroup,并赋予所有用户读写权限:sudo chown nobody:nogroup /b860和sudo chmod 777 /b860编辑 Samba 配置文件:
这是核心步骤。用编辑器打开
/etc/samba/smb.conf,编辑前建议先备份。根据需求,可以配置匿名公共共享或需要身份验证的受限共享两种模式。模式一:匿名公共共享
在文件末尾添加以下配置,允许任何人(不提供密码)访问:[global]
workgroup = WORKGROUP
security = user
map to guest = Bad User
[B860]
path = /b860
browseable = yes
read only = no
guest ok = yes
guest account = nobody
force user = root
[debian]
path = /abian
browseable = yes
read only = no
guest ok = yes
guest account = nobody
force user = nobody
force group = nogroup
create mask = 0777
directory mask = 0777模式二:身份验证共享
如需限制用户,则在文件末尾添加:[B860]
path = /b860
valid users = yourname # 允许的用户
valid users = @groupname # 或 允许的用户组
read only = no
browsable = yes
guest ok = no为确保目录权限正确,可以使用
sudo usermod -aG nogroup nobody将用户添加到共享目录所属组。如果在win网络下没有看到共享盘,先安装
apt install wsdd2 -y,等待网络刷新后就有了。
检查实际的文件所有权:ls -la /abian看到新创建的文件属主为nobody:nogroup。如果设置完,在电脑上没有读写权限的话就修改:
转到:
计算机配置()→Windows 设置→安全设置→本地策略→安全选项。
找到 “网络访问: 本地帐户的共享和安全模型”。
设置为 “经典 - 对本地用户进行身份验证,不改变其本来身份”。
重启 Windows 资源管理器或重启电脑
组策略修改后不一定立即生效,可以重启电脑或只重启资源管理器:
按Ctrl + Shift + Esc打开任务管理器。
找到Windows 资源管理器,右键选择“重新启动”。
添加 Samba 用户并设置密码:使用
sudo smbpasswd -a yourname命令为已有系统用户设置 Samba 专用密码。请注意,该用户名必须是系统中已存在的有效用户。例如:sudo smbpasswd -a yourname。启动并启用 Samba 服务:分别执行以下命令,启动 Samba 的两个核心服务(
smbd负责文件共享,nmbd负责网络发现),并设置它们开机自启:sudo systemctl start smbd
sudo systemctl start nmbd
sudo systemctl enable smbd
sudo systemctl enable nmbd配置防火墙:Debian 常用的防火墙是
ufw,通过sudo ufw status可查看其是否启用。如果已启用,务必放行 Samba 服务的端口:sudo ufw allow samba
或在必要时使用更精确的端口放行规则:
sudo ufw allow 137:139/tcp
sudo ufw allow 137:139/udp
sudo ufw allow 445/tcp
sudo ufw allow 445/udp检查配置
在获取本机 IP 地址(ip a等命令)后,使用testparm命令检查配置有无语法错误:sudo testparm
debian13上挂载局域网硬盘
- 安装客户端工具:Debian 本身不包含挂载 SMB 共享所需的工具,需要先安装
cifs-utils软件包:
sudo apt update |
- 准备挂载点和凭证:例如挂载到
/adsm。这里作为示例,路径可自定义,但之后所有步骤需保持一致:
sudo mkdir -p /adsm |
- 准备认证文件(安全做法),避免将密码明文写在系统配置文件中:
sudo nano /etc/samba/credentials |
在打开的文件中添加以下内容:
username=你的NAS用户名 |
设置文件权限,确保凭据文件仅 root 用户可读写,防止泄露:
sudo chmod 600 /etc/samba/credentials |
- 挂载共享目录 :运行以下命令进行挂载,这里通过指定
uid和gid选项确保本地普通用户能读写和执行:
//192.168.50.236/adsm /adsm cifs credentials=/etc/samba/credentials,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,iocharset=utf8,vers=3.0,nofail,_netdev,x-systemd.automount,x-systemd.device-timeout=30 0 0 |
命令用到的参数说明如下:
| 参数 | 作用 |
|---|---|
credentials=/etc/samba/credentials |
引用之前创建的凭证文件,安全性高,避免在命令里明文暴露密码。 |
uid=$(id -u), gid=$(id -g) |
使用当前用户的 ID 作为挂载后文件和目录的所有者。 |
file_mode=0777, dir_mode=0777 |
将所有文件/目录的权限设为 0777(即可读、可写、可执行)。 |
iocharset=utf8 |
确保中文字符等显示正常。 |
vers=3.0 |
指定 SMB 协议版本,可以提高兼容性和安全性。 |
nofail |
挂载失败不会导致启动失败。 |
_netdev |
明确告诉系统这是一个网络设备,等待网络就绪后再尝试挂载。 |
x-systemd.automount |
使用systemd的自动挂载机制,只有在你第一次访问 `/mnt/synology 时才会真正执行挂载,而不是启动时立即挂载。这样即使NAS未开机,你的系统也能正常启动,等你访问目录时才会等待(此时若NAS仍不可达,会返回错误)。 |
x-systemd.device-timeout=30 |
设置等待设备就绪的超时时间(30秒) |
uid=1000,gid=1000 中的 1000 是 Debian(以及大多数 Linux 发行版)分配给第一个普通用户的默认用户 ID(UID)和组 ID(GID)。
id -u # 仅显示 UID |
如果不指定,默认可能使用 uid=0,gid=0(root 用户),导致普通用户无法读写。
执行完上述命令后,可以通过 ls 命令查看 /mnt/synology_photo 目录下的文件,确认是否挂载成功。
**检查文件输入是否有错:**保存后,输入
sudo mount -a测试配置有无语法错误。若无报错,重启后共享目录便会自动挂载。如遇到parse error at line 21,说明/etc/fstab文件的第 21 行存在语法错误。请执行以下命令查看第21行(如果不知道行号,也可以直接看文件末尾几行):cat -n /etc/fstab #如果不知道行号 显示行号,然后检查第21行
sed -n '21p' /etc/fstab确保读写与执行功能:关键在于挂载选项
file_mode=0777, dir_mode=0777和uid、gid参数的配合。0777权限赋予了所有用户读、写和执行权限,而uid和gid确保这些权限归属于你当前的用户。处理主机名
DSM:命令中使用//DSM/photo的前提是 Debian 设备能解析DSM这个主机名,这通常依赖于本地 DNS 或/etc/hosts文件。如果在挂载时遇到mount error(112): Host is down或其他名称解析相关错误,最可靠的方法是在命令或fstab中将//DSM/photo替换为你的 Synology NAS 的 IP 地址,例如//192.168.1.100/photo。