Home avatar

Lixp 的 Blog

Linux蓝牙连接

使用 bluetoothctl 进入蓝牙交互界面

  • scan on / scan off 开始和停止扫描
  • pair XX:XX:XX:XX:XX:XX 发起配对, 如果设备有确认码, 终端会提示你输入 yes 来确认
  • trust XX:XX:XX:XX:XX:XX 信任设备, 下次断开后自动连接
  • connect XX:XX:XX:XX:XX:XX 建立连接
  • disconnect XX:XX:XX:XX:XX:XX 断开当前连接,但保留配对信息
  • remove XX:XX:XX:XX:XX:XX 删除配对信息

执行命令:

Linux创建普通用户并禁止密码登录

#!/bin/bash

# 检查是否以 root 权限运行
if [[ $EUID -ne 0 ]]; then
   echo "请使用 root 权限运行此脚本 (sudo ./script.sh)"
   exit 1
fi

# --- 配置变量 ---
read -p "请输入要创建的用户名: " USERNAME
read -s -p "请输入该用户的密码: " PASSWORD
echo
read -p "请粘贴该用户的 SSH Public Key (以 ssh-rsa 开头): " SSH_KEY


# 1. 创建用户并设置密码
if id "$USERNAME" &>/dev/null; then
    echo "用户 $USERNAME 已存在,跳过创建。"
else
    useradd -m -s /bin/bash "$USERNAME"
    echo "$USERNAME:$PASSWORD" | chpasswd
    echo "用户 $USERNAME 创建成功。"
fi

# 2. 配置 sudo 权限
echo "$USERNAME ALL=(ALL) ALL" > "/etc/sudoers.d/$USERNAME"
chmod 440 "/etc/sudoers.d/$USERNAME"

# 3. 配置 SSH 密钥
USER_HOME=$(eval echo ~$USERNAME)
mkdir -p "$USER_HOME/.ssh"
echo "$SSH_KEY" > "$USER_HOME/.ssh/authorized_keys"
chown -R "$USERNAME:$USERNAME" "$USER_HOME/.ssh"
chmod 700 "$USER_HOME/.ssh"
chmod 600 "$USER_HOME/.ssh/authorized_keys"

# 4. 修改 SSH 服务配置以禁用密码登录 (仅针对该用户或全局)
# 注意:这里我们通过 Match 指令实现对该特定用户强制使用 Key 登录
# 如果你想全局禁用密码登录,请告知我。
SSH_CONF="/etc/ssh/sshd_config"

if ! grep -q "Match User $USERNAME" "$SSH_CONF"; then
    cat <<EOF >> "$SSH_CONF"

# 强制 $USERNAME 用户只能通过 Key 登录
Match User $USERNAME
    PasswordAuthentication no
    AuthenticationMethods publickey
EOF
    echo "SSH 配置已更新:用户 $USERNAME 只能通过密钥登录。"
else
    echo "SSH 配置中已存在该用户的限制规则。"
fi

# 重启 SSH 服务使配置生效
systemctl daemon-reload
systemctl restart ssh.socket || systemctl restart ssh

echo "-----------------------------------"
echo "设置完成!"
echo "用户: $USERNAME"
echo "权限: 已加入 sudoers"
echo "验证方式: 仅限 SSH Key (密码登录已被禁用)"
echo "-----------------------------------"

Linux的网页驱动权限问题

Linux 下一些可以用网页驱动的设备在网页中会无法识别, 主要是权限问题, 如下:

❯ ls -l /dev/hidraw*
crw------- 1 root root 243,  0  1月21日 19:54 /dev/hidraw0
crw------- 1 root root 243,  1  1月21日 19:54 /dev/hidraw1
crw------- 1 root root 243, 10  1月21日 19:54 /dev/hidraw10
crw------- 1 root root 243,  2  1月21日 19:54 /dev/hidraw2
crw------- 1 root root 243,  3  1月21日 19:54 /dev/hidraw3
crw------- 1 root root 243,  4  1月21日 20:01 /dev/hidraw4
crw------- 1 root root 243,  5  1月21日 20:01 /dev/hidraw5
crw------- 1 root root 243,  6  1月21日 20:01 /dev/hidraw6
crw------- 1 root root 243,  7  1月21日 19:54 /dev/hidraw7
crw------- 1 root root 243,  8  1月21日 19:54 /dev/hidraw8
crw------- 1 root root 243,  9  1月21日 19:54 /dev/hidraw9
❯ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0cf2:7750 ENE Technology, Inc. 6K7750
Bus 001 Device 003: ID 373b:1178 PIXART Nano 8K Dongle
Bus 001 Device 004: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 006: ID 1532:00b2 Razer USA, Ltd Razer DeathAdder V3
Bus 001 Device 007: ID 2717:5086 Xiaomi Inc. Redmi 电脑音箱
Bus 001 Device 010: ID 373b:111e HFD ATK A87Pro
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

可以看到所有设备都是无法被普通用户读写的, 普通用户启动的浏览器自然也无法对设备读写, 要解决这个问题可以直接 chmod , 但这种方式重启后就无效了, 并且这种方式也不太规范, 标准的做法是建立 udev 规则来允许用户读写设备.

Ghostty冷启动优化

相比于 Alacritty, Ghostty 虽然功能更多但是冷启动速度更慢, 要加快冷启动速度, 官方文档提到可以使在图形界面登录时就启动 Ghostty.

使用以下命令将 Ghostty 服务添加到用户服务中:

Markdown代码块的标示

实际内容代码块语言标识
~/.ssh/configssh-config
/etc/environmentbash or env
pacman相关配置conf or ini
命令行输出console
~/.config/environment.d/10-wayland.confconf
一般的配置文件conf

gitignore白名单写法

.gitignore 写入配置如下:

# 白名单模式 .gitignore 规则

# 忽略所有内容并允许追踪子目录内容
*
!*/

# README 和 gitignore 加入白名单
!/.gitignore
!README*

具体原理为: 首先使用 * 先忽略全部文件与目录, 然后使用 !*/ 允许 Git 追踪子目录结构, 然后就可以用 ! + 文件名来加入需要 Git 追踪的文件.

Linux 下 Btrfs 文件系统快照

常用快照组件有 TimeShift 和 Snapper .

TimeShift 是 Ubuntu 常用的快照软件, 使用以下命令安装

yay -S timeshift

之后可以启动 timeshift 在 GUI 界面进行详细配置, 之后安装 timeshift-autosnap 实现更新前自动备份.

Zsh 安装配置

Arch Linux 主流选择有 Fish 和 Zsh, Fish 开箱即用但是不兼容 Bash, 配置为系统默认 Shell 会有很多问题, Zsh 兼容 Bash, 可以作为系统默认 Shell, 但是配置比较复杂并且启动速度不如 Fish.

首先安装 Zsh 本体:

双系统更改 Grub 启动顺序

如果使用了 Timeshift 或者 Snapper 的快照功能, 安装 grub-btrfs 实现在 Grub 界面直接从快照启动, 这样在系统挂掉后可以从快照启动进入系统而不需要 LiveCD .

yay -S grub-btrfs

/etc/grub.d/可以查看引导生成脚本, 决定 Grub 引导顺序, 修改它们就可以修改 Grub 界面的启动顺序, 内容如下: