web-dev-qa-db-ja.com

1つのプロンプトpkexec-2つのコマンド

認証で2つのコマンドを使用する必要がある場合、誰かがpkexecを介して1つのプロンプトを作成する方法を教えてもらえますか?私の簡単なサンプルスクリプト:

pkexec virsh net-start default;
pkexec "/home/user/program";

私はLinux環境で新しいです。ありがとう:)

3
Hamlet

古い回答:スクリプトからpkexecを削除できますか? (pkexecなしで)コードを貼り付ける次のスクリプトを作成し、スクリプトからpkexecを介して実行してみてください。あなたのスクリプト:#!/bin/bash pkexec ./new_script新しいスクリプト:#!/bin/bash your command:

編集:新しい回答

@Thrigとの会話の後で、私はあなたが何をしようとしているのかと思います。二重認証なしで(一度だけ)root権限で両方のプログラムを実行したい。これらの2つのプログラムは、「virsh」と「gnome-boxes」です。私の以前の(上記の)ソリューションは問題ありませんが、この場合はそうではありません。 「Sudo」の使用を検討していることを@Thrigに書いた。 「pkexec」と「sudo」を一緒に使用しないでください。 「/ etc/sudoers」を適切に完了すると、スクリプトで「Sudo」コマンドを使用するときに認証を行う必要がなくなります。私はあなたの考えを改善させます。気に入ってくれるといいな。すべてを段階的に説明します。

1。3つのスクリプトを作成します。

a)main.sh-接続をセットアップし、接続を破棄し、gnome-boxesを実行します。ルートとしてのすべて

b)net.sh-注文を実行します

c)die.sh-注文を実行します

a)

#!/Bin/bash
Sudo /home/ham/..your..path../net.sh && pkexec /usr/bin/gnome-boxes;
Sudo /home/ham/..your..path../die.sh;
exit

どうして? 演算子の説明

b)

#!/Bin/bash
virsh net-start default

c)

#!/Bin/bash
virsh net-destroy default

2。「sudoers」ファイルを編集して、スクリプトを作成します。b)c)root権限で実行します。

$ Sudo nano /etc/sudoers

%Sudo ALL=(root) NOPASSWD: /home/..your..path../net.sh
%Sudo ALL=(root) NOPASSWD: /home/..your..path../die.sh 

3。スクリプトの所有者を変更b)c)rootに:

$ Sudo chown 700 /home/ham/..your..path../net.sh
$ Sudo chown 700 /home/ham/..your..path../die.sh;

4。gnome-boxesのpolkitでルールを作成します。答え:「どうやってやるの?」ここにあります: simple_polkit_rule

5。ファイルを編集:

  • org.gnome.Boxes.service

    Exec=/home/..your..path../start.sh

  • org.gnome.Boxes.desktop

    Exec=/home/..your..path../start.sh

6。ショートカットアイコンをクリックして、gnome-boxesアプリケーションを実行します。終了しました。私自身は、gnome-boxesアプリケーションを閉じるときに接続を自動的にオフにする機能を追加しました。

1
Zic

多くの人が、su特権でGUIを実行したいという同様の問題を抱えています。最近、私は残っている開いたターミナルウィンドウを調べました。これを検索した後、私はうまくいきました。

  • 私の使用法は、用語を使用してSUでGUIを呼び出すか、エイリアスを使用して〜/ binからシェルスクリプトを呼び出すことです。

「su」または「Sudo」のGUI特権エスカレーションはお勧めできません。また、自分が行っていることのリスクを知らずに実行することはできません。


  • pkexecは次の方法で取得できます。

    Sudo apt install policykit-1
    

  • このファイルの最下部を次のように編集します。

    Sudo nano /usr/share/polkit-1/actions/org.freedesktop.policykit.policy
    
  • あなたは次のようになります:

    <action id="org.freedesktop.policykit.lockdown">
    
      <description>Configure lock down for an action</description>
    
        <message>Authentication is required to configure lock down policy</message>
    
      <defaults>
    
        <allow_any>auth_admin</allow_any>
    
        <allow_inactive>auth_admin</allow_inactive>
    
        <allow_active>auth_admin</allow_active>
    
      </defaults>
    
      <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/pklalockdown</annotate>
    
    </action>
    

  • その後、試してください:

    pkexec gedit 
    

ターミナルへのカスタムビンパスの追加:-標準は、ユーザーのシェルプログラムを格納することです

   /home/$USER/bin

または

   ~/bin

*これらは同じ場所です。1つ目はファイルへのフルパス、2つ目は省略形です

    /home/$USER/bin
  • ユーザー/ binを$ USER $ PATHに単純に追加するには

    mkdir /home/$USER/bin
    
  • ターミナルは、次の場所にあるシェルスクリプトまたはプログラムを認識します。

    ~/bin
    

例:

    $/path/to/file.sh 

になる:

    $file.sh

これを.bashrcに追加します

エクスポートPATH = $ PATH:$ HOME/bin

ここで、「$ HOME/bin」は、追加したいと思うディレクトリです。この変更は一時的なものであり(シェルの現在のセッションでのみ機能します)、ホームディレクトリにある.bashrcファイルに前の行を永続的に追加します。

  • シェルアプリでpkexecを実行して複数のプログラムを実行し、資格情報を一時的に保存するオプションがあるため、GUIアプリにはこの特権昇格の方法を好みます。

  • 次に、エイリアスを〜/ .bash_aliasesに追加してみます。

    echo 'alias gedit="pkexec gedit"' >> ~/.bash_aliases 
    

/ PKEXEC/SU/GUI/GKsu/POLKIT/policykit-1

1
TinyRickHole