Files
fnshell/install_pubkey_fnos.sh

45 lines
1.2 KiB
Bash
Raw Normal View History

2025-12-24 12:42:53 +08:00
#!/bin/sh
set -e
# ======================================================
# 飞牛 NAS 安装公钥 & 修复权限 & 添加 sudo NOPASSWD避免重复
# ======================================================
USER_NAME="$1"
PUB_KEY_PATH="$2"
if [ -z "$USER_NAME" ] || [ -z "$PUB_KEY_PATH" ]; then
echo "用法: $0 <用户名> <公钥文件路径>"
exit 1
fi
HOME_DIR="/home/$USER_NAME"
SSH_DIR="$HOME_DIR/.ssh"
AUTH_KEYS="$SSH_DIR/authorized_keys"
# ===== 安装公钥 =====
mkdir -p "$SSH_DIR"
cp -f "$PUB_KEY_PATH" "$AUTH_KEYS"
# 修复权限
chown "$USER_NAME" "$HOME_DIR" "$SSH_DIR" "$AUTH_KEYS"
chmod 700 "$SSH_DIR"
chmod 600 "$AUTH_KEYS"
echo "✅ 公钥已安装并权限修复完成"
# ===== 配置 sudoers NOPASSWD =====
SUDO_FILE="/etc/sudoers.d/${USER_NAME}_poweroff"
SUDO_RULE="$USER_NAME ALL=(root) NOPASSWD:/usr/bin/systemctl poweroff"
# 如果文件不存在或者文件内容不同,则写入
if [ ! -f "$SUDO_FILE" ] || ! grep -Fxq "$SUDO_RULE" "$SUDO_FILE"; then
echo "$SUDO_RULE" > "$SUDO_FILE"
chmod 440 "$SUDO_FILE"
echo "✅ sudoers 已添加 NOPASSWD 规则 ($SUDO_FILE)"
else
echo "⚠️ sudoers NOPASSWD 规则已存在,无需重复添加"
fi
echo "可以测试: ssh $USER_NAME@NAS_IP 'sudo -n /usr/bin/systemctl poweroff'"