用ubuntu运行openfoam时出现QStandardPaths: wrong permissions on runtime directory /run/user/1000/, 0755 instead of 0700

用ubuntu运行openfoam时出现QStandardPaths: wrong permissions on runtime directory /run/user/1000/, 0755 instead of 0700

下午好🌅🌅🌅
本答案参考通义千问
在使用 Ubuntu 运行 OpenFOAM 时,如果出现以下错误信息:
QStandardPaths: wrong permissions on runtime directory /run/user/1000/, 0755 instead of 0700
这是由于 Qt 框架对运行时目录的权限要求较高。Qt 要求 /run/user/1000/ 目录的权限为 0700(即仅当前用户可读写),但系统默认设置为 0755(其他用户也可读)。
paraFoam 或 foamX)时,会尝试创建或访问 /run/user/1000/ 目录。你可以手动将 /run/user/1000/ 的权限更改为 0700。
sudo chmod 0700 /run/user/1000/
注意: 此操作是临时性的,重启后可能会恢复为 0755。
为了防止每次重启后权限被重置,可以编辑 systemd 的配置文件,让系统在启动时自动设置正确的权限。
创建一个 systemd 服务文件:
sudo nano /etc/systemd/system/set-permissions.service
添加以下内容:
[Unit]
Description=Set correct permissions for /run/user/1000/
[Service]
Type=oneshot
ExecStart=/bin/chmod 0700 /run/user/1000/
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
保存并退出(按 Ctrl+O,然后 Enter,再按 Ctrl+X)。
启用并启动服务:
sudo systemctl enable set-permissions.service
sudo systemctl start set-permissions.service
你也可以编写一个 shell 脚本,在每次登录时自动检查并设置权限。
#!/bin/bash
if [ "$(stat -c "%a" /run/user/1000/)" != "700" ]; then
sudo chmod 0700 /run/user/1000/
fi
将脚本保存为 ~/.set_permissions.sh,并添加到你的 .bashrc 或 .profile 中:
# ~/.bashrc
if [ -f ~/.set_permissions.sh ]; then
source ~/.set_permissions.sh
fi
如果你正在运行 OpenFOAM 的脚本,并且想在其中加入权限检查,可以这样做:
#!/bin/bash
RUNTIME_DIR="/run/user/$(id -u)"
if [ ! -d "$RUNTIME_DIR" ]; then
echo "Creating runtime directory: $RUNTIME_DIR"
mkdir -p "$RUNTIME_DIR"
chmod 0700 "$RUNTIME_DIR"
fi
# 然后继续执行 OpenFOAM 命令...
| 步骤 | 内容 |
|------|------|
| 1 | 修改 /run/user/1000/ 权限为 0700 |
| 2 | 使用 systemd 服务实现永久生效 |
| 3 | 可选:使用脚本自动检测并修复权限 |
| 4 | 可选:在 OpenFOAM 脚本中加入权限检查逻辑 |
如有更多关于 OpenFOAM 的问题,欢迎继续提问!