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