詳解CentOS7安裝配置vsftp搭建FTP
安裝配置vsftpd做FTP服務(wù),我們的Web應(yīng)用使用git管理進行迭代,公共文件軟件存儲使用開源網(wǎng)盤Seafile來管理,基本夠用。想不到FTP的使用的場景,感覺它好像老去了,雖然現(xiàn)在基本沒有用到這個工具,但剛好公司公司刷一個硬件需要使用FTP來下載配置文件,于是研究使用了一下,記錄了一下使用過程。
安裝
在安裝前查看是否已安裝vsftpd
# 查看是否已安裝 方法一 [root@localhost ~]# rpm -q vsftpd vsftpd-3.0.2-21.el7.x86_64 # 查看是否已安裝 方法二 [root@localhost ~]# vsftpd -v vsftpd: version 3.0.2 # 安裝 vsftpd [root@localhost ~]# yum -y install vsftpd
查看位置
[root@localhost ~]# whereis vsftpd vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
啟動vsftpd服務(wù)
systemctl start vsftpd.service
關(guān)閉firewall和SELinux
setenforce 0 # 設(shè)置SELinux 成為permissive模式 (關(guān)閉SELinux) setenforce 1 # 設(shè)置SELinux 成為enforcing模式 (開啟SELinux) # 或者修改配置 vi /etc/selinux/config # SELINUX=enforcing # 注釋掉 # SELINUXTYPE=targeted # 注釋掉 SELINUX=disabled # 增加 :wq! #保存退出 setenforce 0
或者設(shè)置SELinux
getsebool -a | grep ftp setsebool -P ftpd_full_access on
systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall開機啟動
如果你不愿意關(guān)閉防火墻,需要防火墻添加FTP服務(wù)。
firewall-cmd --permanent --zone=public --add-service=ftp firewall-cmd --reload
修改配置文件
配置文件/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 # 設(shè)置本地用戶默認文件掩碼022 # FTP上本地的文件權(quán)限,默認是077,不過vsftpd安裝后的配置文件里默認是022
虛擬用戶高級參數(shù)
- 當virtual_use_local_privs=YES 時,虛擬用戶和本地用戶有相同的權(quán)限;
- 當virtual_use_local_privs=NO 時,虛擬用戶和匿名用戶有相同的權(quán)限,默認是NO。
- 當virtual_use_local_privs=YES,write_enable=YES時,虛擬用戶具有寫權(quán)限(上傳、下載、刪除、重命名)。
- 當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,anon_upload_enable=YES時,虛擬用戶不能瀏覽目錄,只能上傳文件,無其他權(quán)限。
- 當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=NO時,虛擬用戶只能下載文件,無其他權(quán)限。
- 當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=YES時,虛擬用戶只能上傳和下載文件,無其他權(quán)限。
- 當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_mkdir_write_enable=YES時,虛擬用戶只能下載文件和創(chuàng)建文件夾,無其他權(quán)限。
- 當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_other_write_enable=YES時,虛擬用戶只能下載、刪除和重命名文件,無其他權(quán)限。
匿名登錄
安裝完默認情況下是開啟匿名登錄的,對應(yīng)的是 /var/ftp 目錄,這時只要服務(wù)啟動了,就可以直接連上FTP了。默認用戶名是ftp,密碼是空的。如果你在配置里面配置了anonymous_enable=NO,匿名就無法登錄。
$ 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.
多用戶配置
多用戶配置需要自己手工添加配置,下面內(nèi)容到vsftpd.conf末尾
# # use_localtime=YES # 使用本地時(自行添加) listen_port=21 chroot_local_user=YES # 啟用限定用戶在其主目錄下 idle_session_timeout=300 data_connection_timeout=120 # 數(shù)據(jù)連接超時時間 guest_enable=YES # 設(shè)定啟用虛擬用戶功能 guest_username=ftpuser # 指定虛擬用戶的宿主用戶 ftpuser(就是我們后面會新建這個用戶) # guest_username=www # 如果ftp目錄是指向網(wǎng)站根目錄,用來上傳網(wǎng)站程序, # 可以指定虛擬用戶的宿主用戶為nginx運行賬戶www,可以避免很多權(quán)限設(shè)置問題 user_config_dir=/etc/vsftpd/vuser_conf # 虛擬用戶配置文件目錄 virtual_use_local_privs=YES # NO時,虛擬用戶和匿名用戶有相同的權(quán)限,默認是NO pasv_min_port=10060 # 被動模式最小端口號10060 pasv_max_port=10090 # 被動模式最大端口號10090 accept_timeout=5 connect_timeout=1
創(chuàng)建宿主用戶
新建系統(tǒng)用戶ftpuser,用戶目錄為/home/vsftpd, 用戶登錄終端設(shè)為/bin/false(即使之不能登錄系統(tǒng))
# 方法一 # 創(chuàng)建用戶 ftpuser 指定 `/home/vsftpd` 目錄 useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser # 設(shè)置用戶 ftpuser 的密碼 passwd ftpuser # 把 /home/vsftpd 的所有權(quán)給ftpuser.root chown -R ftpuser.root /home/vsftpd # 方法二 useradd ftpuser -d /home/vsftpd -s /bin/false chown ftpuser:ftpuser /home/vsftpd -R # 如果虛擬用戶的宿主用戶為www,需要這樣設(shè)置 # www目錄是你應(yīng)用的目錄 chown www:www /home/www -R
刪除用戶 userdel ftpuser
建立虛擬用戶文件
touch /etc/vsftpd/vuser_passwd # 編輯虛擬用戶名單文件:( # 第一行賬號,第二行密碼,注意:不能使用root做用戶名,系統(tǒng)保留) vi /etc/vsftpd/vuser_passwd # 編輯內(nèi)容,下面是 vuser_passwd 內(nèi)容 wcj 123456 hss 123456 #保存退出
生成虛擬用戶數(shù)據(jù)文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db chmod 600 /etc/vsftpd/vuser_passwd.db
創(chuàng)建用戶配置
mkdir /etc/vsftpd/vuser_conf # 建立虛擬用戶個人vsftp的配置文件 cd /etc/vsftpd/vuser_conf # 進入目錄 touch hss wcj # 這里創(chuàng)建兩個虛擬用戶配置文件
每一個文件配置文件都差不多,只是參數(shù)local_root不一樣。
local_root=/home/vsftpd/hss # 用戶 hss 配置目錄,這個地方不一樣 write_enable=YES # 允許本地用戶對FTP服務(wù)器文件具有寫權(quán)限 anon_world_readable_only=NO anon_upload_enable=YES # 允許匿名用戶上傳文件(須將全局的write_enable=YES,默認YES) anon_mkdir_write_enable=YES # 允許匿名用戶創(chuàng)建目錄 anon_other_write_enable=YES # 允許匿名用戶刪除和重命名權(quán)限(自行添加)
創(chuàng)建用戶目錄
每個用戶目錄文件夾是有root用戶創(chuàng)建的,也就是上面local_root配置目錄,其權(quán)限應(yīng)設(shè)置為755。因為權(quán)限的問題在該文件夾內(nèi)無法直接上傳文件。而如果設(shè)置為777則無法訪問,這是由于vsftpd的安全性設(shè)置。解決上傳問題的方法是在local_root文件夾內(nèi)新建一個upload的文件夾,權(quán)限設(shè)置為777,可將文件上傳到該文件夾。
mkdir -p /home/vsftpd/hss # 每個用戶對于一個目錄,創(chuàng)建兩個目錄“hss”、“wcj” # 下面是目錄結(jié)構(gòu) /home/vsftpd ├── hss │ ├── filename.md │ └── upload └── wcj └── filename.md # 賦予其權(quán)限 chmod -R 777 /var/vsftpd/hss/upload/ # 在/var/ftp下新建一個目錄來實現(xiàn)匿名用戶上傳 mkdir /var/ftp/upload
vsftpd中幾種用戶的區(qū)分:
本地用戶:用戶在FTP服務(wù)器擁有賬號,且該賬號為本地用戶的賬號,可以通過自己的賬號和口令進行授權(quán)登錄,登錄目錄為自己的home目錄$HOME
虛擬用戶:用戶在FTP服務(wù)器上擁有賬號,但該賬號只能用于文件傳輸服務(wù)。登錄目錄為某一特定的目錄,通??梢陨蟼骱拖螺d
匿名用戶:用戶在FTP服務(wù)器上沒有賬號,登錄目錄為/var/ftp
最后重啟vsftpd服務(wù)器
systemctl restart vsftpd.service
服務(wù)運維
systemctl restart vsftpd.service # 重啟服務(wù) systemctl start vsftpd.service # 啟動服務(wù) systemctl status vsftpd.service # 服務(wù)狀態(tài)查看
FTP命令
ftp> ascii # 設(shè)定以ASCII方式傳送文件(缺省值) ftp> bell # 每完成一次文件傳送,報警提示. ftp> binary # 設(shè)定以二進制方式傳送文件. ftp> bye # 終止主機FTP進程,并退出FTP管理方式. ftp> case # 當為ON時,用MGET命令拷貝的文件名到本地機器中,全部轉(zhuǎn)換為小寫字母. ftp> cd # 同UNIX的CD命令. ftp> cdup # 返回上一級目錄. ftp> chmod # 改變遠端主機的文件權(quán)限. ftp> close # 終止遠端的FTP進程,返回到FTP命令狀態(tài), 所有的宏定義都被刪除. ftp> delete # 刪除遠端主機中的文件. ftp> dir [remote-directory] [local-file] # 列出當前遠端主機目錄中的文件.如果有本地文件,就將結(jié)果寫至本地文件. ftp> get [remote-file] [local-file] # 從遠端主機中傳送至本地主機中. ftp> help [command] # 輸出命令的解釋. ftp> lcd # 改變當前本地主機的工作目錄,如果缺省,就轉(zhuǎn)到當前用戶的HOME目錄. ftp> ls [remote-directory] [local-file] # 同DIR. ftp> macdef # 定義宏命令. ftp> mdelete [remote-files] # 刪除一批文件. ftp> mget [remote-files] # 從遠端主機接收一批文件至本地主機. ftp> mkdir directory-name # 在遠端主機中建立目錄. ftp> mput local-files # 將本地主機中一批文件傳送至遠端主機. ftp> open host [port] # 重新建立一個新的連接. ftp> prompt # 交互提示模式. ftp> put local-file [remote-file] # 將本地一個文件傳送至遠端主機中. ftp> pwd # 列出當前遠端主機目錄. ftp> quit # 同BYE. ftp> recv remote-file [local-file] # 同GET. ftp> rename [from] [to] # 改變遠端主機中的文件名. ftp> rmdir directory-name # 刪除遠端主機中的目錄. ftp> send local-file [remote-file] # 同PUT. ftp> status # 顯示當前FTP的狀態(tài). ftp> system # 顯示遠端主機系統(tǒng)類型. ftp> user user-name [password] [account] # 重新以別的用戶名登錄遠端主機. ftp> ? [command] # 同HELP. [command]指定需要幫助的命令名稱。如果沒有指定 command,ftp 將顯示全部命令的列表。 ftp> ! # 從 ftp 子系統(tǒng)退出到外殼。
關(guān)閉FTP連接
bye
exit
quit
下載文件
ftp> get readme.txt # 下載 readme.txt 文件 ftp> mget *.txt # 下載
上傳文件
ftp> put /path/readme.txt # 上傳 readme.txt 文件 ftp> mput *.txt # 可以上傳多個文件
狀態(tài)碼
- 230 - 登錄成功
- 200 - 命令執(zhí)行成功
- 150 - 文件狀態(tài)正常,開啟數(shù)據(jù)連接端口
- 250 - 目錄切換操作完成
- 226 - 關(guān)閉數(shù)據(jù)連接端口,請求的文件操作成功
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- windows系統(tǒng)搭建FTP服務(wù)器圖文教程
- 最新window?server?2012搭建FTP服務(wù)的詳細步驟
- Windows Server 2008 R2 ent下FTP服務(wù)搭建教程
- windows Server 2008R2 FTP服務(wù)器搭建圖文教程
- Windows IIS配置與Ftp服務(wù)搭建
- win11下FTP服務(wù)器搭建圖文教程
- Win7搭建FTP服務(wù)器 的方法步驟(圖文)
- 圖文詳解Ubuntu搭建Ftp服務(wù)器的方法(包成功)
- linux下用Proftpd搭建ftp服務(wù)器及配置方法
- window搭建ftp服務(wù)器詳細教程
相關(guān)文章
linux查看主板內(nèi)存槽與內(nèi)存信息的命令dmidecode方法
下面小編就為大家?guī)硪黄猯inux查看主板內(nèi)存槽與內(nèi)存信息的命令dmidecode方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11Linux自動化構(gòu)建工具make和Makefile詳解
這篇文章主要介紹了Linux如何自動化構(gòu)建工具make和makefile,文章中有詳細的圖片示例,對學習有一定的參考價值,感興趣的小伙伴可以參考一下2023-04-04Centos7的apache網(wǎng)站環(huán)境搭建wordpress
本篇文章給大家詳細分析了在Centos7的apache網(wǎng)站環(huán)境搭建wordpress的詳細操作方法,有興趣的朋友參考下。2018-02-02Ubuntu 18.04中截圖工具shutter的編輯按鈕不可用的解決辦法
Shutter是一個由第三方提供的在Ubuntu上運行的截圖工具。這篇文章主要介紹了Ubuntu 18.04中截圖工具shutter的編輯按鈕不可用的解決辦法及Ubuntu18.04 截圖工具推薦,需要的朋友可以參考下2018-08-08Linux內(nèi)核設(shè)備驅(qū)動之proc文件系統(tǒng)筆記整理
今天小編就為大家分享一篇關(guān)于Linux內(nèi)核設(shè)備驅(qū)動之proc文件系統(tǒng)筆記整理,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12CentOS7 mini的安裝和靜態(tài)ip設(shè)置教程
本篇文章主要介紹了CentOS7 mini的安裝和靜態(tài)ip設(shè)置教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02