Debian 12 包安全机制变更简述

Debian 12 包安全机制变更简述

在新版本 Debian 12 (Bookworm) 中,安全签名验证机制有了一些重要的改进,目的是提高包管理的安全性,避免设备因为不可靠源而遭到渗透。

主要的变更包括:

1. 静态 keyring 文件

以前,系统通过 /etc/apt/trusted.gpg 和 /etc/apt/trusted.gpg.d/中的可信签名密钥来校验所有包源,但这种方式存在风险,文件权限过于宽松,可能被权限高的进程修改,而且对全部包源通用,有很大的风险面。

在 Debian 12 里,每个 APT 包源建议都使用独立的 keyring,并通过 sources.list或 .list 文件中的 signed-by 参数指定,如:

deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main

这种写法可以确保:

  • 仅仅信任指定源,避免全局性影响
  • 便于维护和检查,提高安全性

2. 公钥管理方式改变

对于新添包源,得自行下载并存放公钥(而不再是直接 apt-key add),如:

wget -O /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

这种做法是更安全的,避免未来 apt-key 废弃后造成乱。

3. 实际环境中的关键问题

实际使用过程中,如果包源没有按要求指定 signed-by,而又缺少对应公钥,就会出现类似:

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B188E2B695BD4743

遇到这种错误,需要按照源网站提供的方式下载公钥,且放至正确的 keyrings 目录,然后重新扫描系统:

sudo apt update

总结

Debian 12 安全机制的改进,令包管理更加井井有条,就是多了一些初始配置工作,但也为全体系统的安全性打下了更坚实的基础。

在最近有设备升级到 Debian 12 或者添加了第三方包源时,记得检查 signed-by配置,并确保 keyring 是最新版本!

WordPress 网站支持多域名

正常情况下,一个 wordpress 网站只能支持使用在后台配置的域名,如果绑定了多个域名,点击会跳转到后台设置的那个域名。

但有时我们的网站可能需要同时使用多个域名,对于这个需求,我们有两种办法可以做到,一是使用插件,例如 WP Multidomain 和 Domain Mapping System ;第二种方法是小改wp-config.php文件,这种方法简单可控,并且不拖慢系统速度。具体操作如下:

找到你的 wp-config.php,在文件中加入下面这段:

// 在 wp-config.php 添加,让 WordPress 根据访问域名动态确定 URL
if (isset($_SERVER['HTTP_HOST'])) {
    $http_host = $_SERVER['HTTP_HOST'];
    define('WP_HOME', 'https://' . $http_host);
    define('WP_SITEURL', 'https://' . $http_host);
}

放在靠近 /* That's all, stop editing! Happy publishing. */ 上面就可以了。

这样,无论是 aaa.com、bbb.com,WordPress都会以当前访问的域名作为站点 URL,不会强制跳转,也不会出错。

注意事项

  • 这适合 多个域名访问同一内容 的场景。
  • 如果你要在不同域名下显示不同内容(比如 LOGO不同、文章不同),还要额外加逻辑判断。
  • 服务器(Nginx / Apache)那边,记得把所有域名都绑定到同一个目录。
  • SSL 证书(HTTPS)要支持所有域名。可以用通配符证书或者给每个域名申请单独证书。

Windows的.bat文件和.cmd文件区别

.bat和.cmd都是Windows批处理文件,但它们有一些重要区别:

.bat文件

  • 起源于MS-DOS时代,是传统的批处理文件格式
  • 可在所有Windows版本上运行,兼容性更好
  • 在COMMAND.COM环境中执行
  • 功能相对基础

.cmd文件

  • Windows NT系列引入的批处理文件格式(Windows XP及以上)
  • 在CMD.EXE环境中执行
  • 提供更好的错误处理和环境变量扩展
  • 有更多高级功能和改进的命令处理

实际使用中的区别

  • 在现代Windows系统中(Windows 10/11),两者差异不大
  • .cmd文件在处理变量扩展和错误级别时更可靠
  • .cmd文件支持延迟环境变量扩展等高级特性

修改最近一次 git commit 的提交信息

在使用 git 进行版本管理时,开发过程中会经常进行代码提交,但有时会因为一些问题需要对提交的信息进行修改,比如写了错别字或提交信息不准确等。

这种情况下,我们可以通过git commit --amend命令来修改之前的提交信息。这条命令会打开默认的文本编辑器,允许你修改提交信息。修改完成后保存并关闭编辑器即可。

顺便学个英语:

amend /əˈmend/ 这个单词是“修正”的意思。

git删除分支

在软件开发过程中,有时我们需要删除git上的一些分支,比如我们现要删除分支:noi18n,此时可以按以下步骤进行操作:

1、首先删除本地分支

# 如果分支已合并到其他分支(安全删除)
git branch -d noi18n

# 如果分支未合并,强制删除
git branch -D noi18n

2、如果存在远程分支,那么也需要同步删除

git push origin --delete noi18n

3、执行完了上面的删除命令后,我们需要确认一下删除是否成功,可以运行下面的命令查看被删除的分支是否还存在。

git branch -a  # 检查本地分支      
git ls-remote origin # 检查远程分支

git版本回退

在开发过程中,有时需要回退版本,此时我们可以使用git命令git revert进行回退版本。

需要注意的是,这个命令不会删除已经提交过的版本,会保留错误提交的历史记录。回退是通过生成一个反向提交来抵消之前的错误的版本。

使用方法如下:

git revert --no-commit <错误提交ID>  # 回退到旧版本

需要注意的是,如果回退的版本在多个提交之前,那么要把这些提交记录一个一个地回退,不能跳跃版本回退,例如:

git revert --no-commit C
git revert --no-commit B
git revert --no-commit A

参数--no-commit会应用变更但不自动提交,最后手动提交一次,例如:

git commit -m "revert to old version"
git push origin main

这样,我们就使用git命令完成了版本的回退。

debian 12 通过 pip 安装 pdf2docx

在 Debian 12 上安装 pdf2docx,可以通过 Python 的包管理工具 pip 来安装。为了避免影响系统的环境,建议在一个 Python 虚拟环境中安装该工具。下面是详细的安装步骤:

1. 安装 Python 3 和 pip

首先,确保你的系统已经安装了 Python 3 和 pip。可以通过以下命令检查:

python3 --version
pip3 --version

如果没有安装,可以通过以下命令安装:

sudo apt update
sudo apt install python3 python3-pip

2. 创建 Python 虚拟环境

虚拟环境可以隔离不同项目所需的依赖包。创建虚拟环境的步骤如下:

python3 -m venv myenv

这将创建一个名为 myenv 的虚拟环境,所有的包将会安装在这个目录下,而不会影响系统环境。

3. 激活虚拟环境

要使用虚拟环境中的 Python 和 pip,你需要先激活它。使用以下命令来激活虚拟环境:

source myenv/bin/activate

激活后,你的终端提示符会发生变化,通常会看到虚拟环境的名称(myenv)出现在命令行前缀处,表明你当前处于该虚拟环境中。

4. 安装 pdf2docx

在虚拟环境中,你可以使用 pip 安装 pdf2docx:

pip install pdf2docx

安装完成后,pdf2docx 将只会安装在 myenv 目录下,而不会影响系统环境。

5. 使用 pdf2docx

安装完成后,你就可以在虚拟环境中使用 pdf2docx 进行 PDF 转 DOCX 的转换了。例如,使用以下命令:

from pdf2docx import Converter

cv = Converter('input.pdf')
cv.convert('output.docx', start=0, end=None)
cv.close()

6. 退出虚拟环境

当你完成工作后,可以通过以下命令退出虚拟环境:

deactivate

这样,你就成功在 Debian 12 上通过 pip 安装了 pdf2docx,并且使用了 Python 虚拟环境来隔离依赖,避免对系统环境的影响。

Debian 12 下 pip 更换国内源

在 Debian 12 上,pip 默认使用的是官方的 Python 包索引(PyPI),但由于网络原因,访问可能会较慢。为了提高下载速度,可以更换为国内的镜像源。

1. 临时使用国内源

如果只是临时使用国内源,可以在安装 Python 包时添加 -i 参数。例如:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple somepackage

2. 修改用户级别配置(推荐)

为了让 pip 默认使用国内源,可以修改用户级别的配置文件,推荐使用以下方法:

mkdir -p ~/.config/pip

echo "[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple" > ~/.config/pip/pip.conf

这样 pip 以后都会默认使用清华源,无需每次手动指定。

3. 修改全局配置(需要管理员权限)

如果希望所有用户都使用国内源,可以修改全局配置文件:

sudo mkdir -p /etc/pip

echo "[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple" | sudo tee /etc/pip/pip.conf

这种方式会影响系统中所有用户的 pip 配置。

4. 其他国内源

除了清华 TUNA 源,还可以选择其他国内镜像源,例如:

  • 阿里云: https://mirrors.aliyun.com/pypi/simple/
  • 中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/
  • 豆瓣: https://pypi.douban.com/simple/(不稳定)

可以根据个人网络情况选择合适的源。

5. 验证配置是否生效

可以运行以下命令检查当前 pip 使用的源:

pip config list

如果输出中包含 index-url = https://pypi.tuna.tsinghua.edu.cn/simple,说明配置已经生效。

这样就可以更快地安装 Python 包,提高开发效率!

Windows PHP8.3 安装 imagick 扩展

从PECL中下载imagick扩展,需要注意对应的PHP版本,下载地址如下:

https://pecl.php.net/package/imagick/3.7.0/windows

然后把 php_imagick.dll 放到 PHP8.3 的扩展目录 ext 目录中。

然后把相关运行时文件放到PHP目录下,可以执行下面的命令一键复制过去:

copy CORE_RL_* E:\php\php-8.3.3-Win32-vs16-x64\
copy IM_MOD_* E:\php\php-8.3.3-Win32-vs16-x64\

注意:E:\php\php-8.3.3-Win32-vs16-x64\ 是我电脑上的PHP8.3路径,需要替换为你自己的PHP存放路径。

Git 初始化与首次提交流程

初始化 Git 仓库(如果还未初始化)

git init

添加文件并进行第一次提交(如果仓库已经有文件,那么这两步可以不用执行,配置好后续信息后,直接从服务器拉取代码即可。)

git add .
git commit -m "Initial commit"

创建 main 分支(如果当前不是 main 分支)

git branch -M main

设置远程仓库(如果尚未设置)

git remote add origin <你的远程仓库地址>

使用 git pull 将远程仓库的内容拉取到本地,并合并(如果有冲突的话,你需要手动解决)

git pull origin main --rebase

推送代码到 main 分支

git push -u origin main

-u 选项表示将 main 设为默认上游分支,之后你可以直接使用 git push,Git 会自动推送到 main。

如果要推送到 master 分支,那么就把上面的 main 替换为 master 即可。