L B T

记 录 过 去 的 经 验

环境信息

  • Centos 7

TCP_wrappers 主要是工作在应用层的一个安全工具,使用访问控制列表(ACL)来防止主机名和主机地址的欺骗,用于过滤对 类 Unix 系统的网络访问。

在一个安全的系统中,Linux 自身具有两层安全的防火墙。第一层是通过 IP/Port 过滤机制的 iptables 来实现,第二层,也就是 TCP_wrappers 了,它主要是通过对系统中的某些服务进行开放与关闭,允许和禁止来有效保证系统安全运行。
可以简单理解为 Linux 系统访问控制的流程:

Client -> iptables -> TCP_wrappers -> Server 的访问控制

  • iptables :基于源 IP/端口、目的 IP/端口进行访问控制
  • TCP_wrappers:基于服务自身运行情况进行访问控制
  • Server:基于服务器本身行为包括文件、目录等权限进行访问控制
阅读全文 »

环境信息

  • python 3.10
  • django 4.0

Python logging 模块说明

Django 使用 Python 内置的 logging 模块处理系统日志,一份 Python logging 配置由下面四个部分组成:

  • Loggers
  • Handlers
  • Filters
  • Formatters

Loggers

logger 是日志系统的入口。每个 logger 都是命名了的 bucket, 消息写入 bucket 以便进一步处理
logger 可以配置 日志级别。日志级别描述了由该 logger 处理的消息的严重性。Python 定义了下面几种日志级别:

  • DEBUG:排查故障时使用的低级别系统信息
  • INFO:一般的系统信息
  • WARNING:描述系统发生了一些小问题的信息
  • ERROR:描述系统发生了大问题的信息
  • CRITICAL:描述系统发生严重问题的信息

每一条写入 logger 的消息都是一条 日志记录。每一条日志记录也包含 日志级别,代表对应消息的严重程度。日志记录还包含有用的元数据,来描述被记录了日志的事件细节,例如堆栈跟踪或者错误码。

logger 处理一条消息时,会将自己的 日志级别 和这条消息的 日志级别 做对比。如果消息的日志级别匹配或者高于 logger 的日志级别,它就会被进一步处理。否则这条消息就会被忽略掉。

logger 确定了一条消息需要处理之后,会把它传给 Handler

阅读全文 »

环境信息

  • Python 3.10

虚拟环境创建步骤

假定项目名为 project01, 目录名为 project01

mkdir project01
cd project01
python3 -m venv .

以上命令会在目录 project01 中创建虚拟环境,查看当前目录,会产生以下目录和文件

$ ls
bin include lib lib64 pyvenv.cfg

观察 bin 目录的内容,里面有 python3pip3 等可执行文件,实际上是链接到 Python 系统目录的软链接。

$ ls -l bin/
total 36
-rw-r--r-- 1 root root 1991 Aug 16 17:35 activate
-rw-r--r-- 1 root root 917 Aug 16 17:35 activate.csh
-rw-r--r-- 1 root root 2059 Aug 16 17:35 activate.fish
-rw-r--r-- 1 root root 9033 Aug 16 17:35 Activate.ps1
-rwxr-xr-x 1 root root 234 Aug 16 17:35 pip
-rwxr-xr-x 1 root root 234 Aug 16 17:35 pip3
-rwxr-xr-x 1 root root 234 Aug 16 17:35 pip3.10
lrwxrwxrwx 1 root root 10 Aug 16 17:35 python -> python3.10
lrwxrwxrwx 1 root root 10 Aug 16 17:35 python3 -> python3.10
lrwxrwxrwx 1 root root 25 Aug 16 17:35 python3.10 -> /usr/local/bin/python3.10

Linux 环境使用以下命令激活虚拟环境

$ source bin/activate
(project01) [root@localhost project01]#

命令提示符变了,有个 (project01) 前缀,表示当前环境是一个名为 project01 的 Python 环境。
在此虚拟环境中安装包,都会被安装到 (project01) 环境下,具体目录为 project01/lib/python3.10/site-packages/,系统 Python 环境不受任何影响,也就是说,project01 这个环境是专门针对 project01 应用(项目)创建的,和系统 python 环境或其他应用互不影响。

要退出当前虚拟环境,可以执行以下命令

deactivate

退出虚拟环境后,再执行如 pip3 install 命令安装的包,会安装到系统 Python 环境。
完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离。

如果不再使用某个 venv ,例如 project01,删除它也很简单。首先确认该 venv 没有处于 激活 状态,然后直接把整个目录 project01 删掉就行。

环境信息

  • os: linux 3.10.0-1160.62.1.el7.x86_64 CentOS Linux 7 (Core)
  • hexo: 6.2.0
  • hexo-cli: 4.3.0
  • node: 16.16.0
  • Next 8.12.2

安装 canvas-nest

参考 canva-nest 官网 安装

npm
npm install --save canvas-nest.js

可选操作,主要是为了生成 canvas-nest.js 文件

配置 Next

编辑 next配置文件,新增以下配置

_config.next.yml
# background settings
# add canvas-nest effect
# see detail from https://github.com/hustcc/canvas-nest.js
canvas_nest:
enable: true
url: https://s.csms.tech/js/canvas-nest.js
color: 0,0,255
opacity: 0.7
zIndex: -2
count: 99

引入 canvas-nest.js

编辑文件 themes/next/layout/_layout.njk, 在</body> 之前新增以下内容

themes/next/layout/_layout.njk
{% if theme.canvas_nest.enable %}
<script type="text/javascript" color="{{ theme.canvas_nest.color }}" opacity='{{ theme.canvas_nest.opacity }}' zIndex="{{ theme.canvas_nest.zIndex }}" count="{{ theme.canvas_nest.count }}" src="{{ theme.canvas_nest.url }}">
</script>
{% endif %}

awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

阅读全文 »

常用选项说明

-n    使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN (例如文件内容)的内容一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-i 直接修改读取的内容,而不是由屏幕输出。
-f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的sed 动作;
阅读全文 »

LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将一个或多个硬盘或分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘或分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。

/boot 分区不可以在逻辑卷组上,否则bootloader会无法读取.

阅读全文 »

sftp 是 Secure File Transfer Protocol 的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。SFTP 为 SSH 的一部分,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的 FTP 要低得多,如果您对网络安全性要求更高时,可以使用 SFTP 代替 FTP。默认ssh启用了sftp,只要可登陆系统的用户(/bin/bash)就可登陆,登陆后目录无限制,可任意切换其他目录。为了安全起见,可以配置sshd以限制sftp登录用户的权限。最好将登陆后用户限制在指定目录,无法切换到外部目录

阅读全文 »