루트로 돌고래를 실행하는 방법?


14

현재 사용 dolphin 17.04.3하고 있으며 sudo로 실행할 때마다 Executing Dolphin as root is not possible.이유를 설명하거나 대안을 제공하지 않고 다음 오류가 발생 합니다. 파일을 복사하거나 삭제하기 위해 어떻게 돌고래를 루트로 실행할 수 있습니까?


어떤 버전의 Ubuntu를 사용하고 있습니까?
George Udosen

1
웨이 랜드를 사용하고 있습니까? 기본적으로 wayland는 GUI 프로그램을 루트로 실행할 수 없습니다.
ravery

작동하지 않습니다. 상황에 맞는 메뉴에서 파일을 만들거나 이동하는 옵션이 회색으로 표시됩니다. 버전을 확인하십시오
Ankur S

kde가 설치된 우분투 17.10 및 x11을 사용하고 있습니다
Ankur S

2
"그래서 어떻게 파일을 복사하거나 삭제하기 위해 루트로 돌고래를 실행할 수 있습니까?" 이 질문을 다시 평가하십시오. 관리 작업에는 명령 줄을 사용하십시오. 관리 작업을 위해 특별히 존재합니다. 관리 작업에는 그래픽 도구를 사용해서는 안됩니다. 관리자 권한으로 그래픽 도구를 실행하면 권한과 관련하여 보이지 않는 부작용이 생겨 최근에는 개발자가 적극적으로 차단하는 것으로 간주됩니다. 그래픽 파일 조작 도구가 무엇을 할 수 있고 무엇을하는지 정확히 아는 사람들과 대면하는 것이 좋은 생각이라고 생각하십니까?
Rinzwind

답변:


11

짧은:

돌고래 17.04

Dolphin 17.04 이상에서 확인 사항이 있습니다.

if uid == 0 then show the "Executing Dolphin as root is not possible." and exit.

해결 방법

소스를 편집하고 확인을 비활성화 할 수 있습니다. 그러면 돌고래는 전처럼 작동합니다.

돌고래 18.08

검토 요청이 거의 없음

Dolphin 18.08.0은 이러한 변경 사항을 사용하고 있으며 관리 슈퍼 사용자로 pkexec 명령을 사용하여 Dolphin을 시작할 수 있습니다.

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dolphin

더보기 : KDE Foruns-Kubuntu 또는 KDE 네온을 사용하여 Dolphin 18.08을 루트로 실행하는 방법은 무엇입니까? -https : //forum.kde.org/viewtopic.php ?f= 224&t=153655

여기에 이미지 설명을 입력하십시오

배경:

이전-KDE 포럼-Dolphin을 루트로 실행하는 방법? : https://forum.kde.org/viewtopic.php?f=224&t=141836

보안상의 이유로 : 허용 안 Linux에서 루트로 돌고래를 실행 - https://cgit.kde.org/dolphin.git/commit/?id=0bdd8e0b0516555c6233fdc7901e9b417cf89

Linux에서 Dolphin을 루트로 실행할 수 없음 기본적으로 Martin Grässlin이 작성한 commit kate / 9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e 사본

Linux에서 kate 및 kwrite를 루트로 실행할 수 없음 : https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e

더 많은 팁

KDE Reddit-KDE 앱 17.04의 돌고래 루트 : https://www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/

"돌고래를 루트로 실행할 수 없음"을 무시하고 KDE 돌고래 루트 권한을 다시 얻습니다. https://www.reddit.com/r/kde/comments/6xs3mp/bypass_executing_dolphin_as_root_is_not_possible/

미래

KIO의 Polkit 지원 : https://phabricator.kde.org/T6561

준비가되면 Dolphin은 필요한 경우 비밀번호 조회를 표시합니다. 이제 패치 된 Dolphin & KIO와 함께 :

여기에 이미지 설명을 입력하십시오


1
"보안상의 이유"에 대해 좀 더 자세히 설명해 주시겠습니까?
Jim McAdams

당신은 읽었다 phabricator.kde.org/...을 . 동일 / 더보기 : Martin Grässlin-루트로 파일 편집 : blog.martin-graesslin.com/blog/2017/02/editing-files-as-root
user26687

간단한 대답은 "패치 된 버전을 설치하지 않으면 Dolphin을 루트로 실행할 수 없습니다"라는 것입니다.

@ user47206 : 직접 패치 해 보지 않겠습니까? ;) 아래 내 답변을 참조하십시오!
WitchCraft

10

OP ( copying or deleting files) 에서 언급 한 목적에 대한 해결책은 아닙니다 .

아이디어는

  1. 그 제한이없고 많은 의존성을 가져 오지 않는 다른 파일 관리자를 설치하십시오.

  2. 이 다른 파일 관리자를 위해 Dolphin에서 "루트로 열기"컨텍스트 메뉴를 작성하십시오.

다른 데스크탑의 주 파일 관리자 (Nautilus, Nemo, Caja, Thunar)를 사용할 수 있지만 일부 종속성이 있습니다. PCManFM과 PCManFM-Qt조차도 그렇게합니다. 다른 목적으로 그 중 하나가 필요한 경우 해당 솔루션을 추가하는 것이 좋습니다.

Krusader (과거에는 일부 KDE 시스템에서 기본적으로 설치되었던 적이 있다고 생각 했음 )를 쉽게 설치할 수 있고 Kubuntu 18.04에서 종속성을 제공하지 않으며 루트로 사용할 수 있습니다.

sudo apt install krusader

도구 아래에 "루트"옵션이 있습니다.

여기에 이미지 설명을 입력하십시오

GUI에서 암호를 묻습니다.

돌고래에서 상황에 맞는 메뉴를 추가하려면 폴더 ~/.local/share/kservices5/ServiceMenus를 만든 다음

kate ~/.local/share/kservices5/ServiceMenus/filemanager_root.desktop

그리고 추가

[Desktop Action root]
Exec=/usr/lib/kde4/libexec/kdesu krusader
Icon=dolphin
Name=Open in Krusader file manger as administrator

[Desktop Entry]
Actions=root
Icon=krusader_root
MimeType=inode/directory
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel
X-KDE-StartupNotify=false

어떤 이유로 든 kdesu krusader작동하지 않으며 여기 에서 해결책을 사용했습니다 . 작동하는 것은 konsole -e sudo krusader암호 프롬프트의 GUI 대신 터미널을 보여줍니다.

그런 다음 돌고래에서 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오

대화 상자 가져 오기

여기에 이미지 설명을 입력하십시오

작동하는 것입니다 ..


5

위의 답변을 기반으로 내 자신의 버전을 만들었습니다. 따라서 루트로 Dolphin여는 컨텍스트 메뉴를 추가 하려면 다음 단계를 수행하십시오.

  • DolphinAsRoot.desktop디렉토리 에 예를 들어 파일을 작성하십시오.~/.local/share/kservices5/ServiceMenus/
  • 텍스트 편집기를 사용하여 다음 내용을 입력하십시오.
[Desktop Entry]
Actions=root
Icon=system-file-manager-root
MimeType=inode/directory
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel
X-KDE-StartupNotify=false

[Desktop Action root]
Exec=/usr/bin/pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dolphin
Icon=system-file-manager-root
Name=Open as administrator
  • 여전히 Dolphin의 상황에 맞는 메뉴에 나타나지 않으면 "설정-> 돌고래 구성 ...-> 서비스"로 이동하여 최근에 추가 한 옵션을 활성화하십시오. 거기 있어야합니다. 그렇지 않은 경우 Dolphin을 닫거나 로그 아웃 한 후 세션에 로그인하십시오.

그게 다야, 그것이 나에게 도움이 된 것처럼 당신 모두를 돕기를 바랍니다.)


0

내가 한 것은 툴바에 터미널을 추가하고 (키보드 단축키는 F4에 바인딩되었지만) 명령 줄을 사용하여 필요에 따라 sudo로 작업을 수행했습니다.

이렇게

예, 편리하지는 않지만 명령 행을 실제로 배우기 시작하면서 명령 행을 배우도록 강요합니다.

이것은 아치에 있지만 기능은 우분투에서 동일해야합니다. 도움이 되었기를 바랍니다.


0

다음은 Dolphin 17.x의 해결 방법입니다.

export XDG_CURRENT_DESKTOP=KDE; LD_PRELOAD=/home/roger/Downloads/dolphin/usr/lib64/libkdeinit5_dolphin.so /usr/bin/dolphin

libkdeinit5_dolphin.so에서 여기

나에 의해 테스트, 우분투 바이오닉에서 잘 작동합니다.

출처


0

사소한 일입니다!

kate 및 kwrite의 소스 코드를 살펴보십시오.

diff --git a/kate/main.cpp b/kwrite/main.cpp

"main"기능의 시작 부분에있는 첫 번째 코드 줄에서 다음을 찾을 수 있습니다.

/**
 * Check whether we are running as root
 **/
if (getuid() == 0) // uid = user id = 0 ==> means if you are user 0 (aka root)
{
    std::cout << "Executing Kate as root is not possible. To edit files as root use:" << std::endl;
    std::cout << "SUDO_EDITOR=kate sudoedit <file>" << std::endl;
    return 0;
}

돌고래는 libkdeinit5_dolphin.so에서 발생하는 것을 제외하고는 다르지 않습니다.

따라서 루트로 실행하는 것은 사소한 일이므로 if uid = 0 검사를 건너 뛰기 만하면됩니다.

우리가하는 방법은 kate, kwrite, dolphin을 영구 패치하는 것입니다.
먼저, 바이너리 컨텐츠를 텍스트 파일로 덤프합니다.

objdump -Crd /usr/bin/kate >> ~/kate.txt
objdump -Crd /usr/bin/kwrite >> ~/kwrite.txt

이제로 파일을 볼 수 있으며 gedit ~/kate.txtgetuid를 검색하면 다음과 같은 것을 찾을 수 있습니다.

   2a985:   31 c0                   xor    %eax,%eax
   2a987:   89 bc 24 dc 00 00 00    mov    %edi,0xdc(%rsp)
   2a98e:   e8 ed ce ff ff          callq  27880 <getuid@plt>
   2a993:   85 c0                   test   %eax,%eax
   2a995:   0f 84 e9 1e 00 00       je     2c884 <__cxa_finalize@plt+0x1f5c>

이제 왼쪽에는 메모리 주소가 있으며 콜론 (:) 뒤에 이진 명령어 코드 (16 진)가 표시되고 오른쪽에는 해당 코드의 디스 어셈블 (일명 의미)이 표시됩니다. .

이제 getuid를 호출하고 0인지 테스트하고 if 문으로 점프합니다. 즉, 반환 값이 0인지 확인합니다 (je : jump if equal).

이제 우리는 if에 뛰어 들기를 원하지 않으므로 해당 쓰레기를 제거하십시오. 그러나 그 쓰레기를 제거하면 주소가 6 바이트 씩 변경되어 프로세스에서 프로그램의 상대적 점프와 결과적으로 프로그램이 점프합니다. 대신 점프 코드의 전체 길이를 NOP ( N o Operation의 줄임) 명령어 (명령 코드 / 16 진수의 0x90)로 바꿉니다.

따라서 모든 점프 바이트를 0x90으로 바꿔야합니다.

0f 84 e9 1e 00 00

당신은 할 것

90 90 90 90 90 90

이 작업은 16 진 편집기로 간단하게 수행 할 수 있습니다.
그래서 우리는 하나를 설치합니다 :

sudo apt-get install wxhexeditor

이제 16 진 편집기에서 0f 84 e9 1e 00 00을 검색하여 90 90 90 90 90 90으로 바꿉니다. 0f 84 e9 1e 00 00이 한 번만 발생하는 경우에는 간단합니다. 16 진수로 바이트를 90 90 90 90 90 90으로 변경하고 저장하십시오. 끝마친. 케이트 또는 kwrite는 이제 루트 여부에 관계없이 열립니다.

돌고래와 똑같이 objdump -Crd /usr/bin/dolhin하면 매우 짧은 분해가 가능 하다는 것을 알 수 있습니다.

를 실행 ldd /usr/bin/dolphin하면 돌고래가 공유 라이브러리 libkdeinit5_dolphin.so를로드하는 것을 볼 수 있습니다.

linux-vdso.so.1 (0x00007ffc2fdf0000) libkdeinit5_dolphin.so => ​​/usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so (0x00007fb54e76c000)

따라서 libkdeinit5_dolphin.so에서 objdump를 수행하십시오.

objdump -Crd /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so >> ~/libkdeinit5_dolphin.txt

이제 objdump를여십시오 : gedit ~/libkdeinit5_dolphin.txt

getuid를 검색하면 검색 결과 중 하나가 다음과 같습니다.

   41f95:   31 c0                   xor    %eax,%eax
   41f97:   89 7c 24 5c             mov    %edi,0x5c(%rsp)
   41f9b:   e8 50 b6 ff ff          callq  3d5f0 <getuid@plt>
   41fa0:   85 c0                   test   %eax,%eax
   41fa2:   0f 84 58 1a 00 00       je     43a00 <kdemain@@Base+0x1a90>
   41fa8:   48 8d 84 24 a0 00 00    lea    0xa0(%rsp),%rax

이것은 kate와 kwrite에서와 같이 더 많은 쓰레기입니다.
이제 열 /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so, 귀하의 진수 편집기에서 검색 0f 84 58 1a 00 00과로 교체 90 90 90 90 90 90.
저장하고 완료했습니다.

돌고래는 이제 루트로 실행됩니다.

참고 : f *** up 일 경우를 대비하여 수정 한 파일의 백업 복사본을 만드는 것이 좋습니다.

또한 kate, kwrite 및 dolphin의 소스를 다운로드하고 소스 코드에서 해당 크랩을 제거하고 컴파일하고 설치할 수 있습니다. 그러나 어리석은 cmake 시스템에는 아이콘과 같은 어리석은 쓰레기에 대한 엉뚱한 쓰레기 템플릿이 없기 때문에 아마도 repo 제공 cmake가 너무 오래 되었기 때문에 작동하지 않습니다. 너무 나쁘고 방금 작동하면 너무 간단했을 것입니다.

그러나 내가 설명 한대로 실행 파일을 패치하는 것이 더 빠르므로 누가 걱정하는지.

알다시피, 그것은 간단하지 않지만 사소합니다.

추신 :
이제 케이트, kwrite 또는 돌고래가 apt를 통해 업데이트 될 때마다 변경 사항이 덮어 쓰여집니다. 다시 적용해야합니다. 나는 당신의 능력 이상의 프로그래밍 언어와 프로그래밍 언어의 패치 프로세스를 자동화 할 것입니다.)

순수한 bash에서 이것을 할 수 있습니까?

또한 동일한 쓰레기에 대해 vlc를 패치하려면 sed로 수행하십시오.

sed -i 's/geteuid/getppid/' /usr/bin/vlc

sed-statement를 스크립트에 넣으면 오프라인 상태이고 인터넷에 액세스 할 수없는 경우 다시 적용 할 수 있습니다.

VLC에서 무언가를 보거나 듣는 동안 kate, kwrite 및 dolphin을 이용한 해피 해킹

PS2 :
크 래피 루트 체크는 KDE v19.04의 Dodo 방식으로 진행되었습니다.
누가 말했다 n 개의 진화가 나쁜 일이었다.
진행-건배!


0

해결책이 아니라 제안입니다 .... 돌고래와 파일을 바꾸는 것은 다소 위험합니다. Double Commander는 훌륭한 대안이며 저장소에 있습니다. 루트 권한없이 설치됩니다. 루트를 얻으려면 터미널에 'sudo doublecmd'를 입력하십시오. 대용량 및 수백만 개의 파일로 작업 할 때 많은 이점이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.