FTP的客戶端有不少種,較爲常見的是網頁瀏覽器,如:firefox等。node
通常操做系統都提供了基礎的命令行方式的FTP客戶端。輸入「ftp」或者「ftp服務器地址」就可使用命令行方式。下面列舉了一些經常使用的FTP命令。數據庫
遠程命令:vim
cd 改變所在目錄瀏覽器
ls 查看當前目錄下文件列表安全
get 從服務器下載當個文件服務器
mget 從服務器下載多個文件session
put 向服務器上傳單個文件app
mput 向服務器上傳多個文件tcp
pwd 顯示服務器當前目錄ide
quit 退出ftp程序
本地命令:
!ls 顯示客戶端當前目錄下的文件列表
!cd 改變客戶端當前所在目錄
!pwd 顯示客戶端當前目錄
VSFTPD服務器
VSFTPD的安裝
咱們爲了安裝安裝包的簡單,首先先架設一個本地的YUM倉庫,配置本地YUM源。後期會介紹YUM的配置。使用yum 安裝vsftpd
[root@xingzheson /]# yum install vsftpd -y
若是系統中開啓了SELinux,那麼須要執行下面的命令,使得VSFTPD能夠被正常訪問
[root@xingzheson /]# setsebool -P ftpd_disable_trans 1
VSFTPD安裝完成後,默認的主配置文件是 /etc/vsftpd/vsftpd.conf 。下面按自上而下的順序介紹此文件的參數設定。
anonymous_enable=YES
容許匿名訪問,即容許anonymous帳號訪問FTP服務。
local_enable=YES
容許使用本機賬號登陸
write_enable=YES
用戶能夠讀寫
local_umask=022
默認掩碼爲022,即默認建立的文件權限是755
#anon_upload_enable=YES
是否容許匿名用戶上傳文件夾,默認是註釋掉的
#anon_mkdir_write_enable=YES
是否容許匿名用戶建立新文件夾。默認註釋掉的
dirmessage_enable=YES
若目錄下存在.message文件,則顯示該文件內容
xferlog_enable=YES
默認上傳/下載的日誌文件被記錄在/var/log/vsftpd.log中
connect_from_port_20=YES
從20端口鏈接。默認情況下,20爲FTP的數據傳輸端口
#chown_uploads=YES
#chown_username=whoever
容許新上傳文件的擁有者爲whoever.兩行同時出現的,默認註釋掉
#xferlog_file=/var/log/vsftpd.log
日至位置設定
xferlog_std_format=YES
使用標準格式登記上傳/下載記錄
#data_connection_timeout=120
傳輸延時時間,單位爲秒
#nopriv_user=ftpsecure
使用特殊用戶ftpsecure。這裏能夠把ftpsecure帳戶做爲通常訪問用戶,即全部鏈接FTP服務器的用戶都具備ftpsecure用戶名。爲了安全起見,能夠在/etc/passwd中將ftpsecure的用戶的SHELL設定爲/sbin/nologin。
#ftpd_banner=Welcome to blah FTP service.
登陸提示信息
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
若啓用上述兩項設定,則能夠在/etc/vsftpd/banned_emails中創建黑名單
pam_service_name=vsftpd
列出與VSFTPD相關的PAM文件
userlist_enable=YES
當此項設置爲yes的時候,啓用配置文件/etc/vsftpd.user_list。此時有兩種狀況
a.此時若沒有userlist_deny=NO,則/etc/vsftpd.user_list中存在的用戶不能夠訪問VSFTPD服務器
b.此時若存在userlist_deny=NO,則僅接受/etc/vsftpd.user_list中存在的用戶的登陸請求
當此項設定爲NO是,不會啓用配置文件/etc/vsftpd.user_list
tcp_wrappers=YES
啓用TCP Wrapper支持
以上是默認安裝後,VSFTPD主配置文件出現的設定選項。除此以外,還有一些經常使用選項
guest_enable=YES
guest_username=ftp
guest用戶名,即全部非匿名用戶將具備guest用戶身份
local_root=/var/ftp
anon_root=/var/ftp
設定本機用戶和匿名用戶的FTP根目錄
use_localtime=YES
是否使用本機時間,若設定爲NO,則使用格林尼治時間
#idle_session_timeout=600
客戶端在600秒內沒有任何動做,則服務器自動斷開與客戶端鏈接
max_clients=0
最大客戶鏈接數
max_per_ip=0
每一個客戶端的最大鏈接數
local_max_rate=0
本地帳戶的最大傳輸速率,單位爲秒,0爲不限制
anon_max_rate=0
匿名用戶的最大傳輸速率
前面已經介紹了VSFTPD的安裝,安裝後須要啓動服務
[root@xingzheson /]# service vsftpd start
設置開機啓動
[root@xingzheson /]# chkconfig vsftpd on
VSFTPD虛擬用戶
設置虛擬用戶使其僅能訪問VSFTPD,而不能夠登陸系統
首先,咱們須要確認安裝盤上的db4軟件包已經裝上,若是沒有,就要手動安裝
[root@xingzheson /]# rpm -qa |grep db4
db4-utils-4.7.25-16.el6.x86_64
db4-4.7.25-16.el6.x86_64
[root@xingzheson Packages]# rpm -ivh db4-utils-4.7.25-16.el6.x86_64.rpm
[root@xingzheson Packages]# rpm -ivh db4-4.7.25-16.el6.x86_64.rpm
當咱們用yum 安裝時,就已經默認安裝好了。因此不用手動安裝的了
接下來,須要建立虛擬用戶的用戶名和密碼,建立一個文檔,假定這個文件爲/tmp/id.txt 內容以下
xingzheson
123456
zhulaoshi
654321
這裏的單數行爲用戶名,而雙數行爲用戶名對應的密碼。生產用戶帳號的數據庫文件並設定數據文件權限,最後刪除/tmp/id.txt
[root@xingzheson tmp]# db_load -T -t hash -f /tmp/id.txt /etc/vsftpd/vsftpd_id.db
[root@xingzheson tmp]# chmod 600 /etc/vsftpd/vsftpd_id.db
[root@xingzheson tmp]# rm -f /tmp/id.txt
下面設定vsftpd.conf 文件
接着創建PAM文件/etc/pam.d/vsftpd.virtual,
[root@xingzheson tmp]# vi /etc/pam.d/vsftpd.virtual
內容以下:
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_id
account required pam_userdb.so db=/etc/vsftpd/vsftpd_id
session reiuired pam_loginuid.so
下面創建相關的目錄:
[root@xingzheson tmp]# mkdir /home/vsftpd
[root@xingzheson tmp]# mkdir -p /home/vsftpd/{xingzheson,zhulaoshi}
[root@xingzheson tmp]# chown -R ftp:ftp /home/vsftpd/
重啓服務,若是系統中開啓了SELinux,那麼須要執行如下命令,容許虛擬用戶存取其家目錄
[root@xingzheson tmp]# setsebool -p allow_ftpd_full_access 1
若是設置正確,則虛擬用戶能夠登陸服務器。輸出以下:
虛擬用戶的配置部分徹底正常,可是會發現一個問題,那就是本地用戶沒法正常登陸VSFTPD服務器了。接下來咱們找找緣由
a.用戶的FTP根目錄變爲了/home/vsftpd/$USER.也就是說,若是一個本地用戶zhu嘗試登陸VSFTPD,那麼服務器會試圖尋找/home/vsftpd/zhu這個目錄。可是zhu的家目錄應該是/home/zhu,而/home/vsftpd/zhu 並不存在,因此登陸失敗
b.即便咱們能夠用一些方法讓zhu的家目錄能夠被從新定位到/home/zhu(能夠用連接的方法),可是因爲zhu登陸VSFTPD時的身份其實是ftp(由於啓用了guest_enable=YES),因此仍是無權訪問本身的家目錄
c.及時上述兩個問題解決了,仍是沒法登陸。哎。由於在PAM文件/etc/pam.d/vsftpd.virtual中,只設定了虛擬用戶的驗證。zhu是本地用戶,該用戶的身份驗證並不在虛擬用戶的數據庫中,因此沒法登陸。
解決辦法:
接下來,修改/etc/vsftpd/vsftpd.conf文件,在其中加入 user_config_dir=/etc/vsftpd/virtua
重啓服務,創建/etc/vsftpd/virtua文件夾,並在其中創建文本文件/etc/vsftpd/virtua/zhu
[root@xingzheson vsftpd]# mkdir /etc/vsftpd/virtua
[root@xingzheson vsftpd]# vim /etc/vsftpd/virtua/zhu
內容以下:
local_root=/home/zhu (指定zhu真正的家目錄)
guest_username=zhu (修改zhu的身份。這裏的zhu的身份就不是ftp了)
通過這樣的修改以後,本地用戶和虛擬用戶就均可以登陸VSFTPD了,而且在增長了user_config_dir以後,就能夠給每一個用戶單獨添加不一樣的訪問規則和權限,不管該用戶是本地用戶仍是虛擬用戶。
配置具備SSL的VSFTPD
爲了提高VSFTPD的傳輸安全性,這裏可使用SSL加密。
首先用OpenSSL爲VSFTPD生成安全證書。這裏生成的證書有效期爲365天
[root@xingzheson virtua]# cd /etc/vsftpd/
[root@xingzheson vsftpd]# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
生成證書的時候須要填寫一些信息,任意寫均可以,輸出以下
Generating a 1024 bit RSA private key
.............................++++++
.........................++++++
writing new private key to 'vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:JiangSu
Locality Name (eg, city) [Default City]:NanH^H^H^H^H^H^Hj
Organization Name (eg, company) [Default Company Ltd]:ITD^H^H
Organizational Unit Name (eg, section) []:whatever
Common Name (eg, your name or your server's hostname) []:Martian
Email Address []:abc@xyz.com
接下來編輯/etc/vsftpd/vsftpd.conf,加入如下內容
ssl_enable=YES
allow_anon_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem
重啓服務,這樣帶有SSL加密的·VSFTPD服務器就假設好了。