[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、在該目錄內設立一個空白檔案,檔名為使用者名稱
4、在該目錄內設立一個空白檔案,檔名為使用者名稱
#touch root
在該檔案中加入一行local_root=(想指定的目錄位置)
5、接著重新啟動vsftp服務
5、接著重新啟動vsftp服務
#systemctl stop vsftpd
#systemctl start vsftpd
===================================================================
===================================================================
限制User在home目錄。
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
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