パスワードを利用して安全にプログラムを提供

パスワードを利用して安全にプログラムを提供

理解してからコマンドラインでパスワードを使用する問題、問題なくプログラムにパスワードを提供する方法を見つける必要があります(パスワードはどこかに記録されません)。

Apache、FastCGI、PHP、およびMySQLソースからLAMPサーバー全体を自動的にインストールするbashスクリプトがあります。これらのインストールにはパスワード、特にMySQLが必要です。

パスワードを漏らさずにスクリプトを完全に自動化するにはどうすればよいですか?

編集(6月9日、3:55 UTC):
コマンドラインからrootを介してパスワードを使用してmysqlを呼び出します。

root@dor-desktop:/home/dor# PASS=`cat /home/dor/tmpf/pass`
root@dor-desktop:/home/dor# mysql -u root -p"$PASS"
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6

(私たちの場合はPASS = "p4ssw0rd")通常のユーザー(dor)を介して実行し、以下を実行します
ps aux | grep mysqlパスワードを表示しない
(一部)ps出力は次のとおりです。

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      3562  0.0  0.0  34156  2864 pts/0    S+   05:53   0:00 mysql -u root -px xxxxxx

どうやってこれができますか?

ベストアンサー1

アップデート関連:

プロセスが開始されると、パラメータを格納するための専用メモリ領域と、渡されたパラメータの数を知らせるintがあります。

MEMORY
argc    2
argv[0] program_name
argv[1] foo
argv[2] bar

MySQLはコマンドラインを介してパスワードが渡されたことを確認し-p、表示されない新しい変数にコピーされると、xそのメモリ領域を 'es'で上書きします。

簡単に言うと:

argc 2
argv[1] -p
argv[2] p4ssw0rd

new_var = copy(argv[2]);
argv[2] = "xxxxx";

client/mysqladmin.ccソースコードにあります。

  case 'p':
      ...
      opt_password=my_strdup(argument,MYF(MY_FAE));
      while (*argument) 
          *argument++= 'x';     /* Destroy argument */

実行するとパラメータ( )のメモリ領域をps読み込むargv[N]のであるxxxx

パスワードは短時間だけ表示されますが、数回のCPUサイクル中にのみ表示されます。


--init-file特別なオプションと手順を使用してMySQLパスワードを更新できます。C.5.4.1.2。ルートパスワードのリセット:Unixシステム

mysqld_safe --init-file=/home/me/mysql-init &

編集する:

〜のように@ギルスできると言うechoprintfまたはhereスクリプトのマニュアルを使用してください。

.my.cnfホームディレクトリに追加するか(一時的な) 保管と使用--defaults-extra-fileオプション。(後でより早くコマンドラインに適切なオプションを追加する必要があると思います。)ユーザーを含めることもできます。また参考にしてください追加使いたくない場合は、オプション名にただこのファイルは構成として機能します。

[client]
user=foo
password='password!'
shell> chmod 400 my_tmp.cnf
shell> mysql --defaults-extra-file=my_tmp.conf -...

オプションで、[client]グループ化はmysqld構成をスキップできます。

以下も使用できます。MYSQL_PWD環境変数ですが、これを行う必要があります。いいえ多くの実装では、Linuxのファイルに環境をリストするのと同じように使用できますpsps -e/proc/<PID>/environ

tr '\0' '\n' < /proc/<PID>/environ

このトピックに関する追加情報ここ

また、見たいと思うかもしれませんMySQL設定ユーティリティこれにより、ホームディレクトリ()の暗号化されたファイルにパスワードを保存できます.mylogin.cnf

おすすめ記事