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
这里我使用的是 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-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]
参考:llvm/llvm-project#55575 (comment)
WSL 是基于 Hyper 的虚拟机,所以我们首先要在 windows 功能中勾选 Hyper-V 和「沙盒」功能。然后在为 WSL 虚拟交换机设置连接类型。
选择外部网络有两种连接类型,一种是 WIFI,另一种是直接通过 2.5G 网口。(我在设置之后按照以下教程进行桥接之后,即使设置了 VLAN,宿主机网络也不可用,只能使用另一种模式)
之后我们就要进入控制面板进行桥接:「控制面板\网络和 Internet\网络连接」(将宿主机的其中一个网络与 VEthernet 桥接,会得到一个网桥)
接着可以看参考的教程,你要进入 WSL 设置它们:(但是每次重新启动都会有不稳定的情况)
开启 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
终端的信息改成英文,而不是跟随系统为中文,可以在 .zshrc 等文件中追加以下内容:
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
调整 Linux Grub 顺序:
- 找到 /etc/default/grub 中的
GRUB_DEFAULT
,将其修改为要启动的系统(0 -> 第一个) - sudo update-grub
在 Arch Liunx 中使用 grub-mkconfig 更新
sudo grub-mkconfig -o /boot/grub/grub.cfg
在 WireShark 中有 Wi-Fi remote capture 以及 SSH remote capture,一个是抓 Wi-Fi 接口的包,一个是抓网卡的包,都是通过 SSH 连接到远程设备上,然后获取数据包。
最大的问题就是 tcpdump 的权限问题:
-
改 /etc/sudoers 文件,添加以下内容,并使用
:W!
强制保存:yourusername ALL=(ALL) NOPASSWD: /usr/sbin/tcpdump
-
也可以使用 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。
在设置 SSL 证书的时候,下载之后一定要信任证书,并且在 Proxy 代理中设置 SSL Proxying Settings,添加需要抓包的域名,否则抓不到包,或者 Location 为
*:*
。
在为 iOS 设备抓包的时候,需要在 iOS 设备上安装证书,具体操作如下:
- 在电脑端打开 Charles,选择 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser
- 在 iOS 设备上打开
http://chls.pro/ssl
,下载证书 - 会在「设置」里出现「Profile Download」的提示,点击安装
- 在「通用」->「关于本机」->「证书信任设置」中信任证书
Note
这个自签的证书也不要过期。
curl -v https://www.google.com
* Could not resolve host: www.google.com
出现这种情况一般是 DNS 未能解析,Linux 下改 /etc/resolv.conf
配置文件到 nameserver 1.1.1.1
,DNS 服务器自拟。