debian使用记录

vim安装

  • Debian12最小化安装后,需要单独安装vim:这个不用安装,可以直接使用nano
sh体验AI代码助手代码解读复制代码rz@debian:~$ su
Password:
root@debian:/home/rz# apt update
root@debian:/home/rz# apt install vim
root@debian:/home/rz# exit
exit
rz@debian:~$

[vim命令详解:](Linux vi/vim | 菜鸟教程)

检查文件错误

例如:检查修改了 /etc/ssh/sshd_config 中的 PermitRootLogin yesPasswordAuthentication yes,然后执行 systemctl restart ssh 时出现错误。

执行以下命令,获取失败的具体原因:

systemctl status ssh.service
journalctl -xeu ssh.service

常见的错误输出会直接指出错误的行号或冲突字段。

SSH 自带配置检查工具,可以精确定位问题:

sshd -t
root@ debian:"# systemctl status ssh 
x ssh. service -OpenBSD Secure Shell server Loaded: loaded (/usr/lib/systemd/system/ssh. service: enabled; preset: enabled) Active: failed (Result: exit-code) since Tue 2026-04-28 08:53:01 CST; 4min 84s ago Duration: 33min 31.361s
Invocation: 57e5df3c8fcf4af88ef021ad64734319
Docs: man: sshd(8)
man: sshd_config(5)
Process: 1395 ExecStartPre=/usr/sbin/sshd -t (code=exited, status-255/EXСЕPTION) Apr 28 08:53:01 debian systemd [1] :
: ssh. service: Scheduled restart Job, restart counter is at 5.
Apr
28 08:53:01 debian systemd[1]: ssh. service: Start request repeated too quickly. Apr 28 08:53:01 debian systemd [1]: ssh. service: Failed with result ' exit-code Apr 28 08:58:01 debian systemd[1]: Failed to start ssh. service -OpenBSD Secure Shell server. Apr 28 08:58:01 debian systemd[1]: ssh. service: Start request repeated too quickly. Apr 28 08:58:01 debian systemd[1]: ssh. service: Failed with result ' exit-code Apr 28 08:58:01 debian systemd[1]: Failed to start ssh. service -OpenBSD Secure Shell server.
# 精确定位问题 第34行 yes 有问题
root@ debian:"# sshd -t
' etc/ssh/sshd_config line 34: unsupported option "yes\357".
rontadehien

我们看到了关键错误:/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^Myes$'\357' 的输出。

使用 sed 删除第34行(如果该行就是有问题的 PermitRootLogin yes 等):

sed -i '34d' /etc/ssh/sshd_config

然后重新添加正确的配置(建议在文件末尾追加):

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config

sudo配置

  • 安装sudo
sh体验AI代码助手代码解读复制代码rz@debian:~$ su
Password:
root@debian:/home/rz# apt install sudo
  • 配置sudo,将普通用户rz加入到sudo组,使其具备sudo组权限:
ruby体验AI代码助手代码解读复制代码root@debian:/home/rz# /sbin/usermod -aG sudo rz
root@debian:/home/rz# groups rz
rz : rz cdrom floppy sudo audio dip video plugdev users netdev
root@debian:/home/rz# exit
exit
rz@debian:~$ newgrp sudo

静态IP配置

  • 使用nano命令编辑网络配置文件/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens33
# 这个是利用 dhcp 自动生成 ip 地址,要注释掉
#iface ens33 inet dhcp
# static ip addrss
auto ens33
iface ens33 inet static
address 192.168.50.14
netmask 255.255.255.0
gateway 192.168.50.1
dns-nameservers 8.8.8.8 223.5.5.5
  1. 重启网络服务:systemctl restart networking

  2. 重启后再次用 ip addr show ens33 确认 IP 是否为 192.168.50.14

  3. 如果没有修改过来,检查你的 Debian 是否同时安装了 NetworkManagersystemd-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 混用。

  4. 如果这里设置了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.confnano /etc/resolv.conf

    nameserver 8.8.8.8
    nameserver 223.5.5.5
  • 重启网络服务:
bash体验AI代码助手代码解读复制代码rz@debian:~$ sudo systemctl restart networking.service
rz@debian:~$ sudo systemctl status networking.service
● networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; preset: en>
Active: active (exited) since Wed 2024-12-25 08:59:48 EST; 27s ago
Docs: man:interfaces(5)
Process: 8267 ExecStart=/sbin/ifup -a --read-environment (code=exited, statu>
Process: 8292 ExecStart=/bin/sh -c if [ -f /run/network/restart-hotplug ]; t>
Main PID: 8292 (code=exited, status=0/SUCCESS)
CPU: 44ms

Dec 25 08:59:48 debian systemd[1]: Starting networking.service - Raise network i>
Dec 25 08:59:48 debian systemd[1]: Finished networking.service - Raise network i>

q键退出查看服务状态。 若配置的静态IP地址与当前IP地址不一致时,重启network服务(networking.service)时,已经登录的SSH用户会掉线。重新使用新静态IP地址进行登录即可。

bash配置

  • ~目录配置,使用vim编辑~/.bashrc
config体验AI代码助手代码解读复制代码 ...
90 │ # some more ls aliases
91 │ alias ll='ls -l'
92 │ alias la='ls -A'
93 │ alias l='ls -CF'
...

删除91-93行的注释

  • 使用sudo vim命令编辑/etc/bash.bashrc,启用bash命令补全功能:
config体验AI代码助手代码解读复制代码 ...
34 │ # enable bash completion in interactive shells
35 │ if ! shopt -oq posix; then
36 │ if [ -f /usr/share/bash-completion/bash_completion ]; then
37 │ . /usr/share/bash-completion/bash_completion
38 │ elif [ -f /etc/bash_completion ]; then
39 │ . /etc/bash_completion
40 │ fi
41 │ fi
...

删除35-41行的注释

  • 加载配置,使生效:
sh体验AI代码助手代码解读复制代码rz@debian:~$ source /etc/bash.bashrc
rz@debian:~$ source .bashrc

安装源配置

  • 因为在实验与演示环境中,不需要考虑安全更新,同样也不考虑从源代码进行编辑,为加速每次安装软件与更新速度,注释掉安全源与源码源。使用sudo vim命令编辑/etc/apt/sources.list
sh体验AI代码助手代码解读复制代码deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main non-free-firmware
# deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main non-free-firmware

# deb http://security.debian.org/debian-security bookworm-security main non-free-firmware
# deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main non-free-firmware
# deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main non-free-firmware

修改完之后,需要执行sudo apt update更新可用软件列表。

sshd服务允许root远程登录

  • 修改sshd服务配置文件,使用sudo vim命令编辑/etc/ssh/sshd_config
config体验AI代码助手代码解读复制代码#PermitRootLogin prohibit-password
PermitRootLogin yes
  • 重启ssh服务:
sh体验AI代码助手代码解读复制代码rz@debian:~$ sudo systemctl daemon-reload
rz@debian:~$ sudo systemctl restart sshd
rz@debian:~$ sudo systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled)
Active: active (running) since Wed 2024-12-25 21:51:31 EST; 12s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 6721 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 6723 (sshd)
Tasks: 1 (limit: 2264)
Memory: 1.4M
CPU: 23ms
CGroup: /system.slice/ssh.service
└─6723 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

Dec 25 21:51:31 debian systemd[1]: Starting ssh.service - OpenBSD Secure Shell s>
Dec 25 21:51:31 debian sshd[6723]: Server listening on 0.0.0.0 port 22.
Dec 25 21:51:31 debian sshd[6723]: Server listening on :: port 22.
Dec 25 21:51:31 debian systemd[1]: Started ssh.service - OpenBSD Secure Shell se>

Debian 13 中设置中文

首先更新软件源并安装 locales 包:

apt update
apt install locales

然后使用以下命令配置语言环境:

dpkg-reconfigure locales

安装中文字体
为了在命令行和图形界面正确显示中文,需要安装中文字体包:

sudo apt install fonts-wqy-microhei fonts-wqy-zenhei

安装完成后,可以通过以下命令验证字体是否正确安装:

fc-list :lang=zh
root@debian:~# fc-list :lang=zh
/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei,文泉驛微米黑,文泉驿微米黑:style=Regular
/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei,文泉驛正黑,文泉驿正黑:style=Regular
/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei Sharp,文泉驛點陣正黑,文泉驿点阵正黑:style=Regular
/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei Mono,文泉驛等寬正黑,文泉驿等宽正黑:style=Regular
/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei Mono,文泉驛等寬微米黑,文泉驿等宽微米黑:style=Regular

主机名配置

  • 配置主机名,此处设置主机名为debase,域名为debase.rz
bash

体验AI代码助手
代码解读
复制代码rz@debian:~$ sudo hostnamectl set-hostname debase --static
  • 使用sudo vim命令编辑/etc/hosts文件,修改内容如下:
bash体验AI代码助手代码解读复制代码127.0.0.1       localhost
127.0.1.1 debase
192.168.152.3 debase.rz

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

使用sudo vim /etc/hosts时,会给出警告信息:sudo: unable to resolve host hub: Name or service not known,是由于此时/etc/hosts内容未做同步变更造成的。

  • 重新登录,使主机名生效。
  • 使用ping命令,验证主机名与域名:
bash体验AI代码助手代码解读复制代码rz@debase:~$ ping debase
PING debase (127.0.1.1) 56(84) bytes of data.
64 bytes from debase (127.0.1.1): icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from debase (127.0.1.1): icmp_seq=2 ttl=64 time=0.034 ms
^C
--- debase ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1024ms
rtt min/avg/max/mdev = 0.013/0.023/0.034/0.010 ms
rz@debase:~$ ping debase.rz
PING debase.rz (192.168.152.3) 56(84) bytes of data.
64 bytes from debase.rz (192.168.152.3): icmp_seq=1 ttl=64 time=0.017 ms
64 bytes from debase.rz (192.168.152.3): icmp_seq=2 ttl=64 time=0.025 ms
^C
--- debase.rz ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1029ms
rtt min/avg/max/mdev = 0.017/0.021/0.025/0.004 ms

使用Ctrl+C中止ping命令。

常用工具batcat、tree、curl

  • 安装batcattree
bash体验AI代码助手代码解读复制代码rz@debase:~$ sudo apt update
Hit:1 http://mirrors.tuna.tsinghua.edu.cn/debian bookworm InRelease
Hit:2 http://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
rz@debase:~$ sudo apt install bat tree curl

设置系统时区

  • timedatectl是一个现代的命令行工具,用于查询和更改系统时间和日期设置。设置时区为Asia/Shanghai
sh体验AI代码助手代码解读复制代码rz@debase:~$ timedatectl
Local time: Wed 2024-12-25 22:00:36 EST
Universal time: Thu 2024-12-26 03:00:36 UTC
RTC time: Thu 2024-12-26 03:00:36
Time zone: US/Eastern (EST, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
rz@debase:~$ sudo timedatectl set-timezone Asia/Shanghai
rz@debase:~$ timedatectl
Local time: Thu 2024-12-26 11:01:07 CST
Universal time: Thu 2024-12-26 03:01:07 UTC
RTC time: Thu 2024-12-26 03:01:07
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

history配置记录命令执行时间戳

  • 在Linux系统中,默认情况下,Bash shell(以及其他类似的shell,如Zsh)会记录输入的命令历史。然而,这些历史记录默认情况下并不会包含命令执行的时间戳。
  • 编辑~/.bashrc文件,添加如下内容到文件尾:
sh

体验AI代码助手
代码解读
复制代码export HISTTIMEFORMAT="%F %T "

HISTTIMEFORMAT环境变量设置为包含日期和时间(格式为YYYY-MM-DD HH:MM:SS)的字符串。

  • 重新加载配置文件:
sh

体验AI代码助手
代码解读
复制代码rz@debase:~$ source .bashrc
  • 使用history命令:
sh体验AI代码助手代码解读复制代码rz@debase:~$ tree ~/
/home/rz/

0 directories, 0 files
rz@debase:~$ history
...
53 2024-12-26 11:02:57 tree ~/
54 2024-12-26 11:03:08 history

每条命令前面有执行时间戳

安装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
sudo sh get-docker.sh


手动安装

1. 更新软件包

首先,更新现有的软件包和包缓存:

sudo apt update
sudo apt upgrade

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
sudo chmod a+r /etc/apt/keyrings/docker.asc

4. 添加 Docker 仓库

添加 Docker 官方的 APT 软件源:

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新
sudo apt-get update

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
sudo systemctl enable docker

你可以使用以下命令来验证 Docker 是否安装成功:

# 任一个都可以
sudo docker --version
sudo docker info

安装 Docker Compose

(如果上面没有安装Docker Compose ,就按这个安装,安装了就不用管了)

因为我们已经安装了 docker-compose-plugin,所以 Docker 目前已经自带 docker compose 命令,基本上可以替代 docker-compose

root@debian ~ # docker compose version
Docker Compose version v2.27.1

如果某些镜像或命令不兼容,则我们还可以单独安装 Docker Compose:

我们可以使用 Docker 官方发布的 Github 直接安装最新版本:

curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

此时可以使用 docker-compose version 命令检查是否安装成功:

root@debian ~ # docker-compose version
Docker Compose version v2.27.1

修改 Docker 配置

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘 (泪的教训):

cat > /etc/docker/daemon.json << EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
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

建议迁移后不要立即删旧目录,保留一段时间确认业务正常后再清理。

  1. 完全停止 Docker 服务:为了确保数据一致性,必须先完全停止 Docker 服务及其依赖的 socket。

    systemctl stop docker.socket
    systemctl stop docker
  2. 迁移数据到新目录:将原有数据完整地迁移到新位置。

    # -a 参数等同于 -dR --preserve=all,会保留链接、权限、时间戳等。
    cp -a /var/lib/docker/* /abian/docker/
    • 目标目录 /abian/docker 必须已经存在,如果没有,先创建:sudo mkdir -p /abian/docker
    • 使用 /* 是为了复制目录内的内容,而不是整个 /var/lib/docker 目录本身(否则会变成 /abian/docker/docker/...)。
  3. 配置 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 格式。

  4. 重新加载配置并启动 Docker

    sudo systemctl daemon-reload
    sudo systemctl start docker
  5. 验证迁移结果:确认 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
# / was on /dev/sda2 during installation
UUID=7e5cb82e-f863-4198-bac5-20f24a628370 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=5AC8-14C9 /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda3 during installation
UUID=9fedede9-8f2b-412a-88ed-df6fdc9f779c none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

UUID=4b32b10e-a2be-453f-9ad3-3be35ce11fe3 /abian ext4 defaults 0 2
#UUID=082de2f6-c93f-f64d-b14e-8d74e728622c /b860 ext4 defaults 0 2

//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

开启smb局域网共享

  • 安装 Samba 服务:安装 samba 软件包。这可以通过在终端中运行 sudo apt update && sudo apt upgradesudo apt install samba samba-client 来完成。

  • 创建共享目录:创建一个用于共享的文件夹,并设置合适的权限。例如 sudo mkdir -p /b860。然后,可以将目录的所属组改为 nogroup,并赋予所有用户读写权限:sudo chown nobody:nogroup /b860sudo 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
sudo apt install cifs-utils
  • 准备挂载点和凭证:例如挂载到 /adsm。这里作为示例,路径可自定义,但之后所有步骤需保持一致:
sudo mkdir -p /adsm
  • 准备认证文件(安全做法),避免将密码明文写在系统配置文件中:
sudo nano /etc/samba/credentials

在打开的文件中添加以下内容:

username=你的NAS用户名
password=你的NAS密码
domain=WORKGROUP

设置文件权限,确保凭据文件仅 root 用户可读写,防止泄露:

sudo chmod 600 /etc/samba/credentials
  • 挂载共享目录 :运行以下命令进行挂载,这里通过指定 uidgid 选项确保本地普通用户能读写和执行:
//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
id -g # 仅显示 GID

如果不指定,默认可能使用 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=0777uidgid 参数的配合。0777 权限赋予了所有用户读、写和执行权限,而 uidgid 确保这些权限归属于你当前的用户。

  • 处理主机名 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