contribインストール

PostgreSQLには基本機能以外にもいろいろと追加できる機能がある。それらがcontribに纏められている(…言葉としておかしいかもしれない。)

  • pgbench:ベンチマーク試験(性能試験)実施モジュール
  • pgcrypto:暗号関連関数
  • pgstattuple:統計情報取得関数

といったようなモノがいっぱいある。8.3.3のマニュアルを確認してみたところ『追加で提供されるモジュール』として載っていた。

PostgreSQL-8.3.3 マニュアル - 付録 F. 追加で提供されるモジュール
http://www.postgresql.jp/document/pg833doc/html/contrib.html

そんなわけでこれらのモジュールを(全てとは言わないが)いつでも使えるようにしておく為にコンパイルをしておく。

contribモジュールのコンパイル&インストール

PostgreSQL本体と同様にpostgresユーザにてコンパイルを行う。インストールのみrootユーザ。

[postgres@CentOS-5.2 ~]$ cd /usr/local/src/postgresql-8.3.3/contrib/
[postgres@CentOS-5.2 contrib]$ make
 :
[postgres@CentOS-5.2 contrib]$ echo $?
0
[postgres@CentOS-5.2 contrib]$ 
[postgres@CentOS-5.2 contrib]$ su - 
パスワード: **********
[root@CentOS-5.2 ~]# cd /usr/local/src/postgresql-8.3.3/contrib/
[root@CentOS-5.2 contrib]# make install
 :
[root@CentOS-5.2 contrib]# echo $?
0
[root@CentOS-5.2 contrib]# 

これでとりあえずの準備が整った♪
だが全てが終わっているわけではない。例えば、pgbenchはコマンドとしてインストールされているのでパスさえ通っていれば使用可能であるが、pgstattupleは該当のSQLを実行しなければ使用する事はできない。それら個別のモジュールについては別途エントリにて。

コマンド/ファイル

  • コマンド
    • /bin/su
    • /usr/bin/make

FTPクライアント - RootFTP

先日Vectorからダウンロードしてみたものの、急いでいたので長年使い慣れているFFFTPに流れてしまっていたので、今日は『RootFTP』をvistaにインストールしてみる事とする。

RootFTP
http://www.vector.co.jp/soft/win95/net/se086354.html

対応OSにvistaが無かったのがインストールしてみると正常に動いているようだ。(インストールというよりは展開してexeを実行しているだけだが)。FFFTPの左右分割とは違って上下に分割されている。・・・なんて思っていたら左右の表示やフォルダツリー(?)の表示/非表示も可能なようだ。少なくとも自分が普段使っているFTPクライアントの機能は押さえているという感じ。つまり自分はFFFTPでもRootFTPでも仕事に差し支えは無いと言う事だ。どっちが使いやすいかはやってみなければわからないけど。というわけでしばらくRootFTPを使ってみようかしら。

自動起動スクリプト(rc)

PostgreSQL自動起動スクリプト(rc)が欲しい。というわけで先日インストールしたソースの配下を漁ってみる。
…がいくら漁ってみても見つからない。で、googlingしてみたら皆さん自作しているようだ。でもgoogleで引っかかったものは正直なところ『う〜ん…』といった内容のもの。いやそんなに見てないけどさ。最低限の事はやってるけどあとちょっと足りないという感じ。そこでピンッと思いついた。RPMでもそもそもあるんだから自動起動スクリプトだって用意されているはずだよね。だったらそこから引っこ抜いてくれば良いじゃん!って。というわけで自動起動スクリプト(rc)を引っこ抜いてみる事にする。

RPMパッケージからファイルを取り出す
http://d.hatena.ne.jp/sin-j/20080812/1218527559

取り出してはみたものの、ふと思う。これって勝手に編集して使い回しても良いのかしら?んー…きっと大丈夫だよね。というわけで取り出したファイルを元に大幅に編集して検証環境用の自動起動スクリプトを作成する。

スクリプト

#!/bin/sh
# postgresql    This is the init script for starting up the PostgreSQL
#               server
#
# chkconfig: - 64 36
# description: Starts and stops the PostgreSQL backend daemon that handles \
#              all database requests.
# processname: postmaster
# pidfile: /var/run/postmaster.pid

# PGVERSION is the full package version, e.g., 7.4.7
PGVERSION=8.3.3
# PGMAJORVERSION is major version, e.g., 7.4 (this should match PG_VERSION)
PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'`

# Source function library.
. /etc/rc.d/init.d/functions

# Get function listing for cross-distribution logic.
TYPESET=`typeset -f|grep "declare"`

# Get config.
. /etc/sysconfig/network

# Find the name of the script
NAME=`basename $0`
if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ]
then
        NAME=${NAME:3}
fi

# For SELinux we need to use 'runuser' not 'su'
if [ -x /sbin/runuser ]
then
    SU=runuser
else
    SU=su
fi


# Set defaults for configuration variables
PGENGINE=/usr/local/postgresql-8.3.3/bin
PGPORT=5432
PGDATA=/opt/postgresql-8.3.3
PGLOG=/opt/postgresql-8.3.3/pgstartup.log

# Override defaults from /etc/sysconfig/pgsql if file is present
[ -f /etc/sysconfig/pgsql/${NAME} ] && . /etc/sysconfig/pgsql/${NAME}

export PGDATA
export PGPORT

# Check that networking is up.
# Pretty much need it for postmaster.
[ "${NETWORKING}" = "no" ] && exit 1

[ -f "$PGENGINE/postmaster" ] || exit 1

script_result=0

start(){
        PSQL_START=$"Starting ${NAME} service: "

        # Make sure startup-time log file is valid
        if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
        then
                touch "$PGLOG" || exit 1
                chown postgres:postgres "$PGLOG"
                chmod go-rwx "$PGLOG"
                [ -x /usr/bin/chcon ] && /usr/bin/chcon -u system_u -r object_r -t postgresql_log_t "$PGLOG" 2>/dev/null
        fi

        # Check for the PGDATA structure
        if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ]
        then
        # Check version of existing PGDATA

                if [ x`cat "$PGDATA/PG_VERSION"` != x"$PGMAJORVERSION" ]
                then
                        SYSDOCDIR="(Your System's documentation directory)"
                        if [ -d "/usr/doc/postgresql-$PGVERSION" ]
                        then
                                SYSDOCDIR=/usr/doc
                        fi
                        if [ -d "/usr/share/doc/postgresql-$PGVERSION" ]
                        then
                                SYSDOCDIR=/usr/share/doc
                        fi
                        if [ -d "/usr/doc/packages/postgresql-$PGVERSION" ]
                        then
                                SYSDOCDIR=/usr/doc/packages
                        fi
                        if [ -d "/usr/share/doc/packages/postgresql-$PGVERSION" ]
                        then
                                SYSDOCDIR=/usr/share/doc/packages
                        fi
                        echo
                        echo $"An old version of the database format was found."
                        echo $"You need to upgrade the data format before using PostgreSQL."
                        echo $"See $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information."
                        exit 1
                fi

        # No existing PGDATA! Initdb it.

        else
                echo -n $"Initializing database: "
                if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]
                then
                        mkdir -p "$PGDATA" || exit 1
                        chown postgres:postgres "$PGDATA"
                        chmod go-rwx "$PGDATA"
                fi
                # Clean up SELinux tagging for PGDATA
                [ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"
                # Initialize the database
                $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident sameuser'" >> "$PGLOG" 2>&1 < /dev/null
                # Create directory for postmaster log
                mkdir "$PGDATA/pg_log"
                chown postgres:postgres "$PGDATA/pg_log"
                chmod go-rwx "$PGDATA/pg_log"

                [ -f "$PGDATA/PG_VERSION" ] && echo_success
                [ ! -f "$PGDATA/PG_VERSION" ] && echo_failure
                echo
        fi

        echo -n "$PSQL_START"
        $SU -l postgres -c "$PGENGINE/postmaster -p '$PGPORT' -D '$PGDATA' ${PGOPTS} &" >> "$PGLOG" 2>&1 < /dev/null
        sleep 2
        pid=`pidof -s "$PGENGINE/postmaster"`
        if [ $pid ] && [ -f "$PGDATA/postmaster.pid" ]
        then
                success "$PSQL_START"
                touch /var/lock/subsys/${NAME}
                head -n 1 "$PGDATA/postmaster.pid" > "/var/run/postmaster.${PGPORT}.pid"
                echo
        else
                failure "$PSQL_START"
                echo
                script_result=1
        fi
}

stop(){
        echo -n $"Stopping ${NAME} service: "
        $SU -l postgres -c "$PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast" > /dev/null 2>&1 < /dev/null
        ret=$? 
        if [ $ret -eq 0 ]
        then
                echo_success
        else
                echo_failure
                script_result=1
        fi
        echo
        rm -f "/var/run/postmaster.${PGPORT}.pid"
        rm -f "/var/lock/subsys/${NAME}"
}

restart(){
    stop
    start
}

condrestart(){
    [ -e /var/lock/subsys/${NAME} ] && restart
}

condstop(){
    [ -e /var/lock/subsys/${NAME} ] && stop
}

reload(){
    $SU -l postgres -c "$PGENGINE/pg_ctl reload -D '$PGDATA' -s" > /dev/null 2>&1 < /dev/null
}

# This script is slightly unusual in that the name of the daemon (postmaster)
# is not the same as the name of the subsystem (postgresql)

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status postmaster
        script_result=$?
        ;;
  restart)
        restart
        ;;
  condrestart)
        condrestart
        ;;
  condstop)
        condstop
        ;;
  reload|force-reload)
        reload
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|condstop|reload|force-reload}"
        exit 1
esac

exit $script_result

正直なところここまでいらないなぁと思いつつも引っこ抜くのが面倒だったのでこれだけ。元からのやつにほとんど手を入れていませぬ。でも起動・停止ともにできたのでOKでしょ。

自動起動(rc)に登録しておく

[root@CentOS-5.2 ~]# chkconfig --list postgresql
サービス postgresql は chkconfig をサポートしますが実行レベルで参照されていません (run 'chkconfig --add postgresql')
[root@CentOS-5.2 ~]# chkconfig --add postgresql
[root@CentOS-5.2 ~]# chkconfig --list postgresql
postgresql      0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@CentOS-5.2 ~]# chkconfig  postgresql on
[root@CentOS-5.2 ~]# chkconfig --list postgresql
postgresql      0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@CentOS-5.2 ~]# 

確認。

[root@CentOS-5.2 ~]# ls -l /etc/rc.d/rc?.d/*postgresql
lrwxrwxrwx 1 root root 20  8月 13 01:41 /etc/rc.d/rc0.d/K36postgresql -> ../init.d/postgresql
lrwxrwxrwx 1 root root 20  8月 13 01:41 /etc/rc.d/rc1.d/K36postgresql -> ../init.d/postgresql
lrwxrwxrwx 1 root root 20  8月 13 01:41 /etc/rc.d/rc2.d/S64postgresql -> ../init.d/postgresql
lrwxrwxrwx 1 root root 20  8月 13 01:41 /etc/rc.d/rc3.d/S64postgresql -> ../init.d/postgresql
lrwxrwxrwx 1 root root 20  8月 13 01:41 /etc/rc.d/rc4.d/S64postgresql -> ../init.d/postgresql
lrwxrwxrwx 1 root root 20  8月 13 01:41 /etc/rc.d/rc5.d/S64postgresql -> ../init.d/postgresql
lrwxrwxrwx 1 root root 20  8月 13 01:41 /etc/rc.d/rc6.d/K36postgresql -> ../init.d/postgresql
[root@CentOS-5.2 ~]# 

ちなみに…このK○○とS○○は、

  • K:kill - 停止
  • S:start - 起動

であり、番号は起動もしくは停止していく順番である。小さい番号から起動・停止を行っていく。この番号とrunlevelについてはそのうち。

追記

コメントを頂いたので追記。
ソースを展開したディレクトリ配下

contrib/start-scripts

[postgres@CentOS-5.2 start-scripts]$ find /usr/local/src/postgresql-8.3.3/contrib/start-scripts/ -type f
/usr/local/src/postgresql-8.3.3/contrib/start-scripts/freebsd
/usr/local/src/postgresql-8.3.3/contrib/start-scripts/linux
/usr/local/src/postgresql-8.3.3/contrib/start-scripts/osx/install.sh
/usr/local/src/postgresql-8.3.3/contrib/start-scripts/osx/PostgreSQL
/usr/local/src/postgresql-8.3.3/contrib/start-scripts/osx/README
/usr/local/src/postgresql-8.3.3/contrib/start-scripts/osx/StartupParameters.plist
[postgres@CentOS-5.2 start-scripts]$ 

ほほぅ。freebsd, linux, osx用のモノが既に用意されているとのこと。linuxファイルを確認すると…こっちの方がすっきりしてる!RPMのパッケージから拾ってきた方は最初の起動等を考えられているのか(?)ディレクトリが無かったら作ったりなんかいろいろなチェックが入っているけど、starts-scripts/linuxの方はとってもスッキリ。検証サーバもスクリプトを置き換えだ!prefix, PGDATAのパスを書き換えて、serviceコマンドで動作確認。

> ishikawa84g 様
ありがとうございました。とーってもお勉強になりました。

RPMパッケージからファイルを取り出す

RPMパッケージの中から1つのファイルだけが欲しい!と言う事が(滅多に無いが極たまに)ある。そんな時はこの方法。
RPMパッケージはcpio形式で圧縮されているファイルのようだ。cpioファイルに変換してしまえば後は思うがまま。

[worker@CentOS-5.2 ~]$ rpm2cpio postgresql-server-8.1.11-1.el5_1.1.i386.rpm > postgresql-server-8.1.11-1.el5_1.1.i386.cpio

だが、cpioファイルにするまでもなく『|』を使う方法もある。

[worker@CentOS-5.2 ~]$ rpm2cpio postgresql-server-8.1.11-1.el5_1.1.i386.rpm | cpio --list
 :

これで該当RPMパッケージにどんなファイルが同梱されているかがわかる。これは下記コマンドと同等か。

[worker@CentOS-5.2 ~]$ rpm -qlp postgresql-server-8.1.11-1.el5_1.1.i386.rpm 

取り出したいファイル名がわかればあとは簡単。
もっと簡単な方法があるのかもしれないけど、cpioコマンドをほとんど使わない自分はここまでしかわからなかった。

[worker@CentOS-5.2 ~]$ rpm2cpio postgresql-server-8.1.11-1.el5_1.1.i386.rpm  | cpio -id '*postgresql'

これで『postgresql』で終わっているファイル(パス含む)が解凍される。

改善できればなぁというのが下記の内容

  • 正規表現でひっかかるもの全てがcpioファイルから取り出される。
  • ディレクトリ構造を持ったまま取り出される。

上記2点を改善できるcpioコマンドマスターのかた教えてください♪

vsftpdをxinetdで動作させる

vistaから検証環境へのFTP接続をする機会はそうそう多くない。だから常時起動しているのはリソース的にもったいない。でもたまに必要。そんな時にいつも検証環境に一度ログインをして、rootになって、vsftpdのデーモンを起動するのにはちょっと手間がかかる。そういった『あまり頻繁には必要ではないけれども、必要な時は手間を掛けないで起動したい』と言ったものはxinetdで起動してしまおう。

xinetd
スーパーサーバと呼ばれ、とあるポートに対するアクセスがあった場合に、各ポートに対応するデーモンを起動する。

vsftpdの自動起動設定を削除

vsftpdが自動で起動されてしまう設定を削除しておく。

[worker@CentOS-5.2 ~]$ su - 
パスワード:
[root@CentOS-5.2 ~]# 
[root@CentOS-5.2 ~]# chkconfig --list vsftpd
vsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@CentOS-5.2 ~]# chkconfig --del vsftpd
[root@CentOS-5.2 ~]# chkconfig --list vsftpd
サービス vsftpd は chkconfig をサポートしますが実行レベルで参照されていません (run 'chkconfig --add vsftpd')
[root@CentOS-5.2 ~]# 

chkconfigコマンドで/etc/rc.d/?.d 配下のシンボリックリンクは削除してしまうが、/etc/rc.d/init.d/vsftpd自体は必要になるかもしれないのでファイルを削除はしない。

vsftpd設定変更

vsftpdをデーモン(サービス)で起動していた場合、下記の設定が有効になっていたはずである。

/etc/vsftpd/vsftpd.conf

listen=YES

これはvsftpdがスタンドアローンで動作するという設定なので、xinetd経由で起動する場合には上記設定を変更する。コメントアウトで構わない。

/etc/vsftpd/vsftpd.conf

# listen=YES

vsftpdのxinetd用ファイルを準備する

vsftpdをRPMでインストールしている場合には、xinetd用のファイルが既に準備されているのでコピーをする。もちろん下記のファイルを自身で記述しても問題ない。

[root@CentOS-5.2 ~]# cp /usr/share/doc/vsftpd-2.0.5/vsftpd.xinetd /etc/xinetd.d/vsftpd
[root@CentOS-5.2 ~]# 

ファイルを編集する。

1 : # default: off
2 : # description: The vsftpd FTP server serves FTP connections. It uses \
3 : #       normal, unencrypted usernames and passwords for authentication.
4 : service ftp
5 : {
6 :         socket_type             = stream
7 :         wait                    = no
8 :         user                    = root
9 :         server                  = /usr/sbin/vsftpd
10:         server_args             = /etc/vsftpd/vsftpd.conf
11:         nice                    = 10
12:         disable                 = no
13:         flags                   = IPv4
14: }

12行目の『disable』の値を『yes』から『no』へ編集する。

xinetd設定ファイル再読込

xinetdの設定ファイルを再読込みさせる。xinetdの再起動でも設定ファイルは再読込されるので、どちらでも構わない。

[root@CentOS-5.2 ~]# service xinetd reload
設定を再読み込み:                                          [  OK  ]
[root@CentOS-5.2 ~]# 

xinetdベースのサービス確認

下記コマンドでxinetdベースのサービスとして設定されているかを確認する。

[root@curious-52 ~]# chkconfig --list
 :
 xinetd ベースのサービス:
 :
        vsftpd:         on

『xinetdベースのサービス』にvsftpdが入っている事、状態が『on』になっている事を確認する。状態が『off』の場合は/etc/xinetd.d/vsftpdファイルのdisable欄の編集が正常にされていないという事なので要確認。

ローカルから接続確認

vistaから接続ができればOK。

[root@CentOS-5.2 ~]# ps -ef | grep vsftpd
root      7925 22855  0 21:04 pts/0    00:00:00 grep vsftpd
[root@CentOS-5.2 ~]# ps -ef | grep vsftpd
worker    7928     1  0 21:04 ?        00:00:00 vsftpd /etc/vsftpd/vsftpd.conf
root      7930 22855  0 21:04 pts/0    00:00:00 grep vsftpd
[root@CentOS-5.2 ~]# ps -ef | grep vsftpd
root      7932 22855  0 21:05 pts/0    00:00:00 grep vsftpd
[root@CentOS-5.2 ~]# 

1回目のpsコマンド:vistaからFTP接続をする前
2回目のpsコマンド:vistaからFTP接続中
3回目のpsコマンド:vistaからのFTP接続を切断

上記を見てもらえればわかるように、必要な時にだけvsftpdが起動している状態になってくれた。満足♪


コマンド/ファイル

  • コマンド
    • /bin/su
    • /sbin/chkconfig
    • /sbin/service
  • ファイル
    • /etc/vsftpd/vsftpd.conf
    • /etc/xinetd.d/vsftpd

実行中のクエリを確認

いつも忘れてしまうのでメモメモ。
現在実行中のクエリ(SQL)を確認するには…

mysql> show processlist;
+----+------+-----------+--------+---------+------+----------------+----------------------------------+
| Id | User | Host      | db     | Command | Time | State          | Info                             |
+----+------+-----------+--------+---------+------+----------------+----------------------------------+
| 12 | root | localhost | zabbix | Query   |    1 | creating table | ALTER TABLE httptest TYPE=InnoDB |
| 13 | root | localhost | mysql  | Query   |    0 | NULL           | show processlist                 |
+----+------+-----------+--------+---------+------+----------------+----------------------------------+
2 rows in set (0.00 sec)

mysql>

vsftpdにrootで接続する

vsftpdのデフォルト設定ではrootユーザでのFTP接続は制限されているようだ。まぁ当然と言えば当然なのかもしれない。
…けどやっぱり不便に感じる時もあるのでrootユーザでの接続を許可できるようにしておこう。また他のユーザでの接続制限の設定をどこで設定すれば良いのかも知っておきたいから。
今回の目的『vsftpdの接続制限設定を知る』

設定ファイルは /etc/vsftpd/ 配下にありそうだ。

[root@CentOS-5.2 vsftpd]# find /etc/vsftpd/ 
/etc/vsftpd/
/etc/vsftpd/user_list
/etc/vsftpd/ftpusers
/etc/vsftpd/vsftpd_conf_migrate.sh
/etc/vsftpd/vsftpd.conf
[root@CentOS-5.2 vsftpd]# 

vsftpd.conf

vsftpd自体の設定ファイルのようだ。下記のような設定項目がある。設定項目と設定値をそれぞれ見てみよう。

  • anonymous_enable=YES

annoymousユーザ(匿名ユーザ)での接続を許可するか。匿名ユーザにはパスワード無しで接続が可能。デフォルト設定では接続可能。試しにFFFTPで接続時にannoymousにチェックを入れて接続してみよう。ユーザにannoymous、パスワードに何かしらの値が自動的に入って接続してみると正常に繋がるようだ。ログインディレクトリは…これどこだろう?後で調べてみよう。

  • connect_from_port_20=YES

・・・よくわからない。とりあえずこいつを無効にするとFTPクライアントによっては使えない奴がでてくるようだ。試しにNOで起動してみたが、FFFTPでは問題なく接続できた。

  • dirmessage_enable=YES

ディレクトリ毎のメッセージを表示するかの設定だそうだ。デフォルト設定ではYES。試しにworkerユーザのホームディレクトリに.messageファイルを作成してみる。中身は適当にメッセージを。FFFTPでは下のウィンドウにメッセージが確かに表示された!ftpコマンドでもログイン後に『230-message』と.messageファイルに書いてあるメッセージが230-と行頭に付けられて表示される。

  • listen=YES

スタンドアローンモード(?)で起動する・・・だそうだ。listen_ipv6という設定もあるらしいが同時使用はできないとのこと。つまりはサービス(デーモン)として起動できるかできないかって事だよね。

  • local_enable=YES

ローカルユーザがシステムにFTP接続できるかどうか。デフォルトではYES。

  • local_umask=022

FTP接続した後のアップロード時等のファイル作成時に適用されるumask。

  • pam_service_name=vsftpd

vsftpd用のPAMサービスネームを設定…。PAM?今後の要調査。

  • tcp_wrappers=YES

/etc/hosts.allow, /etc/hosts.deny ファイルによるアクセス制御を行うか。デフォルトではYES。

  • userlist_enable=YES

userlist_file項目に設定したユーザ一覧ファイルに記述されたユーザのFTP接続を制限する。デフォルトでは/etc/vsftpd/user_listが設定されているようだ。

  • write_enable=YES

デフォルトYES。DELE,PNFR,STORなどのファイルシステムを変更するコマンドが使用可能。

  • xferlog_enable=YES

ログ出力するかどうか。デフォルトYES。出力するログは/var/log/vsftpd.log

  • xferlog_std_format=YES

デフォルトYES。YESだとFTPサーバに接続しただけのログは出力されない。ファイル転送のみログ出力。

他にもいろいろ設定項目があるようだが、今回は割愛。そのうちやってみよう。


user_list

vsftpd.confのuserlist_enableがYESになっている時のデフォルトファイル。
このファイルからrootをコメントアウトしてvsftpdを再起動してみたもののrootでは接続できない。ちなみにこのファイルに記述されているユーザでFTP接続をすると、ユーザ名を入れた後、即失敗する。コメントアウトしたユーザはパスワードまでは聞かれるが正しいパスワードを入力しても失敗する。


ftpusers

このファイルに記述されているユーザは接続できない。user_listよりも優先されるとのこと。
ここからもrootをコメントアウトしてvsftpdを再起動して接続してみたところ、rootユーザでも接続が可能となった。


コマンド/ファイル

  • コマンド
    • /usr/bin/find
  • ファイル
    • /etc/vsftpd/user_list
    • /etc/vsftpd/ftpusers
    • /etc/vsftpd/vsftpd.conf