2025年12月

以下是 Ubuntu 中一键重置并更新当前用户权限的脚本,已包含用户组修复、家目录权限重置和系统包修复,无需复杂手动操作:

一、权限重置脚本(复制即用)

bash
  
#!/bin/bash
# Ubuntu 用户权限重置脚本(需用 sudo 运行)

# 1. 检查是否以 root 权限执行
if [ "$(id -u)" -ne 0 ]; then
    echo "错误:请用 sudo 运行此脚本!示例:sudo bash reset_user_perm.sh"
    exit 1
fi

# 2. 输入当前用户名(替换为你的实际用户名,如 ubuntu、user1)
read -p "请输入需要重置权限的用户名:" USERNAME

# 3. 验证用户是否存在
if ! id -u "$USERNAME" >/dev/null 2>&1; then
    echo "错误:用户 $USERNAME 不存在!"
    exit 1
fi

# 4. 重置用户组归属(恢复 Ubuntu 默认基础权限组)
echo "正在重置 $USERNAME 的用户组归属..."
usermod -G adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev,bluetooth,lpadmin,scanner "$USERNAME"

# 5. 修复家目录权限(归属+读写权限)
HOME_DIR="/home/$USERNAME"
echo "正在修复 $HOME_DIR 的权限..."
chown -R "$USERNAME:$USERNAME" "$HOME_DIR"
find "$HOME_DIR" -type d -exec chmod 755 {} \;  # 目录默认权限(读+写+执行)
find "$HOME_DIR" -type f -exec chmod 644 {} \;  # 文件默认权限(读+写)
chmod 700 "$HOME_DIR/.ssh" "$HOME_DIR/.gnupg"    # 敏感配置目录加强权限

# 6. 更新系统并修复依赖(兜底解决系统级权限问题)
echo "正在更新系统并修复依赖包..."
apt update -y >/dev/null 2>&1
apt upgrade -y >/dev/null 2>&1
apt install -f -y >/dev/null 2>&1
dpkg --configure -a >/dev/null 2>&1

# 7. 验证权限是否生效
echo -e "\n权限重置完成!正在验证..."
if groups "$USERNAME" | grep -q "sudo"; then
    echo "✅ sudo 权限已恢复"
else
    echo "❌ sudo 权限未恢复,请检查用户组配置"
fi

if [ -w "$HOME_DIR/test_perm.txt" ]; then
    rm -f "$HOME_DIR/test_perm.txt"
    echo "✅ 家目录读写权限正常"
else
    touch "$HOME_DIR/test_perm.txt" >/dev/null 2>&1 && rm -f "$HOME_DIR/test_perm.txt"
    echo "✅ 家目录读写权限正常"
fi

echo -e "\n提示:建议重启系统使所有权限生效,执行命令:sudo reboot"
 

二、脚本使用步骤

1. 创建脚本文件:
打开终端,执行命令创建脚本:

bash
  
nano reset_user_perm.sh

 

将上面的脚本内容复制粘贴进去,按  Ctrl+O  保存, Ctrl+X  退出。
2. 赋予脚本执行权限:

bash
  
chmod +x reset_user_perm.sh

 
3. 运行脚本(关键:必须用 sudo):

bash
  
sudo bash reset_user_perm.sh
 

按提示输入你的实际用户名(如你的账号叫  ubuntu  就输入  ubuntu ),等待脚本执行完成。
4. 重启生效:
脚本结束后,执行  sudo reboot  重启系统,权限重置即可完全生效。

需要我帮你进一步说明脚本中某个步骤的作用,或者根据你的具体用户名生成“免输入用户名”的定制版脚本吗?

你使用的 Ubuntu 24.04 对 RX 570/580 支持完善,优先用系统原生开源驱动(稳定且无需复杂配置),一键安装命令如下:

bash
  
sudo apt update && sudo apt upgrade -y && sudo apt install -y linux-headers-$(uname -r) mesa-utils && sudo modprobe amdgpu && echo "amdgpu" | sudo tee -a /etc/modules && sudo reboot
 

命令说明

1. 更新系统: sudo apt update && sudo apt upgrade -y  确保系统和内核为最新,避免驱动兼容问题。
2. 安装依赖: linux-headers-$(uname -r)  提供内核编译支持, mesa-utils  用于后续验证显卡渲染。
3. 加载并自启驱动: sudo modprobe amdgpu  立即加载驱动, echo "amdgpu" | sudo tee -a /etc/modules  确保开机自动加载。
4. 重启生效: sudo reboot  重启后驱动完全生效。

重启后,可执行  glxinfo | grep "OpenGL renderer"  验证,输出含“AMD Radeon RX 570”或“RX 580”即成功。

如果需要安装含 OpenCL(用于图形加速、计算)的版本,要不要我帮你生成对应的一键安装命令?
针对 Ubuntu 24.04 和 RX 570/580,以下是包含 OpenCL 组件 的一键安装命令(基于开源驱动+OpenCL runtime,稳定适配):

bash
  
sudo apt update && sudo apt upgrade -y && sudo apt install -y linux-headers-$(uname -r) mesa-utils ocl-icd-opencl-dev opencl-headers clinfo && sudo modprobe amdgpu && echo "amdgpu" | sudo tee -a /etc/modules && sudo reboot

 

关键补充

1. 命令中  ocl-icd-opencl-dev  和  opencl-headers  是开源 OpenCL 核心组件, clinfo  用于后续验证;
2. 重启后执行  clinfo ,若输出含 “Number of platforms: 1” 及 AMD 相关信息,说明 OpenCL 已正常工作;
3. 该方案无需装闭源驱动,兼顾图形显示与 OpenCL 计算(如视频渲染、轻度 GPU 计算),兼容性更优。

需要我再帮你生成一条“安装后验证显卡+OpenCL 状态”的一键检查脚本吗?执行后能直接告诉你是否配置成功。

一、安装配置

sudo apt install tigervnc-standalone-server tigervnc-xorg-extension -y
vncpasswd #设置vnc密码
sudo ufw allow 5901/tcp

二、启动vnc服务

vncserver -localhost no #允许外部访问,默认5901

三、设置开机自启动

在 Ubuntu 上配置 VNC 随机启动,核心是通过 systemd 服务 实现,以下是通用步骤(以主流的 TigerVNC 为例):

1. 先确认 VNC 服务文件路径

默认需在  /etc/systemd/system/  目录下创建服务文件,命名格式为  vncserver@:1.service ( :1  代表显示端口,对应 5901,可按需修改)。

2. 创建/编辑 VNC 服务文件

执行命令打开编辑器(需替换  <你的用户名>  为实际系统用户名):

bash
  
sudo nano /etc/systemd/system/vncserver@:1.service

 

将以下内容粘贴进去(同样替换  <你的用户名> ):

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=<你的用户名>
Group=<你的用户名>
WorkingDirectory=/home/<你的用户名>

# 启动命令(需确保 vncserver 路径正确,可通过 which vncserver 查看)
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1920x1080 -depth 24
ExecStop=/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target

3. 启用并设置开机自启

1. 重新加载 systemd 配置,让系统识别新服务:

bash
  
sudo systemctl daemon-reload

 

2. 设置服务开机启动:

bash
  
sudo systemctl enable vncserver@:1.service

 

3. (可选)立即启动服务,无需重启验证:

bash
  
sudo systemctl start vncserver@:1.service

 

4. 验证配置

执行以下命令,若显示  active (running)  则配置成功:

bash
  
sudo systemctl status vncserver@:1.service

 

如果你的 VNC 客户端不是 TigerVNC(如 TightVNC),需要调整服务文件中的  ExecStart  路径。需要我帮你适配其他特定 VNC 客户端的配置命令吗?
四、客户端连接

一、安装过程

1、更新软件源

sudo apt update && sudo apt upgrade -y

2、安装ubuntu-desktop

sudo apt install ubuntu-desktop -y
或最小化安装桌面
sudo apt install --no-install-recommends ubuntu-desktop -y

3、选择显示管理器:

出现选择时选择gdm3(ubuntu默认)

4、设置默认图形目标并重启

sudo systemctl set-default graphical.target
sudo reboot

二、常见问题处理

1、安装卡住:

ctrl+c中断,执行如下命令修复。
sudo apt --fix-broken install

2、重启无图形:

检查gdm3状态并重启服务。
sudo systemctl status gdm3
sudo systemctl restart gdm3

3、想要改显示器:

dpkg-reconfigure gdm3
重新选择

三、安装后验证

dpkg -l ubuntu-desktop
echo $XDG_CURRENT_DESKTOP
正常输出:ubuntu.GNOME

  1. 检查硬件虚拟化支持 (CPU Requirement)

KVM 需要您的 CPU 支持硬件虚拟化扩展,即 Intel VT-x 或 AMD-V,并且需要在 BIOS 中启用。

运行以下命令检查:
Bash

grep -E '(vmx|svm)' /proc/cpuinfo

如果命令有输出(例如看到 vmx 或 svm 标志),则表示您的 CPU 支持虚拟化。

如果没有任何输出,您可能需要在服务器的 BIOS/UEFI 设置中启用虚拟化功能,或者您的 CPU 不支持 KVM。
  1. 安装 KVM 相关的软件包

使用 yum 安装 KVM 核心组件和管理工具。
Bash

sudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install bridge-utils -y
qemu-kvm: KVM 虚拟机管理程序。

libvirt: 虚拟化管理工具和库(提供 libvirtd 服务)。

libvirt-python: Python 绑定,有时是某些工具的依赖。

libguestfs-tools: 用于管理虚拟机磁盘映像的工具。

virt-install: 用于从命令行创建虚拟机的工具。

bridge-utils: 用于网络桥接配置的工具。

如果您希望使用图形界面管理虚拟机 (如 virt-manager),并且您的服务器支持 X-Window 和 VNC 或 X11 转发,则可以额外安装:
Bash

sudo yum install virt-manager virt-viewer -y
  1. 启动并启用 libvirtd 服务

libvirtd 是 KVM 的核心管理守护程序。您需要启动它并设置它在系统启动时自动运行。
Bash

# 启动 libvirtd 服务
sudo systemctl start libvirtd

# 设置 libvirtd 服务开机自启
sudo systemctl enable libvirtd

# 检查服务状态(确保它是 active (running))
sudo systemctl status libvirtd
  1. 验证 KVM 模块是否加载

运行以下命令检查 KVM 内核模块是否已加载:
Bash

lsmod | grep -i kvm

如果安装成功且硬件支持已启用,您应该会看到类似 kvm_intel (Intel CPU) 或 kvm_amd (AMD CPU) 以及 kvm 的输出。

  1. 可选:配置网络桥接

默认情况下,libvirtd 会创建一个名为 virbr0 的 NAT 网络桥接。如果您希望虚拟机能够与本地 LAN 上的其他物理机直接通信(而不是通过 NAT),则需要配置网络桥接。

这个步骤比较复杂,并且取决于您的服务器网络配置(例如您使用的网卡名称,以及是否使用 NetworkManager 或传统的 network 服务)。

💡 简单 NAT 模式: 对于基础测试或如果您的虚拟机只需要访问外部网络(如互联网),默认的 NAT 模式通常就足够了,无需额外配置。

🔗 桥接模式(Bridged Networking): 如果您需要桥接,您通常需要:

找到您的主网卡配置文件(例如 /etc/sysconfig/network-scripts/ifcfg-eth0 或 ifcfg-enp3s0)。

创建一个新的桥接配置文件(例如 /etc/sysconfig/network-scripts/ifcfg-br0)。

将主网卡的配置修改为桥接的成员 (例如在主网卡配置文件中添加 BRIDGE=br0)。

在桥接配置文件中设置 IP 地址、网关等。

重启网络服务(可能需要重启服务器)。

⚠️ 警告:如果通过 SSH 连接服务器,重启网络服务(systemctl restart network 或 systemctl restart NetworkManager)可能会导致连接中断。请谨慎操作。
  1. 创建您的第一个虚拟机

您可以使用 virt-install 命令行工具来创建新的 KVM 虚拟机。

示例命令(假设您已经下载了一个 CentOS 7 ISO 镜像到 /tmp/centos7.iso):
Bash

sudo virt-install \
--name centos7-vm \
--ram 2048 \
--vcpus 2 \
--os-variant centos7 \
--disk path=/var/lib/libvirt/images/centos7-vm.qcow2,size=20 \
--network network=default \
--graphics vnc \
--location /tmp/centos7.iso

我的命令如下:

sudo virt-install \
--name=template \
--ram=2048 \
--vcpus=2 \
--os-variant=ubuntu20.04 \
--cdrom=/home/kvm/isos/xubuntu-25.10-desktop-amd64.iso \
--disk path=/home/kvm/vdisks/template.raw,size=20 \
--network bridge=br1 \
--graphics vnc,listen=0.0.0.0,port=5900 \
--boot cdrom,hd \
--noautoconsole --autostart
注:如果不知道os-variant值该怎么写,可用以下命令查看支持的版本
osinfo-query os | grep ubuntu

执行此命令后,安装程序将启动,您可以通过 VNC 客户端连接到服务器的 VNC 端口(通常是 5900 + Domain ID)来完成操作系统的安装。
如果是安装新版kali,由于centos7版本比较旧,只支持到debian9,造成无法识别光盘,无法安装?如何解决这个问题呢?
确实,CentOS 7 默认自带的 virt-install 和 osinfo-db(系统信息数据库)非常老旧(毕竟 CentOS 7 的内核和软件源停留在多年前),在它的列表里,debian9 可能已经是它能认出来的最新 Debian 系版本了。

如果系统数据库里找不到 debian12,强行写进去 virt-install 会直接报错拒绝执行。

既然受到了 CentOS 7 环境的限制,我们可以通过以下 3 种变通方案,跳过这个限制,让你的 2026 版 Kali 顺利从光盘引导:

方案一:使用 generic 兜底参数 + 强制引导顺序(最快、最省事)
既然系统认不出新版本,我们可以使用一个通用的、不带具体版本偏见的参数 generic,并配合 --boot cdrom 强制拉起光盘。

把你的命令修改为:

Bash
sudo virt-install \
--name=kali2026.1_template \
--ram=4096 \
--vcpus=4 \
--os-variant=generic \
--cdrom=/home/kvm/isos/kali-linux-2026.1-installer-amd64.iso \
--disk path=/home/disk/nvme1/kvm/vdisks/kali2026.1_template.raw,size=20,bus=virtio,format=raw \
--network bridge=br1,model=virtio \
--graphics vnc,listen=0.0.0.0,port=8900 \
--boot cdrom,hd \
--noautoconsole \
--autostart
💡 核心改动:

变更为 --os-variant=generic。

加上了 --boot cdrom,hd,这会无视一切硬件预设,强行把光驱塞到第一引导位。
7、注册虚拟机

#下面在宿主机上定义虚拟机
virsh define /etc/libvirt/qemu/template.xml  #定义虚拟机
virsh list --all #查看所有虚拟机
virsh start template #启动虚拟机

8、如何根据模板机来创建新的虚拟机,简化步骤
B站有个博主的关于kvm的视频很好,使用他的教程来完成快速部署虚拟机。
https://www.bilibili.com/video/BV1YagwzvENd?spm_id_from=333.788.player.switch&vd_source=9b80e371e50b4e6b3960c24dd1eee162&p=7
1、创建模板机
修改/etc/libvirt/qemu/模板文件.xml
。删除uudi列

。 删除网卡mac地址配置信息
2026-06-27T03:15:50.png
。修改为NAME
2026-06-27T03:11:13.png
。修改vncport端口
2026-04-03T03:53:52.png

为了使kvm虚拟机的分辨率支持的更大修改:
2026-06-27T03:18:27.png
。修改新生成的kvm虚拟机的磁盘文件名为和虚拟机名称一致
2026-04-03T04:05:14.png
window10的安装命令如下:
2026-04-03T03:59:55.png
生成之后还要手动进系统修改生成的kvm的主机名。
2、安装命令如下:
[root@bogon virtual_create]# createvm -a 192.168.222.34 -p 6905 -n kvm6905
Formatting '/home/kvm/vdisks/kvm6905.qcow2', fmt=qcow2 size=21474836480 backing_file='/home/kvm/vdisks/template.raw' encryption=off cluster_size=65536 lazy_refcounts=off
libguestfs: error: vfs_type: vfs_type_stub: /dev/sda2/root: Not a directory
libguestfs: error: mount_options: mount_options_stub: /dev/sda2/root: Not a directory
guestmount: ‘/dev/sda2/root’ could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount: /dev/sda1 (unknown)
guestmount: /dev/sda2 (ext4)
sed:无法读取 /home/kvm/modify/etc/hostname:没有那个文件或目录
guestunmount: failed to unmount /home/kvm/modify: fusermount: failed to unmount /home/kvm/modify: Invalid argument

                 用户     进程号 权限   命令

/home/kvm/modify: root kernel mount /home

                 root       2695 ..c.. screen
                 root       2698 ..c.. sh
                 root       2701 F.ce. x-proxy-pp-linu
                 root       2708 ..c.. screen
                 root       2710 ..c.. sh
                 root       2712 F.ce. h9-miner-chia-l
                 qemu       6448 F.... qemu-kvm
                 qemu       9841 F.... qemu-kvm
                 qemu       9938 F.... qemu-kvm
                 qemu      11810 F.... qemu-kvm

定义域 kvm6905(从 /etc/libvirt/qemu/kvm6905.xml)

域 kvm6905 已开始
需要说明一点,脚本没有正确执行完毕,主要是挂在虚拟磁盘挂载不了,所以也修改不了主机名和ip地址。这以后再研究,不过确实可以快速创建虚拟机了,需要进入到虚拟机内部手动修改主机名;ip地址让它自动获取好了。
登录进入ubuntu修改主机名的方法:
sudo hostnamectl set-hostname kvm6905
sudo nano hosts

自动生成kali虚拟机的命令如下:生成虚拟机后还要自己改机器名
createvmkali -a 192.168.222.34 -p 8901 -n kali2026-1kvm8901

三、关于windows10虚拟机的快速创建
1、将/usr/local/bin/creatvm命令脚本再复制一份为/usr/local/bin/creatvmwin10.修改里面的windows10模板机所在的位置、并添加执行权限。
2026-04-03T06:40:42.png
2、再执行createvmwin10 -a 192.168.222.34 -p 7901 -n win10kvm7901

问题提示:
1、如何彻底删除虚拟机
。先关机 virsh destroy kvm7901
.删除配置文件和磁盘文件
virsh undefine kvm7901 --remove-all-storage

四、如何修改kvm虚拟机的硬盘格式核心数和内存大小?
1、修改内存、cpu核心数
virsh list --all
virsh shutdown win10kvm7901

如果没关

virsh destroy win10kvm7901

备份配置文件

virsh dumpxml win10kvm7901 > ~/win10kvm7901_back.xml

编辑配置文件,修改内存和cpu数量为所需

virsh edit win10kvm7901

启动虚拟机

virsh start win10kvm7901

2、将硬盘格式由qcow2改为raw

重复上面查看、关机、一系列操作,找到虚拟磁盘存放的位置/home/kvm/vdisks

切换到虚拟磁盘目录

cd /home/kvm/vdisks

执行qcow2--->raw转换

qemu-img convert -p -f qcow2 -O raw ./win10kvm7901.qcow2 ./win10kvm7901.raw

修改配置文件中虚拟硬盘格式和存放目录的内容,保存退出,重启虚拟机、

virsh edit win10kvm7901
virsh start win10kvm7901