ルートパスワードを求める(X)ダイアログボックスを持つBashスクリプト(kdesuの置き換え)

ルートパスワードを求める(X)ダイアログボックスを持つBashスクリプト(kdesuの置き換え)

(X)dialogを正しく実行するためのスクリプトとして使用していますが、特定のコマンドを実行するにはroot権限が必要です。スクリプトは .desktop ファイルで実行されるため、端末はユーザーには表示されません。たとえば、ここ

#!/bin/bash
Xdialog --msgbox "Welcome" 0 0
touch /root/testfile
Xdialog --msgbox "All OK" 0 0

コマンドtouchは実行されません。 1つの解決策は、次を使用することです。kdesu

kdesu touch /root/testfile

しかし、このアプローチには2つの問題があります。ユーザーは各コマンドにパスワードを入力する必要があり、 kdesu ウィンドウは残りのウィンドウと同じトピックに従わない。

ユーザーがsudoerではなくルートパスワードを提供したいと思います。

同様のスクリプトが見つかりましたここただし、実際のコマンドが以前のようにパスワードを受け入れないため、スクリプトには適用できませんsshpass

ベストアンサー1

1つの方法は、suスクリプトの冒頭で行うことです。ユーザーはスクリプトの起動時にルートパスワードを1回入力するだけです。これにより、root権限なしでコマンドを実行できますsu [username] -c [your command not to be executed with root privileges]

ただし、ここではダイアログボックスを使用してパスワードを要求することはできません。

おすすめ記事