#!/bin/bash # 需要创建的用户数量 USER_COUNT=10 PUBLIC_DIR="/shared" # 预安装软件 pre_install(){ sudo apt install -y xfce4 xfce4-goodies sudo apt install -y tigervnc-standalone-server tigervnc-common sudo apt install -y git python3 openssl } # 开放防火墙 open_firewall(){ # 开放防火墙端口(根据实际安全策略调整) sudo ufw allow 6080/tcp # noVNC 主端口 sudo ufw allow 6081/tcp # 用户2 sudo ufw allow 6082/tcp # 用户3 # 注意:VNC原生端口(5901等)不需要开放,因为noVNC作为代理不直接暴露它们 } # 批量创建用户 batch_create_user(){ # 批量创建用户 user1 到 user100 for i in $(seq 1 $USER_COUNT); do username="user$i" # 创建用户 sudo useradd -m -s /bin/bash "$username" # 设置默认密码(与用户名相同,建议后续让用户自行修改) echo "$username:$username" | sudo chpasswd echo "用户 $username 创建完成,密码: $username" done echo "所有用户创建完成!" } # 批量删除用户 batch_delete_user(){ for i in $(seq 1 $USER_COUNT); do username="user$i" sudo userdel -r "$username" 2>/dev/null if [ $? -eq 0 ]; then echo "已删除用户: $username" else echo "用户 $username 不存在,跳过" fi done echo "批量删除完成!" } # 批量设置vnc密码 batch_set_vncpdw(){ for i in $(seq 1 $USER_COUNT); do username="user$i" # 使用 -c 参数直接执行命令,避免 heredoc 变量问题 sudo su - "$username" -c "mkdir -p ~/.vnc && echo '$username' | vncpasswd -f > ~/.vnc/passwd && chmod 600 ~/.vnc/passwd" echo "正在设置 $username 的VNC密码 " done echo "所有VNC密码设置完成!" } # 创建公共目录 cerate_public_dir(){ # 创建目录 sudo mkdir -p "$PUBLIC_DIR" # 设置权限:所有用户可读、可写、可执行 sudo chmod 777 "$PUBLIC_DIR" # 设置粘滞位(用户只能删除自己的文件) sudo chmod +t "$PUBLIC_DIR" # 设置所有者 sudo chown root:root "$PUBLIC_DIR" echo "公共文件夹已创建: $PUBLIC_DIR" echo "权限: $(ls -ld $PUBLIC_DIR)" } # 在每个用户home目录创建软连接 create_shortcut_for_users(){ for i in $(seq 1 $USER_COUNT); do username="user$i" # 在用户家目录创建软链接 sudo su - "$username" -c "ln -sf $PUBLIC_DIR ~/workspace" echo "正在创建快捷方式 $username" done } install_vnc_server(){ cd $PUBLIC_DIR sudo git clone https://github.com/novnc/noVNC.git sudo git clone https://github.com/novnc/websockify.git } create_ssl_cert(){ cd $PUBLIC_DIR/noVNC sudo openssl req -new -x509 -days 365 -nodes \ -out self.pem \ -keyout self.pem \ -subj "/C=CN/ST=Beijing/L=Beijing/O=Test/CN=localhost" } # batch_create_user # batch_set_vncpdw # cerate_public_dir # create_shortcut_for_users # install_vnc_server create_ssl_cert # batch_delete_user