Linux安裝配置vsftp搭建FTP的詳細配置


這里主要是說vsftp的配置:基礎的可以參考Linux中VSFTP的配置

  轉自:https://www.jb51.net/article/103904.htm

修改配置文件

 配置文件/etc/vsftpd/vsftpd.conf

anonymous_enable=NO    # 不允許匿名訪問,禁用匿名登錄
chroot_local_user=YES   # 啟用限定用戶在其主目錄下
use_localtime=YES     # 使用本地時(自行添加)
chroot_list_enable=YES
local_enable=YES      # 允許使用本地帳戶進行FTP用戶登錄驗證
allow_writeable_chroot=YES # 如果啟用了限定用戶在其主目錄下需要添加這個配置,解決報錯 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
xferlog_enable=YES     # 啟用上傳和下載的日志功能,默認開啟。
local_umask=022      # 設置本地用戶默認文件掩碼022
# FTP上本地的文件權限,默認是077,不過vsftpd安裝后的配置文件里默認是022

虛擬用戶高級參數

•當virtual_use_local_privs=YES 時,虛擬用戶和本地用戶有相同的權限;
•當virtual_use_local_privs=NO  時,虛擬用戶和匿名用戶有相同的權限,默認是NO。
•當virtual_use_local_privs=YES,write_enable=YES時,虛擬用戶具有寫權限(上傳、下載、刪除、重命名)。
•當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,anon_upload_enable=YES時,虛擬用戶不能瀏覽目錄,只能上傳文件,無其他權限。
•當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=NO時,虛擬用戶只能下載文件,無其他權限。
•當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=YES時,虛擬用戶只能上傳和下載文件,無其他權限。
•當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_mkdir_write_enable=YES時,虛擬用戶只能下載文件和創建文件夾,無其他權限。
•當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_other_write_enable=YES時,虛擬用戶只能下載、刪除和重命名文件,無其他權限。

匿名登錄

$ ftp 192.168.188.114
 
Connected to 192.168.188.114.
220 (vsFTPd 3.0.2)
Name (192.168.188.114:kennywang): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||47867|).
150 Here comes the directory listing.
-rw-r--r--  1 0    0       12 Jan 18 06:31 README.md
drwxr-xr-x  2 0    0        6 Nov 05 19:43 pub
226 Directory send OK.

多用戶配置

多用戶配置需要自己手工添加配置,下面內容到vsftpd.conf末尾

# 
# 
 
use_localtime=YES     # 使用本地時(自行添加)
listen_port=21
chroot_local_user=YES   # 啟用限定用戶在其主目錄下
idle_session_timeout=300
 
data_connection_timeout=120 # 數據連接超時時間
guest_enable=YES       # 設定啟用虛擬用戶功能
guest_username=ftpuser    # 指定虛擬用戶的宿主用戶 ftpuser(就是我們后面會新建這個用戶)
# guest_username=www
# 如果ftp目錄是指向網站根目錄,用來上傳網站程序,
# 可以指定虛擬用戶的宿主用戶為nginx運行賬戶www,可以避免很多權限設置問題 
 
 
user_config_dir=/etc/vsftpd/vuser_conf  # 虛擬用戶配置文件目錄
virtual_use_local_privs=YES # NO時,虛擬用戶和匿名用戶有相同的權限,默認是NO
 
pasv_min_port=10060     # 被動模式最小端口號10060
pasv_max_port=10090     # 被動模式最大端口號10090
 
accept_timeout=5
connect_timeout=1

創建宿主用戶

新建系統用戶ftpuser,用戶目錄為/home/vsftpd, 用戶登錄終端設為/bin/false(即使之不能登錄系統)

# 方法一
# 創建用戶 ftpuser 指定 `/home/vsftpd` 目錄
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
 
# 設置用戶 ftpuser 的密碼
passwd ftpuser
# 把 /home/vsftpd 的所有權給ftpuser.root
chown -R ftpuser.root /home/vsftpd
 
# 方法二
useradd ftpuser -d /home/vsftpd -s /bin/false
chown ftpuser:ftpuser /home/vsftpd -R 
 
# 如果虛擬用戶的宿主用戶為www,需要這樣設置
# www目錄是你應用的目錄
chown www:www /home/www -R

刪除用戶 userdel ftpuser

touch /etc/vsftpd/vuser_passwd
# 編輯虛擬用戶名單文件:(
# 第一行賬號,第二行密碼,注意:不能使用root做用戶名,系統保留)
vi /etc/vsftpd/vuser_passwd
# 編輯內容,下面是 vuser_passwd 內容
wcj
123456
hss
123456
#保存退出

  生成虛擬用戶數據文件

db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db

  創建用戶配置

mkdir /etc/vsftpd/vuser_conf # 建立虛擬用戶個人vsftp的配置文件
cd /etc/vsftpd/vuser_conf   # 進入目錄
touch hss wcj         # 這里創建兩個虛擬用戶配置文件

  每一個文件配置文件都差不多,只是參數local_root不一樣。

local_root=/home/vsftpd/hss  # 用戶 hss 配置目錄,這個地方不一樣
write_enable=YES       # 允許本地用戶對FTP服務器文件具有寫權限
anon_world_readable_only=NO
anon_upload_enable=YES    # 允許匿名用戶上傳文件(須將全局的write_enable=YES,默認YES)
anon_mkdir_write_enable=YES  # 允許匿名用戶創建目錄
anon_other_write_enable=YES  # 允許匿名用戶刪除和重命名權限(自行添加)

創建用戶目錄

  每個用戶目錄文件夾是有root用戶創建的,也就是上面local_root配置目錄,其權限應設置為755。因為權限的問題在該文件夾內無法直接上傳文件。而如果設置為777則無法訪問,這是由於vsftpd的安全性設置。解決上傳問題的方法是在local_root文件夾內新建一個upload的文件夾,權限設置為777,可將文件上傳到該文件夾。

mkdir -p /home/vsftpd/hss   # 每個用戶對於一個目錄,創建兩個目錄“hss”、“wcj”
 
# 下面是目錄結構
/home/vsftpd
   ├── hss
   │  ├── filename.md
   │  └── upload
   └── wcj
     └── filename.md
 
 
# 賦予其權限
chmod -R 777 /var/vsftpd/hss/upload/
 
# 在/var/ftp下新建一個目錄來實現匿名用戶上傳
mkdir /var/ftp/upload

vsftpd中幾種用戶的區分:

本地用戶:用戶在FTP服務器擁有賬號,且該賬號為本地用戶的賬號,可以通過自己的賬號和口令進行授權登錄,登錄目錄為自己的home目錄$HOME

虛擬用戶:用戶在FTP服務器上擁有賬號,但該賬號只能用於文件傳輸服務。登錄目錄為某一特定的目錄,通常可以上傳和下載

匿名用戶:用戶在FTP服務器上沒有賬號,登錄目錄為/var/ftp

最后重啟vsftpd服務器

服務運維

systemctl restart vsftpd.service # 重啟服務
systemctl start vsftpd.service  # 啟動服務
systemctl status vsftpd.service  # 服務狀態查看

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM