현재 사용 dolphin 17.04.3
하고 있으며 sudo로 실행할 때마다 Executing Dolphin as root is not possible.
이유를 설명하거나 대안을 제공하지 않고 다음 오류가 발생
합니다. 파일을 복사하거나 삭제하기 위해 어떻게 돌고래를 루트로 실행할 수 있습니까?
현재 사용 dolphin 17.04.3
하고 있으며 sudo로 실행할 때마다 Executing Dolphin as root is not possible.
이유를 설명하거나 대안을 제공하지 않고 다음 오류가 발생
합니다. 파일을 복사하거나 삭제하기 위해 어떻게 돌고래를 루트로 실행할 수 있습니까?
답변:
짧은:
돌고래 17.04
Dolphin 17.04 이상에서 확인 사항이 있습니다.
if uid == 0 then show the "Executing Dolphin as root is not possible." and exit.
해결 방법
소스를 편집하고 확인을 비활성화 할 수 있습니다. 그러면 돌고래는 전처럼 작동합니다.
돌고래 18.08
검토 요청이 거의 없음
루트 사용자로 Dolphin 실행을 다시 허용하십시오 (그러나 여전히 sudo를 사용하지 않음) : https://phabricator.kde.org/D12795
루트 사용자로 실행할 때 경고를 표시 하십시오 . https://phabricator.kde.org/D12732
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와 함께 :
OP ( copying or deleting files
) 에서 언급 한 목적에 대한 해결책은 아닙니다 .
아이디어는
그 제한이없고 많은 의존성을 가져 오지 않는 다른 파일 관리자를 설치하십시오.
이 다른 파일 관리자를 위해 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 대신 터미널을 보여줍니다.
그런 다음 돌고래에서 볼 수 있습니다.
대화 상자 가져 오기
작동하는 것입니다 ..
위의 답변을 기반으로 내 자신의 버전을 만들었습니다. 따라서 루트로 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
그게 다야, 그것이 나에게 도움이 된 것처럼 당신 모두를 돕기를 바랍니다.)
사소한 일입니다!
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.txt
getuid를 검색하면 다음과 같은 것을 찾을 수 있습니다.
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 개의 진화가 나쁜 일이었다.
진행-건배!