パスワードを入力として受け取り、UNIX で「su」(ユーザーの切り替え) コマンドを実行するためにシェルを実行するプログラムがあります。しかし、パスワード変数を UNIX の su コマンドに渡す方法がわかりません。これに使用しなければならない言語はかなり限られています (UniBasic)。
何か案は?
パスワードを入力として受け取り、UNIX で「su」(ユーザーの切り替え) コマンドを実行するためにシェルを実行するプログラムがあります。しかし、パスワード変数を UNIX の su コマンドに渡す方法がわかりません。これに使用しなければならない言語はかなり限られています (UniBasic)。
何か案は?
それを行うための最良の方法は、パスワードを要求し、必要なコマンドを実行する setuid-root バイナリですが、所有していないと言う知識が必要です。代わりにsudo(1)を見ることをお勧めします。
別のユーザーとして localhost に ssh して、必要なコマンドを実行できます。または、sudo を使用して /etc/sudoers を編集し、sudo がパスワードを要求しないようにします。ただし、セキュリティに影響する可能性があります。
編集:投票するときは、理由を教えてください。私の答えは完璧ではないかもしれませんが、少なくともうまくいきます。私は、奇妙なユーザー名でしか実行できないライセンスソフトウェアのために自分でそれを行います.
コマンドライン引数としてパスワードを指定する必要はありません。@unwindの回答(スクリプトを非公開にすることができます)のせいではありませんが、誰かがプロセスのリストを実行すると、コマンド引数が表示され、問題のパスワードが表示される可能性があります。
Linux サーバーにある su のバージョンは、このようなオプションをサポートしていません。私はsudoをチェックしましたが、そうでもありません。安全な方法で行われることを保証し、(私が推測するに) 人々がスクリプトなどにパスワードを逐語的に入力するのを思いとどまらせるために、彼らは自分自身でプロンプトを表示したいと考えています。
標準入力以外の場所からこの入力を受け取るのに十分な柔軟性のないプログラムに複雑なユーザー入力をスクリプト化するように設計された「expect」ユーティリティを見ることもできます。