[Linux] vsftpd

通常使用者的預設目錄是在/home/username之下
如果想將預設目錄更改至其他位置該如何設定
1、首先需開啟vsftpd的設定檔/etc/vsftpd.conf
    #vi /etc/vsftpd.conf
2、加入user_config_dir=/etc/vsftpd/vsftpd_user_conf這一行,指定使用者的設定檔目錄所在位置
3、接著,在/etc/vsftpd/下設立vsftpd_user_conf這個目錄
    #mkdir /etc/vsftpd/vsftpd_user_conf
4
、在該目錄內設立一個空白檔案,檔名為使用者名稱
    #touch root
   在該檔案中加入一行local_root=(想指定的目錄位置)
5
、接著重新啟動vsftp服務
    #systemctl stop vsftpd

    #systemctl start vsftpd
===================================================================
限制Userhome目錄。
chroot_local_user=YES預設讓實體用戶通通被 chroot
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list 
預設讓實體用戶通通被 chroot 而允許不必 chroot 的帳號才需要額外設定在chroot_list內。

allow_writeable_chroot=YES   ---->一定要加
===================================================================
#anonymous_enable=YES                             #  允許匿名登入  FTP
anonymous_enable=NO                                #  不允許匿名登入  FTP
local_enable=YES                                          #  允許本機使用者可以登入
write_enable=YES                                         #  允許使用者可以寫入檔案
#idle_session_timeout=600                         #  預設 600
idle_session_timeout=300                            #  idle 多久即斷線 300
data_connection_timeout=120                     #  資料連線斷線時間
chroot_local_user=YES                                 #  將使用者可瀏覽的目錄封鎖在自己的家目錄
chroot_list_enable=YES                                #  搭配下一個選項
#allow_writeable_chroot=YES
chroot_list_file=/etc/vsftpd/chroot_list     #  在此檔案裡記錄哪些使用者可以「不受」chroot 限制,可以瀏覽非自己的家目錄
listen=YES                                                     #  vsftpd 服務將以 standalone 獨立方式運作
pasv_enable=YES                                         #  啟用 passive 傳送
use_localtime=YES                                       #  使用本地(本機)的時間
connect_timeout=60                                   #  連線斷線時間
accept_timeout=60                                     #  
max_per_ip=1                                             #  允許每個使用者的連線數,0為不限制
local_max_rate=1000000000                    #   最大的傳輸速度,單位 Bytes
===================================================================
只讓幾位本機使用者可以登入
將不準登入的使用者加入/etc/vsftpd/ftpuesrs /etc/vsftpd/user_list
===================================================================
系統服務(daemons)
現在我們知道服務的管理是透過 systemd,而 systemd 的設定檔大部分放置於 /usr/lib/systemd/system/ 目錄內。但是 Red Hat 官方文件指出, 該目錄的檔案主要是原本軟體所提供的設定,建議不要修改!而要修改的位置應該放置於 /etc/systemd/system/ 目錄內。
我們將 vsftpd port 改成 555 了。不過,因為某些原因,所以你可能需要使用到兩個埠口,分別是正常的 21 以及特殊的 555 這兩個 port 都啟用的情況下,你可能就得要使用到兩個設定檔以及兩個啟動腳本設定了!現在假設是這樣:
  • 預設的 port 21:使用 /etc/vsftpd/vsftpd.conf 設定檔,以及 /usr/lib/systemd/system/vsftpd.service 設定腳本;
  • 特殊的 port 555:使用 /etc/vsftpd/vsftpd2.conf 設定檔,以及 /etc/systemd/system/vsftpd2.service 設定腳本。
1.建立好所需的設定檔
#cd /etc/vsftpd
#cp vsftpd.conf vsftp2.conf
#vim vsftp2.conf
listen_port=555
#diff vsftpd.conf vsftp2.conf   #兩個設定檔只有listen_port不同
2.開始處理啟動腳本設定
#cd /etc/systemd/system
# cp /usr/lib/systemd/system/vsftpd.service vsftpd2.service
#vim vsftpd2.service
[Unit]
Description=Vsftpd second ftp daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd2.conf

[Install]
WantedBy=multi-user.target
# 重點在改了 vsftpd2.conf 這個設定檔喔!
3.重新載入 systemd 的腳本設定檔內容
# systemctl daemon-reload
#systemctl list-unit-files --all | grep vsftpd
vsftpd.service                              enabled
vsftpd2.service                             disabled
vsftpd@.service                             disabled
vsftpd.target                               disabled
# systemctl status vsftpd2.service
vsftpd2.service - Vsftpd second ftp daemon
   Loaded: loaded (/etc/systemd/system/vsftpd2.service; disabled)
   Active: inactive (dead)
# systemctl restart vsftpd.service vsftpd2.service
#systemctl enable  vsftpd.service vsftpd2.service
#systemctl status  vsftpd.service vsftpd2.service
#netstat -tlnp
tcp6       0      0 :::555         :::*              LISTEN   12672/vsftpd
tcp6       0      0 :::21          :::*              LISTEN   12670/vsftpd