Plesk上のFTPパスワードをコマンドラインから確認する方法
2013年6月28日
Pleskでは、FTPパスワードなどのパスワード情報は、MySQLデータベースで管理しています。
Plesk管理用データベース psa にアクセスして、FTPパスワードを直接参照するコマンドをご紹介します。
FTPアカウントを「ftpaccount」とすると、コマンドラインから以下のように入力します。
FTPパスワード「passworddesu」が得られます。
[注意]データベースpsaのパスワードが記載された /etc/psa/.psa.shadow が読める権限で実行してください。本例ではroot権限で実行しています
# mysql -u admin -p`cat /etc/psa/.psa.shadow` psa -e "select password from accounts where id = (select account_id from sys_users where login= 'ftpaccount')" +--------------+ | password | +--------------+ | passworddesu | +--------------+
解説
FTPアカウントはUnixユーザで、sys_usersというテーブルで管理されます。
sys_usersテーブルのloginがFTPアカウント名で、account_idによってパスワードとひもづけられます。
sys_usersテーブルの構造
+---------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | serviceNodeId | int(10) unsigned | NO | MUL | 0 | | | login | varchar(20) | NO | | NULL | | | account_id | int(10) unsigned | NO | MUL | NULL | | | mapped_to | int(10) unsigned | YES | MUL | NULL | | | home | varchar(255) | NO | | NULL | | | shell | varchar(255) | NO | | NULL | | | quota | bigint(20) unsigned | NO | | 0 | | +---------------+---------------------+------+-----+---------+----------------+
あとは、account_idをaccountsテーブルで検索し、passwordフィールドを取得するだけです
accountsテーブルの構造
+----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | type | varchar(32) | NO | | plain | | | password | text | YES | | NULL | | +----------+------------------+------+-----+---------+----------------+