1. 程式人生 > >詳解CentOS7安裝配置vsftp搭建FTP

詳解CentOS7安裝配置vsftp搭建FTP

安裝配置vsftpd做FTP服務,我們的Web應用使用git管理進行迭代,公共檔案軟體儲存使用開源網盤Seafile來管理,基本夠用。想不到FTP的使用的場景,感覺它好像老去了,雖然現在基本沒有用到這個工具,但剛好公司公司刷一個硬體需要使用FTP來下載配置檔案,於是研究使用了一下,記錄了一下使用過程。

安裝

在安裝前檢視是否已安裝vsftpd

?
1 2 3 4 5 6 7 8 9 10 # 檢視是否已安裝 方法一 [[email protected] ~]# rpm -q vsftpd vsftpd-3.0.2-21.el7.x86_64 # 檢視是否已安裝 方法二 [[email protected]
~]
# vsftpd -v vsftpd: version 3.0.2 # 安裝 vsftpd [[email protected] ~]# yum -y install vsftpd

檢視位置

?
1 2 [[email protected] ~]# whereis vsftpd vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz

啟動vsftpd服務

?
1 systemctl start vsftpd.service

關閉firewall和SELinux

?
1 2 3 4 5 6 7 8 9 10 11 12 13 setenforce 0 # 設定SELinux 成為permissive模式 (關閉SELinux) setenforce 1 # 設定SELinux 成為enforcing模式 (開啟SELinux) # 或者修改配置 vi /etc/selinux/config # SELINUX=enforcing # 註釋掉 # SELINUXTYPE=targeted # 註釋掉 SELINUX=disabled # 增加 :wq! #儲存退出 setenforce 0

或者設定SELinux

?
1 2 getsebool -a |
grep ftp setsebool -P ftpd_full_access on
?
1 2 3 4 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall開機啟動

如果你不願意關閉防火牆,需要防火牆新增FTP服務。

?
1 2 firewall-cmd --permanent --zone=public --add-service=ftp firewall-cmd --reload

修改配置檔案

配置檔案/etc/vsftpd/vsftpd.conf

?
1 2 3 4 5 6 7 8 9 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時,虛擬使用者只能下載、刪除和重新命名檔案,無其他許可權。

匿名登入

安裝完預設情況下是開啟匿名登入的,對應的是 /var/ftp 目錄,這時只要服務啟動了,就可以直接連上FTP了。預設使用者名稱是ftp,密碼是空的。如果你在配置裡面配置了anonymous_enable=NO,匿名就無法登入。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $ 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末尾

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # # 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(即使之不能登入系統)

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # 方法一 # 建立使用者 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

建立虛擬使用者檔案

?
1 2 3 4 5 6 7 8 9 10 touch /etc/vsftpd/vuser_passwd # 編輯虛擬使用者名稱單檔案:( # 第一行賬號,第二行密碼,注意:不能使用root做使用者名稱,系統保留) vi /etc/vsftpd/vuser_passwd # 編輯內容,下面是 vuser_passwd 內容 wcj 123456 hss 123456 #儲存退出

生成虛擬使用者資料檔案

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

建立使用者配置

?
1 2 3 mkdir /etc/vsftpd/vuser_conf # 建立虛擬使用者個人vsftp的配置檔案 cd /etc/vsftpd/vuser_conf # 進入目錄 touch hss wcj # 這裡建立兩個虛擬使用者配置檔案

每一個檔案配置檔案都差不多,只是引數local_root不一樣。

?
1 2 3 4 5 6 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,可將檔案上傳到該資料夾。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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伺服器

?
1 systemctl restart vsftpd.service

服務運維

?
1 2 3 systemctl restart vsftpd.service # 重啟服務 systemctl start vsftpd.service # 啟動服務 systemctl status vsftpd.service # 服務狀態檢視

FTP命令

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ftp> ascii # 設定以ASCII方式傳送檔案(預設值) ftp> bell # 每完成一次檔案傳送,報警提示. ftp> binary # 設定以二進位制方式傳送檔案. ftp> bye # 終止主機FTP程序,並退出FTP管理方式. ftp> case # 當為ON時,用MGET命令拷貝的檔名到本地機器中,全部轉換為小寫字母. ftp> cd # 同UNIX的CD命令. ftp> cdup # 返回上一級目錄. ftp> chmod # 改變遠端主機的檔案許可權. ftp> close # 終止遠端的FTP程序,返回到FTP命令狀態, 所有的巨集定義都被刪除. ftp> delete # 刪除遠端主機中的檔案. ftp> dir [remote-directory] [local-file] # 列出當前遠端主機目錄中的檔案.如果有本地檔案,就將結果寫至本地檔案. ftp> get [remote-file] [local-file] # 從遠端主機中傳送至本地主機中. ftp> help [command] # 輸出命令的解釋. ftp> lcd # 改變當前本地主機的工作目錄,如果預設,就轉到當前使用者的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的狀態. ftp> system # 顯示遠端主機系統型別. ftp> user user-name [password] [account] # 重新以別的使用者名稱登入遠端主機. ftp> ? [command] # 同HELP. [command]指定需要幫助的命令名稱。如果沒有指定 command,ftp 將顯示全部命令的列表。 ftp> ! # 從 ftp 子系統退出到外殼。

關閉FTP連線

bye

exit

quit

下載檔案

?
1 2 ftp> get readme.txt # 下載 readme.txt 檔案 ftp> mget *.txt # 下載

上傳檔案

?
1 2 ftp> put /path/readme.txt # 上傳 readme.txt 檔案 ftp> mput *.txt # 可以上傳多個檔案

狀態碼

  • 230 - 登入成功
  • 200 - 命令執行成功
  • 150 - 檔案狀態正常,開啟資料連線埠
  • 250 - 目錄切換操作完成
  • 226 - 關閉資料連線埠,請求的檔案操作成功

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援指令碼之家。

原文連結:https://segmentfault.com/a/1190000008161400

相關推薦

CentOS7安裝配置vsftp搭建FTP

安裝配置vsftpd做FTP服務,我們的Web應用使用git管理進行迭代,公共檔案軟體儲存使用開源網盤Seafile來管理,基本夠用。想不到FTP的使用的場景,感覺它好像老去了,雖然現在基本沒有用到這個工具,但剛好公司公司刷一個硬體需要使用FTP來下載配置檔案,於是研究使用

Linux安裝配置samba服務器實現文件共享

通信 pan strong 網上 實驗環境 rpm 上傳文件 vpd 過濾 概述Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的

Centos7 下編譯安裝Nginx和yum搭建Nginx兩種方法

Nginx 在併發與負載能力方面確實優於 apache,大多數網站都採用基於Nginx 來搭建網站。 下面就來介紹Nginx的搭建 一 原始碼安裝nginx 首先先來安裝Nginx,但是本地的yum倉庫中只有apache,並沒有Nginx,這就需要手動安裝了。 Nginx 的下載官網是這個http

Supervisor安裝配置(Linux/Unix/Centos7程序管理工具)

Supervisor(http://supervisord.org/)是用Python開發的一個client/server服務,是Linux/Unix系統下的一個程序管理工具,不支援Windows系統。它可以很方便的監聽、啟動、停止、重啟一個或多個程序。用Supervisor管理的程序,當一個程

centos7安裝配置zabbix4.0步驟--實測沒問題!!!

實驗拓撲:192.168.80.181 Zabbix監控伺服器        主機名:www.aa.com                 192.168.80.182 被監控伺服器(客戶端)     主機名:www.ab.com實驗說明:搭建基於Zabbix的IDC監控平臺

rsync安裝配置以及同步過程

ffffff password .rpm 依次 文件同步 存在 word chmod yum 安裝 實驗環境:centos7.3實驗主機信息:192.168.101.185-服務器端 192.168.101.208-客戶端實驗目的:使用rsync將服務器端的文件同步到客

CentOS7.4搭建Tomcat構建Java Web站點(內附源碼包)

pack ++ lld pan c-c++ shutdown 客戶端 gre cdd Java簡介 Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為

centos7虛擬機器安裝elasticsearch5.0.x-安裝篇(自己做測試了,es啟動有錯誤可以在這上面找)

本篇文章主要介紹了centos7虛擬機器安裝elasticsearch5.0.x-安裝篇,具有一定的參考價值,感興趣的小夥伴們可以參考一下。 centos7虛擬機器安裝elasticsearch5.0.x-安裝篇 請預先安裝jdk詳細步驟請參考://www.jb51.net/softjc/1

CentOS 7安裝MariaDB 10以及相關配置

show utf8 內容 操作 4.0 ant star emctl baseurl CentOS 7安裝MariaDB 10詳解以及相關配置 第一步:添加 MariaDB yum 倉庫 首先在CentOS操作系統中/etc/yum.repos.d/目錄下添加 Mari

Virtual Box配置CentOS7網路

之前很多次安裝CentOS7虛擬機器,每次配置網路在網上找教程,今天總結一下,全圖文配置,方便以後檢視。 Virtual Box可選的網路接入方式包括: NAT 網路地址轉換模式(NAT,Network Address Translation)Bridged Ada

hadoop配置檔案安裝及相關操作

           1.在conf/hadoop-env.sh檔案中增加:export JAVA_HOME=/home/Java/jdk1.6            2.在conf/core-site.xml檔案中增加如下內容:  <!-- fs.default.name- 這是一個描述叢集中Na

Nginx主配置參數,Nginx配置網站

lis javascrip ref 錯誤日誌 127.0.0.1 服務器配置 設置 代理服務器 減少 1.Niginx主配置文件參數詳解   a.Linux中安裝nginx。博文地址為:http://www.cnblogs.com/cindy-cindy/p/68474

Git服務器安裝安裝遇到問題解決方案【轉】

bsp erb 倉庫 .... gnu libcurl 執行 body ebs 轉自:http://www.cnblogs.com/grimm/p/5368777.html git是一個不錯的版本管理的工具。現在自己在搞一個簡單的應用程序開發,想使用git來進行管理。

Centos7安裝配置Apache+PHP+Mysql+phpmyadmin

css isa roo awk perm mha pack 操作 req 轉載自: Centos7安裝配置Apache+PHP+Mysql+phpmyadmin 一、安裝Apache yum install httpd 安裝成功後,Apache操作命令: systemc

Maven及其環境配置

下使用 .html tor update baidu load set mode dex Maven詳解 一.前言 以前做過的項目中,沒有真正的使用過Maven,只知道其名聲很大,其作用是用來管理jar 包的。最近一段時間在項目過程中使用Maven,用Mav

Linux下使用Corosync+Pacemaker安裝

corosync pacemaker 珠聯璧合 Corosync詳解OpenAIS概述OpenAIS是基於SA Forum 標準的集群框架的應用程序接口規範。OpenAIS提供一種集群模式,這個模式包括集群框架,集群成員管理,通信方式,集群監測等,能夠為集群軟件或工具提供滿足 AIS標準的集

zabbix安裝部署(Server端篇)

官網下載 libc 發現 trapper 分布式系統 .so libcurl figure database Linux下常用的系統監控軟件有Nagios、Cacti、Zabbix、Monit等,這些開源的軟件,可以幫助我們更好的管理機器,在第一時間內發現,並警告系統

IntelliJ IDEA安裝配置搭建Spring MVC

oracl 下載地址 git https ins www. htm 代碼 img 安裝前必備軟件:   1、jdk1.8.0_144安裝包   2、IntelliJ IDEA 2016.1.1(64)   3、Tomcat安裝包 4、Mysql、MySQL-J

CentOS7安裝配置PostgreSQL9.6

list 用戶密碼 創建數據庫 同名 current har -a -- tcp 參考文檔: 安裝初始化:https://www.postgresql.org/download/linux/redhat/ 簡單使用:https://mozillazg.github.io

開發人員學Linux(11):CentOS7安裝配置持續集成工具Jenkins

centos linux ci 持續集成 1.前言在上一篇講述了如何在CentOS7中安裝並使用代碼質量管理平臺SonarQube6.4,在上一篇中講到了SonarQube支持多種方式來分析代碼質量,其中有一種方式之一就是在持續集成工具中來自動完成代碼質量分析,本篇就是繼續上一篇來講述如何安裝