ps隠されたパスワードをどうやって知ることができますか?

ps隠されたパスワードをどうやって知ることができますか?

証人:

$ 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属性を隠すためにこれを私のスクリプトに統合することはできますか?

答え1

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

答え2

これmysqlプログラムはコマンドラインのパスワードをx次のように置き換えます。このコード行:

while (*argument) *argument++= 'x';     // Destroy argument

関連情報