証人:
$ ps f
PID TTY STAT TIME COMMAND
31509 pts/3 Ss 0:01 -bash
27266 pts/3 S+ 0:00 \_ mysql -uroot -p
25210 pts/10 Ss+ 0:00 /bin/bash
24444 pts/4 Ss 0:00 -bash
29111 pts/4 S+ 0:00 \_ tmux attach
4833 pts/5 Ss+ 0:00 -bash
9046 pts/6 Ss 0:00 -bash
17749 pts/6 R+ 0:00 \_ ps f
4748 pts/0 Ss 0:00 -bash
14635 pts/0 T 0:02 \_ mysql -uroot -px xxxxxxxxxxxxxxxx
16210 pts/0 S+ 0:01 \_ mysql -uroot -px xxxxxxxxxxxxxxxx
Psはどのようにしてmysql
パスワードを隠すことを知りましたか?これを自分のスクリプトに組み込んで、特定のCLI属性を非表示にすることはできますか?
ps
はパスワードを隠しません。 mysqlなどのアプリケーションは、取得した引数リストを上書きします。短い時間枠(システムの高負荷によって拡張される可能性があります)があり、引数が上書きされるまで他のアプリケーションから見えることに注意してください。 プロセスを非表示にする 他のユーザーに役立ちます。一般に、コマンドラインごとよりもファイルを介してパスワードを渡す方がはるかに優れています。
この記事 では、Cについて説明しています。次の例では、すべてのコマンドライン引数を非表示/削除します。
#include <string.h>
int main(int argc, char **argv)
{
// process command line arguments....
// hide command line arguments
if (argc > 1) {
char *arg_end;
arg_end = argv[argc-1] + strlen (argv[argc-1]);
*arg_end = ' ';
}
// ...
}
https://stackoverflow.com/questions/724582/hide-arguments-from-ps と https://stackoverflow.com/questions/3830823/hiding-secret- from-command-line-parameter-on-unix 。
mysqlプログラムは、コマンドラインのパスワードをx
で置き換えます このコード行 :
while (*argument) *argument++= 'x'; // Destroy argument