私は shut という名前のユーザーを作成しました。そのユーザー名を使用してログインするたびにマシンがシャットダウンするようにしました。そのために、.profile の最後に以下のコマンドを配置しました。
exec sudo shutdown -h now
しかし、これでは目的が達成されませんでした。ユーザーがシャットダウンしてログインすると、マシンがシャットダウンするのではなく、ログイン画面が再び表示されます。そのため、ユーザーはログインできませんが、同時に同じログイン画面が表示されます。
理由は、ユーザー shut のパスワードが提供されていないため、マシンがシャットダウンされないためだと思われます。また、exec のため、ログイン画面が戻ってきます (これは問題ありません)。
今、私の仕事を解決するには、上記の sudo コマンドが実行されたときに自動的にパスワードを取得する方法が必要です。確認したところ、オプションを使用する必要があるman sudo
と思います。-A
そのマニュアルページに従って、私は実行しました
SUDO_ASKPASS=/home/ravbholua/pass.txt
export SUDO_ASKPASS
そして、それが機能しているかどうかを確認するために、
ravbholua@ravbholua-Aspire-5315:~$ sudo -A pwd
sudo: unable to run /home/ravbholua/pass.txt: Permission denied
この出力から、このパス ファイルを実行して、パスワードを sudo への出力として提供する必要があることがわかります。以前は、pass.txt というファイルからパスワードが取得されると思っていたので、このファイルにパスワードを入力しました。しかし、そうではありませんでした!!!!!!!
何かご提案があればお願いします!
答え1
SUDO_ASKPASS は、ユーザーにパスワードの入力を求めるバイナリです。これを使用する例としては、GUI プログラムを使用しているときに、GUI にウィンドウをポップアップ表示して、ユーザーにパスワードの入力を求めることが挙げられます。マニュアル ページには、これについて次のように書かれています。
端末が利用できない場合、または -A オプションが指定されている場合に、パスワードを読み取るために使用されるヘルパー プログラムへのパスを指定します。
目的を達成するには、/etc/sudoers ファイルを編集して、「shut」ユーザーがパスワードを指定せずにシャットダウンを実行できるようにする必要があります。以下の行は、「shut」ユーザーが「すべての」マシンで「/sbin/shutdown -h now」および「/sbin/shutdown -r now」を実行できるようにします。
shut ALL = NOPASSWD: /sbin/shutdown -h を実行、/sbin/shutdown -r を実行
より安全でないオプションとしては、次のように sudo の '-S' オプションを使用して標準入力からパスワードを読み取り、パスワードをエコー出力する方法があります。
echo "パスワード" | sudo -S シャットダウン -h now