web-dev-qa-db-ja.com

これがSudoパスワードをバイパスするのはなぜですか?

SVNチェックアウトを自動化するために使用しているbashスクリプトがあります。ファイルの内容は次のとおりです。

#!/bin/bash
cd /var/www-cake
Sudo svn checkout file:///usr/local/svn/bash_repo/repo/

次に、ファイルをダブルクリックすると、何をするか尋ねられます。「Run In Terminal」ボタンをクリックすると、端末がポップアップ表示され、Sudoパスワードを尋ねられます。入力すると、スクリプトが実行され、ターミナルが閉じます。

スクリプトが正常に実行されたことを示すために、ファイルを次のように編集しました。

#!/bin/bash
cd /var/www-cake
Sudo svn checkout file:///usr/local/svn/bash_repo/repo/
echo "Head revision has been pushed to live server"

ターミナルが開いたままになり、その後メッセージが表示されることを期待していました。驚いたことに、今では開いてすぐに閉じます。スクリプトが実行され、Sudoパスワードを入力する必要がなくなりました。

これは正しいですか?なぜこれが起こっているのかはわかりませんが、セキュリティ上の問題のようです。

6
JD Isaacks

Sudoはしばらくの間(デフォルトでは15分)パスワードを記憶します。 Sudo -kを実行して、Sudoにパスワードを忘れさせることができます

19
Florian Diesch

ターミナルから直接スクリプトを実行するとどうなりますか?通常、Sudoパスワードが15分間記憶された後に入力された場合。グラフィカルに実行すると、完全な実行後にターミナルプロンプトが閉じます。プレイするSVNリポジトリはありません-ただし、ユーザーからの入力を収集し、その名前のファイルをタッチする同様のテストを行いました。

#!/usr/bin/env bash

echo -n "Hello, enter the file name: "
read NAME
touch $NAME
echo "All done"

端末から実行された場合:

alt text

次にダブルクリックしました:

alt text

alt text

プロンプトは完了すると閉じますが、要求された内容は実行されます。

5
Marco Ceppi

スクリプトの実行後にプロンプ​​トを開いたままにするには、次の2つのことを試してください。

  • readコマンドを最後の行として追加します。
  • ターミナルでコマンドを実行してウィンドウを開いたままにするランチャーを作成するには、gnome-terminalのプロファイルを作成します。Holdは、それを正確に行い(プロファイルオプションを調べます)、以下を使用します。

    gnome-terminal --window-with-profile="Hold" -e "/path/to/script"
    
3
MarkovCh1