proftpdでUserPasswordを使ってアカウント管理(ftpasswd)

2005/09/19

proftpdはVine3.2配布版のままで、アカウント管理をLinuxシステム・アカウントとは別にすることが可能です。

MySQLなどと連動させる方法もありますが、proftpdを再コンパイルする必要があるので、ここでは簡単なテキスト・ファイルを利用してみることにします。

こうすることで、ftpのパスワードをLinuxのシステム・パスワードとは別のパスワードに設定することが可能ですので、セキュリティ的に有利ではないかと思います。 また、工夫すればftp専用アカウントを作ることもできます。


アカウント管理ツール ftpasswd のインストール

とても残念なのですが、Vine配布のrpmではアカウント管理ツールがインストールされていません。

perlスクリプト1個だけなのですが、これがないとアカウントの作成ができません。

まずはこれをインストールしましょう。 ここでは将来も考慮して、Vine配布rpmからインストールする方法で書きます。

  1. ソース・ファイルを取得します。一般ユーザーで行ってください。
    $ apt-get source proftpd
  2. 取得したソース・ファイルからftpasswdを抽出して/usr/bin以下へインストールします。
    $ cd ~/rpm/SOURCES/
    $ tar jxvf proftpd-1.2.10.tar.bz2
    $ cd ~/rpm/SOURCES/proftpd-1.2.10/contrib
    $ su
    # install -m 0700 ftpasswd /usr/bin
    # exit
  3. ソース・ファイルは必要なくなったので、削除しておきます。
    $ cd ~/rpm/SOURCES/
    $ rm -fr proftpd-1.2.10

proftpdの設定

/etc/proftpd.conf を編集して、以下だけ設定を変えればLinuxアカウントのパスワードではftpにログインできなくなります。

# パスワードファイルとグループファイルの場所を指定
AuthUserFile /etc/ftpd.passwd
AuthGroupFile /etc/ftpd.group
 
# 認証モジュールをファイル認証だけにする
AuthOrder mod_auth_file.c
 
# ドットファイルを表示する(必要なら追加してください)
ListOptions "-a"
 
# ユーザーのホーム・ディレクトリをrootに見せかける(必要なら追加してください)
# この例では、admグループ所属のユーザーだけは / から見せることになり、
# 他のユーザーは/home/USER/より上位のディレクトリは見れなくなります。
DefaultRoot ~ !adm

設定を変更したら「# /etc/init.d/proftpd restart」などとしてproftpdを再起動します。


アカウントの追加・削除

ftpasswdコマンドを使って、アカウントの追加・パスワード変更などを行います。

「ftpasswd --help」でおよその使い方はわかると思いますが、以下に少しまとめておきます。長いコマンドですが、すべて1行で入力する必要があります。

  • ユーザーの追加やパスワード変更
    ftpasswd --file /etc/ftpd.passwd --passwd --name USERNAME --uid 500 -gid 100 --home /home/USERNAME --shell /bin/sh
  • ユーザーの削除
    ftpasswd --file /etc/ftpd.passwd --passwd -delete-user --name USERNAME --uid 500 -gid 100 --home /home/USERNAME --shell /bin/sh
  • グループの追加
    ftpasswd --file /etc/ftpd.group --group --name GROUPNAME --gid 100
  • グループの削除
    ftpasswd --file /etc/ftpd.group --group --delete-group --name GROUPNAME --gid 100

(注)うちで試したところ、グループの削除は削除した旨のメッセージは表示されるんですが、うまく削除できないようです。バグかもしれませんね。
今のところ、/etc/ftpd.passwdを直決編集することになると思います。


もっと簡易的なコマンド

上記のftpasswdは、あまりに長いコマンドなので、簡易的なコマンドを作ってみました。 内部でftpasswdを呼び出すだけの単純なものです。

ユーザーの追加
パスワード変更
ftpuseradd USERNAME
ユーザーの削除 ftpuserdel USERNAME
グループの追加 ftpgroupadd GROUPNAME
グループの削除 ftpgroupdel GROUPNAME

UID、GID、シェルなどは/etc/passwdや/etc/groupから取得するように作りましたので、ftpのパスワードをLinuxシステム・パスワードと変えたいだけの場合、こちらのほうが便利ではないかと...

なお、(たぶん)ftpasswdのバグで、グループの削除はうまくいきまん。

この簡易版コマンドはftpuser.tar.gzをダウンロードして、
$ tar zxvf ftpuser.tar.gz
$ cd ftpuser
$ su
# install -m 0700 ftpuseradd ftpuserdel ftpgroupadd ftpgroupdel /usr/bin
# exit
$ cd ..
$ rm -fr ftpuser
こんな感じでインストールすると使えるようになると思います。

Copyright©2001-2019 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org