7

私の目標は、フォルダを/opt/ディレクトリに正常にリンクすることです。これはsudoで実行する必要があります。

私はこれを試しました:

 system(sudo ln -s $$OUT_PWD/xampp /opt/lampp):message("You should manually link LAMPP")

しかし、qt-creatorからビルドすると、sudoパスワードの入力を求められないため、フォルダーをリンクすることができませんでした。コンパイラ出力に「間違ったパスワードの試行...」エラーが表示されました。次に、ビルド手順でこれらを試しました。

make
sudo make install

そこにプロンプ​​トが表示されるかどうかを確認しましたがmake install、同じエラーでステップに失敗しました。これは詳細です。

00:31:20: Starting: "/usr/bin/sudo" make install
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
00:31:20: The process "/usr/bin/sudo" exited with code 1.

system()qmakeスクリプトの関数は、コマンドのqmake && make && make install前にプロンプ​​トが表示されるため、ターミナルから使用すると正常に機能しsudo ln...ます。しかし、テストを高速化するために、QtCreator内でCTRL-Bを使用してビルドするとsudoコマンドでも機能するはずです...

Qt Creatorからプロンプトを表示する方法、またはこれを回避する方法はありますか?Qt Creator内にsudoパスを保存するのと同じように(リスクはありますが)...または、端末でビルドステップを実行してプロンプトが表示されるようにしますか?prompt()qmakeの関数はsudoパスワードの収集で機能しますか?

任意の提案を歓迎します...

4

4 に答える 4

3

多くの研究の後:

ssh-askpass Sudo Password | sudo -S bash ./script

チャームのように機能し、別のウィンドウ/プロンプトボックスでパスワードを要求します。カスタムビルド手順で追加しました。重要なことは、オプションsudoを介したパスワード入力を期待していることを知らせることです。-S

echo "password" | sudo -S bash ./script

bashスクリプトでも機能しますが、スクリプト内にsudoパスワードを格納するのは安全ではないと思われるかもしれません。読み取り権限でその問題を解決できるはずだと言われています。

于 2012-05-19T20:37:47.330 に答える
2

@Loganオプションsudoを使用してssh-askpass(GUIパスワード要求ダイアログ)を直接-A使用することができます。これにより、SUDO_ASKPASS環境変数を使用して、 [1]/usr/bin/ssh-askpassで構成できる値( @herophuongの提案など)をオーバーライドできます。これにより、コマンドライン引数を監視できるものすべてに表示される、回答の2番目のソリューションのセキュリティリスクを回避できます。最初のソリューションに相当するものは次のようになります。/etc/sudo.confgksudokdesudo"password"

sudo -A -s ./script

sudoこれにより、資格情報のキャッシュが提供される可能性があることを忘れないでください。これにより、ごく最近使用された場合(デフォルトは5分?)、呼び出しを繰り返すと、別のパスワード要求を行う代わりに、キャッシュされたパスワード値が使用されます。 健全性/セキュリティ上の理由から、これがスクリプト(または他の場所)sudo -Kで他の引数なしで使用され、キャッシュされたクレデンシャルをすぐにクリアして(その使用にはパスワードは必要ありません)、その後のsudo使用では認証必要になるため、これが望ましくない場合。

1-編集して追加するvisudo場合は、rootとして使用することを忘れないでください。/etc/sudo.conf

# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass

于 2016-01-15T01:39:10.433 に答える
2

Cameron Tinkerのコメントで述べられているように、コマンドgnome-terminalとarguments -e "sudomakeinstall"を使用してデプロイステップを実行するようにQtCreatorを設定できます。

実質的にランニングと同じgnome-terminal -e "sudo make install"

画像は、この構成がQtCreatorでどのように表示されるかのスクリーンショットです:)

sudoを使用したQtCreatorは、gnomeターミナルプロジェクト設定を使用してインストール手順を実行します

gksudoUbuntuではデフォルトで推奨またはインストールされなくなりました

于 2018-06-15T14:53:01.207 に答える
0

gksudo(GNOMEで)またはkdesudo(KDEで)使用する必要があると思います。コマンドはウィンドウを使用してパスワードの入力を求めます。

于 2012-07-12T13:51:10.983 に答える