67291a9a50
Introduce ff script -h with auto descriptions, shared help.sh, and usage flags across script/*.sh. Co-authored-by: Cursor <cursoragent@cursor.com>
119 lines
3.3 KiB
Bash
119 lines
3.3 KiB
Bash
#!/bin/bash
|
|
|
|
# 初始化默认用户脚本:创建 ace 用户并给予 sudo 权限
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
# shellcheck disable=SC1091
|
|
source "$SCRIPT_DIR/common/help.sh"
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
用法: sudo init-default-user
|
|
|
|
创建用户 ace(若不存在),设置密码,加入 sudo 组,
|
|
并复制 ~/.dotfile 到该用户家目录。
|
|
|
|
选项:
|
|
-h, --help 显示此帮助
|
|
EOF
|
|
}
|
|
|
|
dotfile_help_requested "${1:-}" && dotfile_show_help
|
|
|
|
set -e
|
|
|
|
# 检查是否以 root 身份运行
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "错误:此脚本必须以 root 身份运行"
|
|
echo "请使用: sudo $0"
|
|
exit 1
|
|
fi
|
|
|
|
USERNAME="ace"
|
|
|
|
echo "开始创建用户 $USERNAME..."
|
|
|
|
# 检查用户是否已存在
|
|
if id "$USERNAME" &>/dev/null; then
|
|
echo "用户 $USERNAME 已存在"
|
|
else
|
|
# 创建用户
|
|
useradd -m -s /bin/bash "$USERNAME"
|
|
echo "用户 $USERNAME 创建成功"
|
|
|
|
# 设置用户密码
|
|
echo "请为用户 $USERNAME 设置密码:"
|
|
echo "正在打开密码设置界面..."
|
|
|
|
# 确保在交互式终端中执行 passwd 命令
|
|
if [ -t 0 ] && [ -t 1 ]; then
|
|
# 标准输入和输出都是终端
|
|
echo "请输入新密码(输入时不会显示字符):"
|
|
if passwd "$USERNAME"; then
|
|
echo "密码设置成功"
|
|
else
|
|
echo "密码设置失败,请稍后手动设置"
|
|
echo "使用命令: sudo passwd $USERNAME"
|
|
fi
|
|
else
|
|
# 非交互式环境,提供替代方案
|
|
echo "检测到非交互式环境,无法直接设置密码"
|
|
echo "请在脚本运行完成后手动设置密码:"
|
|
echo " sudo passwd $USERNAME"
|
|
echo ""
|
|
echo "注意:用户在设置密码之前无法登录"
|
|
echo ""
|
|
read -p "按回车键继续..." -r 2>/dev/null || true
|
|
fi
|
|
fi
|
|
|
|
# 检查 sudo 组是否存在
|
|
if ! getent group sudo &>/dev/null; then
|
|
echo "警告:sudo 组不存在,尝试创建..."
|
|
groupadd sudo
|
|
fi
|
|
|
|
# 将用户添加到 sudo 组
|
|
usermod -aG sudo "$USERNAME"
|
|
echo "用户 $USERNAME 已添加到 sudo 组"
|
|
|
|
# 检查 /etc/sudoers 文件中的 sudo 组配置
|
|
if ! grep -q "^%sudo" /etc/sudoers; then
|
|
echo "配置 sudoers 文件..."
|
|
echo "%sudo ALL=(ALL:ALL) ALL" >> /etc/sudoers
|
|
echo "sudoers 配置已更新"
|
|
fi
|
|
|
|
# 验证用户创建和 sudo 权限
|
|
echo ""
|
|
echo "验证用户信息:"
|
|
echo "用户 ID: $(id $USERNAME)"
|
|
echo "用户组: $(groups $USERNAME)"
|
|
|
|
# 创建用户家目录的基本配置
|
|
USER_HOME="/home/$USERNAME"
|
|
if [ -d "$USER_HOME" ]; then
|
|
# 设置正确的目录权限
|
|
chown -R "$USERNAME:$USERNAME" "$USER_HOME"
|
|
chmod 755 "$USER_HOME"
|
|
|
|
# 创建基本的 .bashrc 文件(如果不存在)
|
|
if [ ! -f "$USER_HOME/.bashrc" ]; then
|
|
cp /etc/skel/.bashrc "$USER_HOME/.bashrc" 2>/dev/null || true
|
|
chown "$USERNAME:$USERNAME" "$USER_HOME/.bashrc"
|
|
fi
|
|
|
|
echo "用户家目录配置完成"
|
|
fi
|
|
|
|
cp -r $HOME/.dotfile /home/$USERNAME/.dotfile
|
|
|
|
echo ""
|
|
echo "✅ 用户 $USERNAME 创建完成并已获得 sudo 权限"
|
|
echo "💡 提示:"
|
|
echo " - 用户可以使用 'sudo' 命令执行管理员操作"
|
|
echo " - 首次使用 sudo 时需要输入用户密码"
|
|
echo " - 可以使用 'su - $USERNAME' 切换到该用户"
|
|
echo ""
|
|
echo "脚本执行完成!"
|