mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-13 20:32:05 +08:00
chore:普通用户提权后的忽略文件存放到用户目录下
This commit is contained in:
@@ -14,8 +14,25 @@ IgnoreConfig::IgnoreConfig(QObject *parent)
|
||||
|
||||
// 检查是否以 root 权限运行
|
||||
if (geteuid() == 0) {
|
||||
// 以 root 权限运行,使用 root 的配置目录
|
||||
configDir = "/root/.config";
|
||||
// 首先检查是否有 SUDO_USER_HOME 环境变量(表示是通过 pkexec 提权的普通用户)
|
||||
QByteArray sudoUserHomeEnv = qgetenv("SUDO_USER_HOME");
|
||||
if (!sudoUserHomeEnv.isEmpty()) {
|
||||
// 通过 pkexec 提权的普通用户,使用原用户的配置目录
|
||||
QString sudoUserHomePath = QString::fromLocal8Bit(sudoUserHomeEnv);
|
||||
configDir = sudoUserHomePath + "/.config";
|
||||
} else {
|
||||
// 获取实际的 HOME 目录来判断是真正的 root 用户还是其他方式提权的用户
|
||||
QByteArray homeEnv = qgetenv("HOME");
|
||||
QString homePath = QString::fromLocal8Bit(homeEnv);
|
||||
|
||||
if (homePath == "/root") {
|
||||
// 真正的 root 用户,使用 /root/.config
|
||||
configDir = "/root/.config";
|
||||
} else {
|
||||
// 其他方式提权的用户,使用 HOME 目录下的配置
|
||||
configDir = homePath + "/.config";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 普通用户,使用标准配置目录
|
||||
configDir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
|
||||
|
||||
@@ -16,11 +16,13 @@ bool elevateToRoot() {
|
||||
|
||||
QByteArray display = qgetenv("DISPLAY");
|
||||
QByteArray xauthority = qgetenv("XAUTHORITY");
|
||||
QByteArray home = qgetenv("HOME"); // 获取原始用户的 HOME 目境变量
|
||||
|
||||
QStringList args;
|
||||
args << "env"
|
||||
<< "DISPLAY=" + display
|
||||
<< "XAUTHORITY=" + xauthority
|
||||
<< "SUDO_USER_HOME=" + home // 传递原始用户的 HOME 路径
|
||||
<< program;
|
||||
|
||||
QProcess process;
|
||||
|
||||
Reference in New Issue
Block a user