Home avatar

Lixp 的 Blog

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 "-----------------------------------"

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

Zsh 安装配置

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

首先安装 Zsh 本体:

双系统更改 Grub 启动顺序

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