실행기를 신뢰할 수 있는 것으로 설정하는 방법은 무엇입니까?

실행기를 신뢰할 수 있는 것으로 설정하는 방법은 무엇입니까?

작동하지 않는 바탕 화면 아이콘이 있습니다. 사용하려고 하면 오류가 발생합니다.

신뢰할 수 없는 데스크톱 파일 이 데스크탑 파일은 신뢰할 수 없으므로 실행할 수 없습니다. 마우스 오른쪽 버튼 클릭 실행을 활성화하려면 다음을 수행하십시오. "실행 허용" 활성화

다음과 같은 경우에는 "실행 허용" 메뉴 항목이 표시되지 않습니다.

  1. 바탕화면에 있는 아이콘을 마우스 오른쪽 버튼으로 클릭합니다.
  2. Dolphin에서 해당 파일을 마우스 오른쪽 버튼으로 클릭합니다.
  3. "파일 관리자"에서 이 파일을 마우스 오른쪽 버튼으로 클릭합니다.

그래서 이 웹페이지의 지침을 사용하여 명령줄에서 이를 수행하려고 했습니다.Ubuntu 18.04의 명령줄에서 .desktop 파일을 신뢰할 수 있는 파일로 표시하는 방법은 무엇입니까?. 신뢰할 수 없는 실행기 링크가 많기 때문에 이 명령 시퀀스를 사용했고 다음 응답을 받았습니다.

$ chmod u+xrw /home/stephen/Desktop/*.desktop
$ chmod g+xrw /home/stephen/Desktop/*.desktop
$ chmod o+xr /home/stephen/Desktop/*.desktop
$ gio set "/home/stephen/Desktop/*.desktop" "metadata::trusted" yes
gio: Setting attribute metadata::trusted not supported

* 와일드카드 문자 대신 gio에 특정 파일을 제공했을 때나 루트로 gio를 실행하려고 할 때에도 동일한 오류가 발생했습니다.

gio 명령을 내리는 올바른 속성은 무엇입니까? "실행 허용" 메뉴 항목은 어떤 파일 브라우저에 나타나야 합니까?

내 OS는 Ubuntu 22.04입니다.

다음은 문제가 있는 .desktop 파일 중 하나입니다.

[Desktop Entry]
Comment=Powerful yet simple to use screenshot software.
Comment=Powerful yet simple to use screenshot software.
Comment[en_US]=Powerful yet simple to use screenshot software.
Exec=flameshot launcher
GenericName=
GenericName=
GenericName[en_US]=
Icon=flameshot
MimeType=
Name=Flameshot (Snappy Edition)
Name=Flameshot (Snappy Edition)
Path=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
Version=1.0
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=

저는 2022년 9월 6일 댓글에서 ubfan1이 제시한 권장 사항을 따랐습니다. 결과는 다음과 같습니다.

stephen@stephen:~$ desktop-file-validate /home/stephen/Desktop/Flameshot.desktop
/home/stephen/Desktop/Flameshot.desktop: error: file contains multiple keys named "Comment" in group "Desktop Entry"
/home/stephen/Desktop/Flameshot.desktop: error: file contains multiple keys named "GenericName" in group "Desktop Entry"
/home/stephen/Desktop/Flameshot.desktop: error: file contains multiple keys named "Name" in group "Desktop Entry"
/home/stephen/Desktop/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
/home/stephen/Desktop/Flameshot.desktop: warning: key "TerminalOptions" in group "Desktop Entry" is deprecated

Path 키를 무엇으로 설정해야 합니까? 이 사실을 모르고, 경고일 뿐이어서 나머지 파일도 그에 맞게 편집했습니다. 해당 편집 결과는 다음과 같습니다.

[Desktop Entry]
Comment=Powerful yet simple to use screenshot software.
Comment[en_US]=Powerful yet simple to use screenshot software.
Exec=flameshot launcher
GenericName=
GenericName[en_US]=
Icon=flameshot
MimeType=
Name=Flameshot (Snappy Edition)
Path=
StartupNotify=false
Terminal=false
Type=Application
Version=1.0
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-Desktop-File-Install-Version=0.26
X-KDE-SubstituteUID=false
X-KDE-Username=

이제 다음과 같은 결과를 얻습니다.

stephen@stephen:~$ desktop-file-validate /home/stephen/Desktop/Flameshot.desktop
/home/stephen/Desktop/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
stephen@stephen:~$ sudo desktop-file-install /home/stephen/Desktop/Flameshot.desktop
/usr/share/applications/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
stephen@stephen:~$ sudo desktop-file-edit /home/stephen/Desktop/Flameshot.desktop
/home/stephen/Desktop/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path

여전히 "실행 허용" 메뉴 항목이 나타나지 않습니다.

그런 다음 Flameshot.desktop이 더 이상 실행 가능하지 않다는 것을 발견했습니다. 그래서 돌고래를 이용해서 그렇게 만들었어요. 이 작업을 수행한 후 실행 가능하게 만들면 Flameshot.desktop의 콘텐츠가 위에서 시작한 내용으로 되돌아가는 것을 발견했습니다. 중복된 키 항목이 다시 도입되었고, 결국 내가 시작한 곳에서 바로 끝났습니다.

어쩌면 Path 키 경고가 내가 생각했던 것보다 더 중요했을 수도 있습니다. 다시 시도하기 전에 무엇으로 설정해야 하는지 알아야 합니다. 다른 제안 사항도 대단히 감사하겠습니다.

작동하는 바탕 화면 아이콘을 만들 수 있는 테스트용으로 생성된 새 임시 계정인 테스트 계정과 기본 계정인 stephen 계정에서 수행된 "strace gio set" 명령의 결과를 비교하기 위해 스프레드시트를 만들었습니다. 계정과 Ubuntu 설치 중에 생성된 계정은 사용할 수 없습니다. 다음에서 다운로드할 수 있습니다.

https://www.mediafire.com/file/xz4dy7280wfx3u8/giosetenablecomparison.ods/file

A열은 메인 계정의 명령어 결과이고, B열은 테스트 계정의 결과입니다. 결과는 59행까지 거의 비슷합니다. 테스트 계정에서는 기본 계정에 대해 "close(3)"가 표시되고 테스트 계정에 "close(3) = 0"이 표시됩니다.

stephen 계정에서는 출력이 59행에서 끝납니다. 테스트 계정에서는 출력이 516행까지 계속됩니다.

이 모든 출력이 무엇을 의미하는지 모르겠습니다. 스티븐 계정에서 일부 오류로 인해 프로세스가 조기에 종료되는 것 같습니다. 여기 누군가가 무엇이 잘못되었는지 확인하고 해결책을 제안할 수 있습니다.

마이그레이션한 이전 컴퓨터에는 Pop!_OS 21.04가 있습니다. 내가 마이그레이션한 새 컴퓨터에 이 아이콘 문제가 있는데 Ubuntu 22.04가 있습니다. 마이그레이션을 수행할 때 모든 바이너리를 /opt에 복사하고 모든 파일을 /home에 복사했습니다. /opt에 모든 파일을 복사함으로써 모든 소프트웨어 설치를 다시 수행하는 데 필요한 시간과 노력을 절약할 수 있기를 바랐습니다. /user/bin 및 /snap과 같은 다른 곳에 바이너리가 있다는 것을 알고 있습니다. 저는 이것을 복사한 것이 아니며 설치 파일을 사용하여 새 컴퓨터에 설치하려고 했습니다. 나는 연결된 앱이 설치될 때까지 /Desktop 디렉토리에 끊어진 링크가 있다는 것을 알고 있었습니다. 지금은 이것이 실수였을 수 있으며 모든 것이 새 컴퓨터의 설치 파일에서 설치되어야 한다고 생각합니다.

요청한 명령의 결과스틸드라이버그의 코멘트에서:

stephen@stephen:~$ echo $DBUS_SESSION_BUS_ADDRESS
unix:path=/run/user/1000/bus
stephen@stephen:~$ id -u
1000

답변1

gio set "/home/stephen/Desktop/*.desktop" "metadata::trusted" yes

정확하지 않습니다. 3가지 문제:

  • 을 사용해야 합니다 dbus-launch. dbus-launch먼저 설치되지 않은 경우 다음을 수행하십시오.

    sudo apt install dbus-x11
    
  • 와일드카드를 사용할 수 없습니다.

  • Ubuntu 20.04 기준으로 "예"가 아니라 "참"입니다.

명령:

dbus-launch gio set /home/stephen/Desktop/{name}.desktop "metadata::trusted" true

(여기서 {name}은 실제 이름으로 바꿔야 함)

답변2

"~/Desktop" 디렉터리에 다른 사람이 쓸 수 있었기 때문에 "실행 허용" 메뉴 항목이 나타나지 않았습니다. 이를 알아내기 위해 GNU 소스 코드를 찾고 분석해야 했습니다. 그 핵심은 파일의 200번째 줄이었습니다:

/usr/share/gnome-shell/extensions/ding(at)rastersoft.com/fileItemMenu.js".

(@를 (at)로 대체)

이것은:

if (fileItem.isValidDesktopFile && !this._desktopManager.writableByOthers && !fileItem.writableByOthers && (selectedItemsNum == 1 )) {

"~/Desktop" 디렉터리는 다른 사람이 쓰기 가능했기 때문에 "!this._desktopManager.writableByOthers"라는 용어가 거짓이어서 메뉴 항목이 나타나지 않았습니다.

"~/Desktop" 디렉토리에 다른 사람의 쓰기 권한이 없어야 한다는 요구 사항은 문서화되어 있지 않으며 그래야 합니다. 그랬더라면 시간이 많이 절약됐을 텐데.

관련 정보