FTP服務器(File Transfer Protocol Server)是在互聯網上提供文件存儲和訪問服務的計算機,它們依照FTP協議提供服務。html
FTP(File Transfer Protocol: 文件傳輸協議)做用: Internet 上用來傳送文件的協議。web
常見FTP服務器:vim
windows:Serv-U FTP Serverwindows
Linux:ProFTPD:(Professional FTP daemon)一個Unix平臺上或是類Unix平臺上(如Linux, FreeBSD等)的FTP服務器程序。 安全
本文的主角:vsftp。VSFTP是一個基於GPL發佈的類Unix系統上使用的FTP服務器軟件,它的全稱是Very Secure FTP 今後名稱能夠看出來,編制者的初衷是代碼的安全。服務器
特色:它是一個安全、高速、穩定的FTP服務器。本文從如下幾個方面來介紹ftp服務器:架構
一、 此服務器的概述:名字,功能,特色,端口號學習
二、 安裝測試
三、 配置文件的位置網站
四、 服務啓動關閉腳本,查看端口
五、 此服務的使用方法
六、 修改配置文件,實戰舉例
七、 排錯(從下到上,從內到外)
本文的服務器架構:
FTP服務端:xiaolyu10 IP:192.168.31.10
FTP客戶端:xiaolyu11 IP:192.168.31.11
yum安裝或rpm安裝都可。
[root@xiaolyu10 ~]# rpm -qa | grep vsftp
vsftpd-2.2.2-21.el6.x86_64
[root@xiaolyu10 ~]# rpm -ivh /mnt/Packages/vsftpd-2.2.2-6.el6_0.1.x86_64.rpm
[root@xiaolyu10 ~]# yum install -y vsftp
[root@xiaolyu11 ~]# yum -y install lftp
[root@xiaolyu10 ~]# ls -l /etc/vsftpd
total 32
-rw-r--r-- 1 root root 13 Mar 16 15:14 chroot_list
-rw------- 1 root root 125 May 11 2016 ftpusers
-rw------- 1 root root 361 May 11 2016 user_list
-rw------- 1 root root 4644 Mar 16 15:13 vsftpd.conf
-rw------- 1 root root 4599 Mar 16 14:12 vsftpd.conf_bak
-rwxr--r-- 1 root root 338 May 11 2016 vsftpd_conf_migrate.sh
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:用於指定哪些用戶不能訪問FTP 服務器。 黑名單
/etc/vsftpd/user_list:指定容許使用vsftpd 的用戶列表文件。 白名單
vim /etc/vsftpd/user_list
# 若是userlist_deny= YES(默認),毫不容許在這個文件中的用戶登陸ftp,甚至不提示輸入密碼
#prompt 提示
/etc/vsftpd/vsftpd_conf_migrate.sh:是vsftpd 操做的一些變量和設置腳本
/var/ftp/:默認狀況下匿名用戶的根目錄
公司技術部準備搭建一臺功能簡單的FTP 服務器,容許全部員工上傳和下載文件,並容許建立用
戶本身的目錄。
分析:
容許全部員工上傳和下載文件須要設置成容許匿名用戶登陸而且須要將容許匿名用戶上傳功能
開啓,
anon_mkdir_write_enable 字段能夠控制是否容許匿名用戶建立目錄。
備份原配置文件:
[root@xiaolyu10 vsftpd]# cp vsftpd.conf vsftpd.conf_bak
[root@xiaolyu10 ~]# vim /etc/vsftpd/vsftpd.conf
容許匿名用戶訪問
anonymous_enable=YES
容許匿名用戶上傳文件並能夠建立目錄
anon_upload_enable=YES
anon_mkdir_write_enable=YES
啓動服務:
[root@xiaolyu10 ~]# service vsftpd restart
[root@xiaolyu10 pub]# chown ftp.ftp /var/ftp/pub/
而後測試,是能夠新建文件夾了,可是不能重命名,不能刪除!
[root@xiaolyu10 ~]# mkdir /var/ftp/xiaolyudata
[root@xiaolyu10 ~]# chown ftp.ftp /var/ftp/xiaolyudata
[root@xiaolyu10 ~]# ll -d !$
ll -d /var/ftp/xiaolyudata
drwxr-xr-x 2 ftp ftp 4096 Mar 16 14:34 /var/ftp/xiaolyudata
[root@xiaolyu10 ~]#
重啓服務:
[root@xiaolyu10 ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@xiaolyu10 ~]#
如今匿名上傳的文件是禁止刪除的。
這樣匿名用戶的上傳就算成功了
注:工做中,匿名用戶只是只讀訪問,寫的權限也沒有的。
補充:
若是想讓匿名用戶能夠重命名或者刪除的權限,添加以下一條配置參數:
重啓服務:
[root@xiaolyu10 ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: 500 OOPS: bad bool value in config file for: anon_other_write_enable
[FAILED]
根據提示,說明我剛纔添加的那一行匿名寫權限的參數有問題
[root@xiaolyu10 ~]# vim /etc/vsftpd/vsftpd.conf
也就是說參數後面不能有多餘的空格。
從新啓動就能夠對從新命名和刪除文件夾了,
匿名用戶就能夠刪除和修改,很是不安全,慎重使用這個參數。
注意,默認匿名用戶家目錄的權限是755,這個權限是不能改變的。切記!
[root@xiaolyu10 ~]# service vsftpd restart
公司內部如今有一臺FTP 和WEB 服務器,FTP 的功能主要用於維護公司的網站內容,包括上傳文
件、建立目錄、更新網頁等等。公司現有兩個部門負責維護任務,他們分別適用team1 和team2
賬號進行管理。先要求僅容許team1 和team2 賬號登陸FTP 服務器,但不能登陸本地系統,並將
這兩個賬號的根目錄限制爲/var/www/html,不能進入該目錄之外的任何目錄。
ftp 和www web服務器相結合。
www web服務器根目錄: /var/www/html
只容許:team1和team2兩用戶 能夠上傳。 vsftp禁止匿名。
分析:
將FTP 和WEB 服務器作在一塊兒是企業常常採用的方法,這樣方便實現對網站的維護,爲了加強安
全性,首先須要使用僅容許本地用戶訪問,並禁止匿名用戶登陸。其次使用chroot 功能將team1
和team2 鎖定在/var/www/html 目錄下。若是須要刪除文件則還須要注意本地權限
解決方案:
(1)創建維護網站內容的ftp 賬號team1 和team2 並禁止本地登陸,而後設置其密碼
[root@xiaolyu10 ~]# useradd -s /sbin/nologin team1
[root@xiaolyu10 ~]# useradd -s /sbin/nologin team2
[root@xiaolyu10 ~]# echo "123456" | passwd --stdin team1
Changing password for user team1.
passwd: all authentication tokens updated successfully.
[root@xiaolyu10 ~]# echo "123456" | passwd --stdin team2
Changing password for user team2.
passwd: all authentication tokens updated successfully.
2)配置vsftpd.conf 主配置文件並做相應修改
[root@xiaolyu10 vsftpd]# cp vsftpd.conf_bak vsftpd.conf
cp: overwrite `vsftpd.conf'? y
[root@xiaolyu10 vsftpd]# vim vsftpd.conf
#anonymous_enable=YES
anonymous_enable=NO 禁止匿名用戶登陸
#
# Uncomment this to allow local users to log in.
local_enable=YES 容許本地用戶登陸
繼續將:
修改成:
local_root=/var/www/html:設置本地用戶的根目錄爲/var/www/html
chroot_list_enable=YES:激chroot 功能
chroot_list_file=/etc/vsftpd/chroot_list:設置鎖定用戶在根目錄中的列表文件。此文件存放要鎖定的用戶名
保存退出
(3)創建/etc/vsftpd/chroot_list 文件,添加team1 和team2 賬號
[root@xiaolyu10 vsftpd]# touch /etc/vsftpd/chroot_list
[root@xiaolyu10 vsftpd]# ll !$
ll /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 0 Mar 16 15:13 /etc/vsftpd/chroot_list
[root@xiaolyu10 vsftpd]# vim /etc/vsftpd/chroot_list #寫入如下內容,一行,一個用戶名
team1
team2
(4)重啓vsftpd 服務使配置生效
service vsftpd restart
(5)修改本地權限
[root@xiaolyu10 vsftpd]# mkdir -p /var/www/html/
[root@xiaolyu10 vsftpd]# ll -d /var/www/html/
drwxr-xr-x 2 root root 4096 Mar 16 15:16 /var/www/html/
[root@xiaolyu10 vsftpd]# chmod -R o+w /var/www/html/
[root@xiaolyu10 vsftpd]# ll -d /var/www/html/
drwxr-xrwx 2 root root 4096 Mar 16 15:16 /var/www/html/
(6).測試:
[root@xiaolyu11 ~]# lftp 192.168.31.10 -uteam1,123456lftp team1@192.168.31.10:~> lsdrwxr-xr-x 2 500 500 4096 Mar 16 07:24 weblftp team1@192.168.31.10:~>