Skip to content

Instantly share code, notes, and snippets.

@fwqaaq
Last active April 22, 2024 07:40
Show Gist options
  • Save fwqaaq/d2a4b7c63a062cdc739c592921867625 to your computer and use it in GitHub Desktop.
Save fwqaaq/d2a4b7c63a062cdc739c592921867625 to your computer and use it in GitHub Desktop.
一些日常遇到的配置问题

Arch Linux

Caution

在使用 Arch Linux 的时候会有很多问题,例如更新的时候出现:PKGBUILD Does not exist

需要先更新 gpg 密钥再去更新

sudo pacman -S archlinux-keyring
sudo pacman -Syu

配置输入 fcitx5 + rime 输入发的时候,记得要重启。推荐使用雾凇输入法

yay -S fcitx5-im fcitx5-chinese-addons
yay -S rime-ice-git

Postgresql

这里我使用的是 Arch

sudo yay -S postgresql
# 这里切换到 postgresql 到默认用户 postgres,-c 后是执行命令,初始化一个数据库集群
sudo su - postgres -c "initdb --locale en_US.UTF-8 -E UTF8 -D '/var/lib/postgres/data'"
  • --locale en_US.UTF-8:设置数据库的区域设置为 en_US.UTF-8,以支持 Unicode 字符集和本地化设置。
  • -E UTF8:指定数据库使用 UTF-8 字符编码。
  • -D '/var/lib/postgres/data':指定数据库集群的数据目录路径为 /var/lib/postgres/data,这是默认的数据目录位置。

修改用户密码:

# 默认没有密码
sudo -u postgres psql
# 使用 pgcli
pgcli -h localhost -U postgres 
# 设置密码
ALTER USER postgres WITH PASSWORD 'password';

创建新用户

# 创建用户(与使用用户同名)
CREATE USER fw WITH PASSWORD 'password';
# 这里也是
CREATE DATABASE fw;
# 授予用户连接所有数据库权限
ALTER USER fw CREATEDB;
# 指定可以连接某个数据库
GRANT ALL PRIVILEGES ON DATABASE fw TO fw;
# 授予新用户所有表上的权限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO fw;

修改可以远程连接

/etc/postgresql/<version>/main//var/lib/postgres/<version>/data/ 中找到 postgresql.conf 文件,将其中的 listen_addresses 改成 '*'

然后找到 pg_hda.conf 文件(该文件定义了哪些主机、数据库可以连接)最后加上:

host    all             all             0.0.0.0/0               md5

其中,可以指定除了 md5 以外的其它字段:

  • trust:无需进行身份验证即可接受连接。这种方法完全信任连接请求,不需要密码或其他身份验证。在生产环境中不建议使用,因为它会使数据库易受攻击。
  • reject:拒绝连接请求,无论是否提供了有效的凭据。这种方法可以用于显式地拒绝某些连接。
  • password:要求客户端提供密码以进行身份验证。与 md5 不同,password 不会对密码进行哈希处理,而是将明文密码与数据库中存储的密码进行比较。这种方法也不是最安全的选项,因为密码是以明文形式传输。
  • peer:仅适用于 UNIX/Linux 系统。使用该方法时,PostgreSQL 将使用操作系统用户身份进行身份验证。用户的操作系统用户名必须与 PostgreSQL 用户名相匹配。
  • ident:类似于 peer,但在某些系统上使用的是标识身份验证方法。
  • scram-sha-256:9.0 之后新增的更安全的连接方式

权限指令

# 查看用户的权限
SELECT * FROM pg_roles WHERE rolname = 'yourusername';

# 修改数据库拥有者
ALTER DATABASE feiwu OWNER TO feiwu;

常用的 Postgresql 工具

  • postgresql-contrib:附加的包,包含了一些扩展和工具以增强 PostgreSQL 的默认功能
  • pgcli:是一个用于 PostgreSQL 的命令行界面,提供了自动补全和语法高亮等功能

一键脚本

curl -sSL https://raw.githubusercontent.com/fwqaaq/scripts/main/shell/postgresql.sh | sudo bash

错误

进入 ~/.config/pgcli/config 改 keyring = False

No recommended backend was available. Install a recommended 3rd party backend package; or, install the keyrings.alt package if you want to use the non-recommended backends. See https://pypi.org/project/keyring for details.
To remove this message do one of the following:
- prepare keyring as described at: https://keyring.readthedocs.io/en/stable/
- uninstall keyring: pip uninstall keyring
- disable keyring in our configuration: add keyring = False to [main]

WSL

WSL 下 lldb 链接出错问题

参考:llvm/llvm-project#55575 (comment)

WSL 桥接

WSL 是基于 Hyper 的虚拟机,所以我们首先要在 windows 功能中勾选 Hyper-V 和「沙盒」功能。然后在为 WSL 虚拟交换机设置连接类型。

选择外部网络有两种连接类型,一种是 WIFI,另一种是直接通过 2.5G 网口。(我在设置之后按照以下教程进行桥接之后,即使设置了 VLAN,宿主机网络也不可用,只能使用另一种模式)

Screenshot 2023-08-08 at 1 22 41 AM

之后我们就要进入控制面板进行桥接:「控制面板\网络和 Internet\网络连接」(将宿主机的其中一个网络与 VEthernet 桥接,会得到一个网桥)

Screenshot 2023-08-08 at 1 25 47 AM

接着可以看参考的教程,你要进入 WSL 设置它们:(但是每次重新启动都会有不稳定的情况)

参考:https://develmonk.com/2021/06/05/easiest-wsl2-bridge-network-without-hyper-v-virtual-network-manager/?unapproved=7700&moderation-hash=8ce5aa9ad046b949997ba5cdecf413c4#comment-7700

开启 WSL 的 sshd:

sudo apt remove -y openssh-server
sudo apt install -y openssh-server
# 修改 sshd_config
sudo vim /etc/ssh/sshd_config
sudo service restart sshd_config

Linux 下的语言选项

终端的信息改成英文,而不是跟随系统为中文,可以在 .zshrc 等文件中追加以下内容:

export LANG=en_US.UTF-8
export LANGUAGE=en_US:en

Grub

调整 Linux Grub 顺序:

  1. 找到 /etc/default/grub 中的 GRUB_DEFAULT,将其修改为要启动的系统(0 -> 第一个)
  2. sudo update-grub

在 Arch Liunx 中使用 grub-mkconfig 更新

sudo grub-mkconfig -o /boot/grub/grub.cfg

抓包配置

抓其它设备的包

WireShark

在 WireShark 中有 Wi-Fi remote capture 以及 SSH remote capture,一个是抓 Wi-Fi 接口的包,一个是抓网卡的包,都是通过 SSH 连接到远程设备上,然后获取数据包。

最大的问题就是 tcpdump 的权限问题:

  1. 改 /etc/sudoers 文件,添加以下内容,并使用 :W! 强制保存:

    yourusername ALL=(ALL) NOPASSWD: /usr/sbin/tcpdump
  2. 也可以使用 capabilities(功能权限)分配特定的权限

    sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

抓取 iPhone 的包,需要使用到 rvictl 命令虚拟网口,得安装 xcode 工具之后才可以使用。参考

然后通过 Xcode 或者其他方式找到手机的 UDID:打开Xcode,在菜单栏找到Window,然后选择 Devices and Simulators,可以看到 iPhone 对应的 UDID(Identifier)。同时还要到设置中的隐私与安全中开启「开发者模式」。

rvictl -s UDID

遇到 1002 的错误,请参考 https://developer.apple.com/documentation/network/recording_a_packet_trace/troubleshooting_packet_traces。重启即可。

然后就可以使用 WireShark 抓包 rvi0。

Charles

在设置 SSL 证书的时候,下载之后一定要信任证书,并且在 Proxy 代理中设置 SSL Proxying Settings,添加需要抓包的域名,否则抓不到包,或者 Location 为 *:*

在为 iOS 设备抓包的时候,需要在 iOS 设备上安装证书,具体操作如下:

  1. 在电脑端打开 Charles,选择 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser
  2. 在 iOS 设备上打开 http://chls.pro/ssl,下载证书
  3. 会在「设置」里出现「Profile Download」的提示,点击安装
  4. 在「通用」->「关于本机」->「证书信任设置」中信任证书

Note

这个自签的证书也不要过期。

DNS

curl -v https://www.google.com
* Could not resolve host: www.google.com

出现这种情况一般是 DNS 未能解析,Linux 下改 /etc/resolv.conf 配置文件到 nameserver 1.1.1.1,DNS 服务器自拟。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment