LinuxにMySQLをインストールする場合は、「mysql
」という新しいユーザーアカウント ‘はmysqld
を実行するために作成されます サービス。しかし、なぜmysqlユーザーが/etc/passwd
にbashシェルを持っているのですか? ?通常、サービスはnologinユーザーとして実行され、シェルは/bin/false
に設定されます。 または/bin/nologin
/etc/passwd
にあります ファイル。つまり、アカウントはサービスを実行する資格がありますが、シェルアクセスはありません。私はこの設定がセキュリティを向上させると強く信じていました(コメントセクションで私の理解が間違っている場合は訂正してください)。 mysqlユーザーに提供されたシェルアクセスは意図的でしたか(または何らかの本当の目的がありますか)?調べてみましょう。
Redhatで提出されたバグレポートによると、mysqlプレインストールスクリプトは useraddを使用してユーザーを作成しているようです。 コマンドを実行し、「 -s」を使用しました ‘オプションを / bin / bashに設定 。
/usr/sbin/useradd -M -o -r -d /var/lib/mysql -s /bin/bash \ -c "MySQL Server" -u 27 mysql > /dev/null 2>&1 || :
この問題は、 Mike Rubel @ Redhatによって報告されました。 、 mysqlと言う人 ユーザーはnologinである必要があります デフォルトではユーザー。
しかし、Tom Lane(おそらくMySQL開発者の1人)がバグレポートの受け入れを拒否しているようです。彼はmysqlと言います アカウントはパスワードなしで作成され、最終的にログインアクセスを制限します。
マイクは答えました–脆弱な mysqld のため、動作はまだ異常です 攻撃者がSSHキーを/var/lib/mysql/.ssh/authorized_keys
にインストールできるようになります (mysqlのホームディレクトリ)、リモートシェルアクセスを許可します(これにより、パスワードのないアカウントは意味が少なくなります)。
マイクにはたくさんのサポートがありましたが、トムは mysqlの理由を正当化し続けました シェルアクセスを持つアカウント。 mysqlhotcopyなどのユーティリティがあると彼は言います 、 mysqluc シェルアクセスが必要です。また、MySQL管理者は mysqlに切り替えたい場合があります バックアップ操作を実行するユーザー。
MySQLユーザーへのシェルアクセスを拒否すると、サービスに影響しますか?
ええと、私はいくつかのコマンドがシェルアクセスを必要とするかもしれないことに同意します。しかし、最も人気のあるMySQLバックアップコマンド mysqldump mysqlユーザーとしてのシェルは必要ありません そうじゃない? MySQL管理者はmysqlに切り替える必要はありません 代わりに、バックアップを実行するためのユーザーアカウント mysqldump 有効なmysqlユーザー名、パスワード、データベースを提供することにより、任意のユーザーとして実行できます。 cronを介して自分のWebサイトのバックアップを実行します mysqldumpを使用します 。 mysqlに切り替えません ユーザーがそれを行います。
トムによると、それが mysqlの唯一の理由である場合 ユーザーがシェルにアクセスできるので、私は強く反対します。
そこで、mysql
を変更しました /bin/false
へのユーザーシェル /etc/passwd
にあります 。今まで問題は見られませんでした(将来的には問題がないことを願っています)。問題が発生した場合は、この記事に戻って更新します。
私はMySQL開発者でも、それを使用する専門家でもありません。しかし、私はmysqlユーザーがシェルアクセスを必要としないことを理解しているだけです。私は間違っているかもしれませんが、nologinとしてのmysqlはサーバー上で問題なく機能しています。
mysqlユーザーにシェルアクセスを許可しますか?よろしくお願いします。
情報:/ bin/falseと/sbin/nologinの違いを知りたい場合があります。