仕事でftp を使うことがたまにあります。その時、sftp やvsftpd を使用することは多いのですが、proftpd は使ったことがなかったので、今回その備忘録として残します
Proftpd インストールする前の前準備
proftpd インストールするためにepel が必要になるので、先にインストールしていきましょう。dnf update は任意ですが、update しないとたまにインストールできない場合があるので、先にupdate すること推奨します
# パッケージアップデート
dnf update (-y)
# epel インストール
dnf install epel-release
Proftpd インストールしていこう
proftpd をインストールするには crb とepel のrepository を指定する必要があります。
dnf install --enablerepo=crb,epel proftpd
AlmaLinux 9 - CRB 6.2 MB/s | 3.8 MB 00:00
Extra Packages for Enterprise Linux 9 - x86_64 14 MB/s | 23 MB 00:01
Last metadata expiration check: 0:00:01 ago on Thu 10 Oct 2024 12:46:25 PM UTC.
Dependencies resolved.
=============================================================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================================================
Installing:
proftpd x86_64 1.3.8b-3.el9 epel 3.2 M
Installing dependencies:
libmemcached-awesome x86_64 1.1.0-12.el9 crb 110 k
libsodium x86_64 1.0.18-8.el9 epel 161 k
Transaction Summary
=============================================================================================================================================================
Install 3 Packages
Total download size: 3.4 M
Installed size: 9.8 M
Is this ok [y/N]:
proftpd がインストールできたら、起動していく前に少し設定ファイルを確認していきましょう!!!
Proftpd のconf ファイル確認してみよう
初期で有効化されているconf の設定は以下になります。コメントアウトしてない部分を取り出してみましょう。
grep -v '^\s*#' proftpd.conf
Include /etc/proftpd/modules.conf
---------------------------------------------------------------------
ServerName "ProFTPD server"
ServerIdent on "FTP Server ready."
ServerAdmin root@localhost
DefaultServer on
DefaultRoot ~ !adm
AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c
UseReverseDNS off
User nobody
Group nobody
MaxInstances 20
UseSendfile off
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogOptions -Timestamp -Hostname +RoleBasedProcessLabels
ControlsEngine on
ControlsACLs all allow user root
ControlsSocketACL allow user *
ControlsLog /var/log/proftpd/controls.log
<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
AdminControlsACLs all allow user root
</IfModule>
<IfModule mod_vroot.c>
VRootEngine on
</IfModule>
<IfDefine TLS>
Include /etc/proftpd/mod_tls.conf
</IfDefine>
<IfModule mod_ban.c>
Include /etc/proftpd/mod_ban.conf
</IfModule>
<IfModule mod_qos.c>
Include /etc/proftpd/mod_qos.conf
</IfModule>
<Global>
Umask 022
AllowOverwrite yes
<Limit ALL SITE_CHMOD>
AllowAll
</Limit>
</Global>
<IfDefine ANONYMOUS_FTP>
Include /etc/proftpd/anonftp.conf
</IfDefine>
Include /etc/proftpd/conf.d/*.conf
proftpd のパスワードとグループ管理を楽にしたいので、passwd とgroup のファイルを指定して、ユーザ作成していきましょう。なので、この設定を足してあげましょう
ファイル名は任意で問題ないです!
AuthUserFile /etc/ftpdpasswd
AuthGroupFile /etc/ftpdgroup
そして、ユーザ作成していきましょう!ftppasswdコマンドを叩いていこうと思ったら、command not found が表示されました。
ftppasswd --passwd ....
command not found
どうもproftpd-utils というのをインストールしたら、その中にftppasswd が入っているようです。
dnf install proftpd-utils
そうすると、ftppasswd が使えるようになりました!!
touch ftpdpasswd
touch ftpdgroup
ftpasswd --passwd --file=/etc/ftpdpasswd --name=test-user --uid=48 --gid=48 --home=/var/www/html --shell=/bin/shell
そうすると、password を入力してくださいとの表示がでるので、パスワードを適当に入れていき、成功するとftpdpasswd にshadow みたいに入力されるようになっています。
そして、syntax check をして問題ないことを確認できたら、proftpd を起動していきましょう!!
proftpd -t
Checking syntax of configuration file
Syntax check complete
(問題があったらエラーが表示されます)
systemctl start proftpd
systemctl enable proftpd
まとめ
ftppasswd の設定自体は簡単にできるので、みなさんも時と場合に応じて設定してみてください!!!