私は現在使用してdolphin 17.04.3
おり、sudoとして実行するときはいつでも、Executing Dolphin as root is not possible.
理由を説明したり代替案を提供したりせずに次のエラー
を出します。では、どうすればイルカをrootとして実行して、ファイルをコピーまたは削除できますか?
私は現在使用してdolphin 17.04.3
おり、sudoとして実行するときはいつでも、Executing Dolphin as root is not possible.
理由を説明したり代替案を提供したりせずに次のエラー
を出します。では、どうすればイルカをrootとして実行して、ファイルをコピーまたは削除できますか?
回答:
ショート:
イルカ17.04
Dolphin 17.04以降にはチェックがあります:
if uid == 0 then show the "Executing Dolphin as root is not possible." and exit.
回避策
ソースを編集してチェックを無効にすることができます。その後、イルカは以前のように動作します。
イルカ18.08
レビューリクエストがほとんどありません
rootユーザーとしてのDolphinの実行を再度許可します(ただし、sudoは使用しません):https : //phabricator.kde.org/D12795
rootユーザーとして実行しているときに警告を表示:https : //phabricator.kde.org/D12732
Dolphin 18.08.0はこれらの変更を使用しており、Dolphinは管理スーパーユーザーとしてpkexecコマンドを使用して起動できます。
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dolphin
詳細:KDE Foruns-Dolphin 18.08をKubuntuまたはKDEネオンでrootとして実行する方法は?-https://forum.kde.org/viewtopic.php?f = 224&t = 153655
バックグラウンド:
以前-KDEフォーラム-Dolphinをrootとして実行する方法:https ://forum.kde.org/viewtopic.php?f = 224 & t =141836
セキュリティ上の理由から:LinuxでrootとしてDolphinを実行することを許可しない-https://cgit.kde.org/dolphin.git/commit/ ?id = 0bdd8e0b0516555c6233fdc7901e9b417cf89
LinuxでルートとしてDolphinを実行することを許可しない
Linuxでkateおよびkwriteをrootとして実行することを禁止します。https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e
その他のヒント
KDE Reddit-KDEアプリ17.04のDolphinルート:https : //www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/
「Dolphinをrootとして実行することはできません」をバイパスし、KDE Dolphinのルート権限を取り戻します: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でこの他のファイルマネージャ用に「Open as root」コンテキストメニューを作成します。
他のデスクトップのメインファイルマネージャー(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で発生します。
したがって、rootとして実行するのは簡単です。ifuid = 0チェックをスキップするだけで済みます。
これを行う方法は、ケイト、kwrite、およびイルカをパーマパッチすることです。
したがって、最初に行うことは、バイナリコンテンツをテキストファイルにダンプすることです。
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>
ここで、左側にメモリアドレスが表示され、コロン(:)の後にバイナリ命令コード(hex)が表示され、その右側にそのコードの逆アセンブリ(別名)が表示されます。 。
これで、getuidを呼び出して、それがゼロかどうかをテストし、ifステートメントにジャンプします。つまり、戻り値がゼロに等しいかどうか(je:等しい場合はジャンプします)。
今はifに飛び込みたくないので、そこでがらくたを削除します。ただし、そのがらくたを削除するだけでアドレスが6バイト変更され、プロセス内のプログラム内の相対ジャンプが破棄され、結果としてプログラムが破棄されます。したがって、代わりに、ジャンプステートメントの全長をNOP(N o Op erationの略)命令(別名、命令コード/ 16進数で0x90)に置き換えるだけです。
そこで、そこにあるすべてのジャンプバイトを0x90に置き換える必要があります。
0f 84 e9 1e 00 00
あなたは
90 90 90 90 90 90
これは、16進エディターで簡単に実行できます。
したがって、1つインストールします。
sudo apt-get install wxhexeditor
次に、16進エディタで0f 84 e9 1e 00 00を検索し、それを90 90 90 90 90 90に置き換えます。0f84 e9 1e 00 00の出現が1つしかなく、ある場合、これは簡単です。16進数のバイトを90 90 90 90 90 90に変更して保存します。終了しました。rootかどうかに関係なく、Kateまたはkwriteが開きます。
イルカと同じことをobjdump -Crd /usr/bin/dolhin
すると、非常に短い分解が実現することがわかります。
を実行するとldd /usr/bin/dolphin
、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を検索すると、検索結果の1つが次のように表示されます。
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
これは素晴らしいですね、ケイトとクライトと同じようにもっとがらくたです。16進エディタで
開い/usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so
て、検索し0f 84 58 1a 00 00
てに置き換え90 90 90 90 90 90
ます。
保存を押して完了します。
イルカはルートとして実行されます。
注:万が一のために、変更したファイルのバックアップコピーを作成することをお勧めします。
また、kate、kwrite、およびdolphinのソースをダウンロードして、ソースコードからそのがらくたを削除し、コンパイルしてインストールすることもできます。しかし、愚かなcmakeシステムには、アイコンなどの愚かながらくたのためのいくつかのくだらないがらくたテンプレートが欠落しているため、おそらくリポジトリが提供するcmakeが古すぎるため、これは機能しません。残念ながら、もしそれがうまくいったら、単純過ぎるでしょう。
しかし、私が説明したように実行可能ファイルにパッチを当てるだけの方が高速なので、とにかく誰も気にしません。
わかりますが、簡単ではありませんが、取るに足らないことです。
PS:
ケイト、kwrite、またはイルカがaptを介して更新されると、変更は上書きされます。それらを再適用する必要があります。パッチプロセスの自動化は、有能な手と、プログラミング言語の喜びに任せます;)
これは純粋なbashで実行できますか?
また、同じがらくたのvlcにパッチを適用する場合は、sedを使用してパッチを適用できます。
sed -i 's/geteuid/getppid/' /usr/bin/vlc
そのsed-statementをスクリプトに入力するだけで、オフラインでインターネットにアクセスできない場合に必要に応じて再申請できます。
幸せなハッキング-ケイト、kwrite、イルカ-をルートとして-vlcで何かを見たり聞いたりしながら。
PS2:
KDE v19.04のDodoのように、くだらないルートチェックが行われました。
誰が言ったn個の進化は悪いことでした。
進歩するために-乾杯!