6

これは、ゲームをプレイすることで「コマンドを入力し、sudo を前に付けることを忘れないでください。そうしないと、指が叩かれます」というストレスを感じていることについてです。

「sudo apt-get install emacs」などと入力するのを忘れたときに、何か間違ったことをしたと言うだけでなく、gksudo が起動して、私の資格情報を確認し、移動を開始します。WindowsでUACが行うのと同じように。

グーグルはまだ私を助けていません..

それで、これは可能ですか?私は何か見落としてますか?それとも、四角い円を求めていますか?

2010 年 7 月 25 日編集:ご関心をお寄せいただきありがとうございます。残念ながら、この質問を送信する前に解決策をグーグルで検索することは不可能だったので、Daenyth と bmargulies の回答と説明は私が予想/恐れていたものです。素敵な人がいつかこれに対する効果的な解決策を提供してくれることを願っています.

BR、クリスチャン

4

6 に答える 6

3

Linux ではこれが許可されていません。どのプログラムでもダイアログ ボックスを起動でき、UAC がカーネルにある Windows とは異なり、Linux プログラムは必ずしも GUI 対応ではなく、この意味で sudo はカーネルにありません。プログラムは、特権を昇格するための呼び出しを行うことはできません (最初から特権で起動され、意図的に設定されていない限り)。sudo は、setuid 権限を持つ別の実行可能ファイルであり、権限をチェックします。表示された内容が気に入った場合は、シェルをフォークしてコマンド ラインを実行します。これは裏返せない。

他の投稿で示唆されているように、列挙されたコマンドのリストに対して sudo を実行するように手配する「シェルゲーム」を考え出すことができるかもしれませんが、それはあなたが得ようとしているすべてです.

于 2010-07-25T19:27:50.550 に答える
1

command-not-found パッケージと同様に、 preexec フック関数を使用して、必要なことを行うことができます。

于 2010-07-25T00:53:57.510 に答える
0

現在の Linux ソフトウェア スタックでは、これを行う方法はありません。さらに、MS はこの動作に関する特許を取得しています--present a user interface identifying an account having a right to permit a task in response to the task being prohibited based on a user's current account not having that right.

于 2010-07-25T19:41:18.693 に答える
0

これが一般的な方法で実際に機能するとは思いません (管理者権限が必要なアプリケーションを自動的に決定します)。ただし、すべてのアプリケーションに対して次のようなエイリアスを作成できます。

alias alias apt-get='gksudo apt-get'

ここで gnome を入力apt-get install firefoxすると、管理者パスワードを要求されます。コマンドは次の場所に保存できます。~./bashrc

于 2010-07-20T17:45:42.510 に答える
0

コマンドを常にルートとして実行したいが、すでにルートになっている可能性がある場合は、小さな bash スクリプトをラップすることでこれを解決できます。

#!/bin/bash
if [ $EUID = 0 ]; then
    "$@"
else
    gksudo "$@"
fi

これを次のように呼び出しalwaysroot.bashて PATH の適切な場所に配置すると、他のプログラムを次のように呼び出すことができます。

alwaysroot.bash otherprogram -arguments...

スペースを含む引数も正しく処理します。

于 2010-07-25T19:53:55.923 に答える
0

次のようなシェル スクリプトを使用できます。

#!/bin/bash
$@
if [ $? -ne 0 ]; then
    sudo $@    # or "gksudo $@"
fi

これは、コマンドがゼロ以外のリターン コードで戻ってきた場合 (つまり、失敗した場合)、sudo プレフィックスを使用して引数で指定されたコマンドを実行します。たとえば、「SCRIPT_NAME apt-get install emacs」のように使用します。$PATH のどこかに保存し、次のようなエイリアスとして設定できます (do_sudo として保存した場合):

alias apt-get='do_sudo apt-get'

編集:これは、root 以外のユーザーに対して機能するようなプログラムでは機能しませんが、権限が少なくなります。ただし、アプリケーションが root 権限なしで呼び出されたときに失敗した場合 (同様に)、これは正常に機能します。synapticapt-get

于 2010-07-25T00:06:58.950 に答える