sudoを使用するときに重要なCLIパラメータがJournalctlに書き込まれるのを防ぐ方法は?

sudoを使用するときに重要なCLIパラメータがJournalctlに書き込まれるのを防ぐ方法は?

Ubuntu 16.04では、すべてのsudoコマンドが記録され、その一部にはログに残したくない機密パラメータ(プレーンテキストパスワードなど)が含まれています。これを防ぐ方法についていくつかのアイデアがありますが、理想的には十分に単純で一般的でなければならない正式な方法があるかどうかを知りたいです。

たとえば、次のコマンドを使用します。

$ sudo set_account.sh --password SbdLb9W --pin-number 1234 --other-options

ログログは次のように表示できます。

sudo set_account.sh --password ... --pin-number ... --other-options

ありがとうございます。

非常に役に立つ回答とコメントを送ってくださった皆さんに感謝します。環境変数とラッパースクリプトメソッドを引き続き使用するようです。

答え1

コマンドオプションにパスワードを入力しないでください。

正しい方法は、次の環境変数を使用することです。

$ MY_PASSWORD=s3cr3t ./mycommand

ただし、mycommand環境でパスワードを見つける方法を知る必要があります。

パスワードはシェル履歴に表示されますが、他のユーザーには表示されません。https://security.stackexchange.com/questions/138071/are-environment-variables-entered-directly-before-a-command-visible-to-other-

シェル履歴に表示したくない場合は、上記のコマンドをスクリプトに入れてスクリプトを実行します。

別のプロセスを呼び出す場合は、子プロセスにmycommand渡さないように注意してください。MY_PASSWORD

答え2

次のことができます。

$ rm -f /home/somewhere/new_account_john
$ touch /home/somewhere/new_account_john
$ chmod 600 /home/somewhere/new_account_john
$ echo "--password SbdLb9W --pin-number 1234" > /home/somewhere/new_account_john
$ sudo set_account.sh --read-options-from /home/somewhere/new_account_john --other-options
$ rm -f /home/somewhere/new_account_john

これはまだセキュリティ上のリスクをもたらし、誰かがプロセスのリストを読み、コマンドを見るpsことができます。 2番目のリスクは競争です。誰かがあなたの前にファイルに書き込んだり、echoあなたの前にファイルを変更しsudoたり、ファイルから読み取ったりする場合です。

ただし、直接の要求を処理することができます。

set_account.shコマンドを変更できない場合は、次のようにしてみてください。

$ sudo sh -c 'set_account.sh `cat /home/somewhere/new_account_john` --other-options'

上記の他のコマンドの代わりにsudosudoの後にcatを呼び出してみてください(しかしこれはシェルの引用構文によって異なります)。他のコマンドは変更されません。

関連情報