예를 들어 sudo 명령을 실행할 때 sudo dolphin
다음과 같은 이상한 오류가 발생합니다.
QStandardPaths: XDG_RUNTIME_DIR이 설정되지 않았으며 기본값은 "/tmp/runtime-root"입니다.
이는 무엇을 의미하며 어떻게 해결합니까?
설치 이후로 이 오류가 발생한 것 같습니다. 표준 경로나 그와 유사한 것을 변경하지 않았습니다. 저는 아직 GNU/Linux를 처음 사용합니다.
저는 KDE를 사용하여 데비안 9.1을 실행하고 있습니다.
편집하다:Dolphin을 실행하기 위해 sudo를 사용해서는 안됩니다!이를 통해 파일 탐색기의 취약점을 악용할 수 있습니다. 또한 대부분의 다른 GUI를 루트로 실행해서는 안 됩니다(이러한 GUI는 sudo 비밀번호만 묻는 메시지를 표시합니다).
답변1
이것XDG_RUNTIME_DIR다음으로 구성된 표준 디렉토리 중 하나입니다. XDG 기본 디렉토리 사양(freedesktop.org)
$XDG_RUNTIME_DIR은 사용자별 비필수 런타임 파일과 기타 파일 개체(예: 소켓, 명명된 파이프 등)가 저장되어야 하는 상대 기본 디렉터리를 정의합니다. 디렉토리는 사용자가 소유해야 하며 해당 디렉토리에 대한 읽기 및 쓰기 액세스 권한을 가진 유일한 사람이어야 합니다. Unix 액세스 모드는 0700이어야 합니다.
기본적으로 이는 XDG(Freedesktop.Org) 호환 응용 프로그램에서 사용하기 위한 사용자별 임시 파일 디렉터리입니다.
데비안에서 이 변수는 일반적으로 다음과 같이 표시됩니다.pam_systemdPAM 모듈, 대화형 로그인.
$XDG_RUNTIME_DIR
컴퓨터에서 사용자의 로그인 시간과 연결된 사용자의 개인 사용자 쓰기 가능 디렉터리 경로입니다. 최초 로그인 시 자동으로 생성되며, 최종 로그아웃 시 삭제됩니다. 사용자가 한 번 로그인했다가 다시 로그아웃하고 다시 로그인하면 그 사이에 디렉터리 내용이 손실되지만 애플리케이션은 이 동작에 의존해서는 안 되며 오래된 파일을 처리할 수 있어야 합니다. ...
현재 사용자가 세션의 원래 사용자가 아닌 경우 $XDG_RUNTIME_DIR이 설정되지 않습니다.
그러나 다음을 사용하여 응용 프로그램을 시작할 때는 적용되지 않습니다.스도, 이것이 귀하의 애플리케이션(돌고래)이 이를 볼 수 없는 이유입니다.
그러면 제대로 될 거야발각이것:
QString xdgRuntimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR"));
if (xdgRuntimeDir.isEmpty()) {
const QString userName = QFileSystemEngine::resolveUserName(myUid);
xdgRuntimeDir = QDir::tempPath() + QLatin1String("/runtime-") + userName;
//...
qWarning("QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '%s'", qPrintable(xdgRuntimeDir));
}
적절한 기본값을 선택하고 이에 대해 (오류가 아닌) 경고를 발행합니다.
기존 것을 재사용한다는 점에 유의하세요.XDG_RUNTIME_DIR이는 사용자별 임시 디렉터리이고 다른 사용자 액세스로 응용 프로그램을 실행하면 파일 권한이 손상되고 기존 세션이 파괴될 가능성이 높기 때문에 잘못된 것입니다.
따라서 이것은 "수정"하려고 시도해야 할 사항이 아닙니다.
또한 일반적으로 다음 gksudo
과 같은 이유로 kdesudo
그래픽 응용 프로그램을 실행 해야 합니다.여기.