一、硬件描述
1.1 雲服務器:騰訊雲
雲主機
操作系統:Ubuntu Server 14.04.1 LTS 32位
CPU:1核
內存:1GB
系統盤:20GB(本地磁盤)
數據盤:0GB
公網帶寬:1Mbps
1.2 本地配置
操作系統:windows 8.1
二、遠程登陸服務器(ubuntu為例)
2.1 操作教程
官方文檔:如何遠程登錄linux服務器
2.2 踩過的坑
需要特別注意的是,在使用ssh與putty保存session登陸時,有一個坑!
保存的session名稱應避免與用戶名沖突
三、搭建vsftpd服務器
3.1 下載vsftpd
redhat、centos等使用rpm包的發行版:
使用命令安裝:yum install vsftpd
使用下載包安裝:rpm -ivh vsftpd*.rpm
Debian、Ubuntu等使用DEB包黨的發行版:
使用命令安裝:apt-get install vsftpd
若權限不足,則在命令前加 sudo ,下同
3.2 關閉selinux(Debian、Ubuntu等使用DEB包的系統可跳過此步驟)
由於ftp涉及到端口開放的問題,所以我們把selinux關閉。
selinux的介紹見博文——SELinux深入理解
ftp命令連接使用21端口,數據連接則有兩種方式,即主動ftp和被動ftp。詳細見博文——FTP兩種工作模式介紹
一般在redhat、centos等使用rpm包的發行版默認安裝有selinux,而Debian、Ubuntu等使用DEB包的發行版不默認安裝
故對於Debian、Ubuntu等使用DEB包的服務器:
臨時關閉(重啟后,selinux會被打開):setenforce 0
開啟:setenforce 1
永久關閉:修改/etc/selinux/config文件,將SELINUX=enforcing改成SELINUX=disabled,重啟機器
3.3 開啟ftp服務
service vsftpd start/stop/restart
對於服務操作的一些命令:
service [service名] [對service的操作如:start/stop/restart/status]
3.4 ftp用戶管理
出於安全考慮,一般不會使用系統用戶來做登陸ftp的操作,因而大部分情況下會新建一個linux用戶(單純的一個用戶,不具備bash),並用此用戶進行ftp的登陸等操作
對於ftp用戶的管理,其遵循linux的用戶管理,根據/etc/passwd和etc/group來進行管理
新建用戶:
useradd test,passwd test
此處的useradd僅僅只是創建用戶,而可替換為adduser(創建用戶家目錄\home\test)
二者具體的區別在 useradd 與adduser的區別 有介紹
3.5 通過對 vsftpd 配置文件的修改實現對vsftpd的精細化配置
對於vsftpd具體的一些配置可通過修改配置文件來進行實現。
常見的配置文件有:
對於主配置文件,一些常用的配置:
anonymous_enable=YES #是否開啟匿名登陸
local_enable=YES #是否允許本地用戶(即linux系統中的用戶帳號)登錄FTP服務器,默認設置為YES允許
write_enable=YES #是否允許本地用戶對FTP服務器文件具有寫權限,默認設置為YES允許
一項比較重要的配置:(文字不重要,重點看圖)
用戶登錄FTP服務器后是否具有訪問自己目錄以外的其他文件的權限
設置為YES時,用戶被鎖定在自己的home目錄中,vsftpd將在下面chroot_list_file選項值的位置尋找chroot_list文件
必須與下面的設置項配合
chroot_list_enable=YES
被列入此文件的用戶,在登錄后將不能切換到自己目錄以外的其他目錄
從而有利於FTP服務器的安全管理和隱私保護。此文件需自己建立
chroot_list_file=/etc/vsftpd/chroot_list
關於主配置文件的使用,史上最詳細的vsftpd配置文件講解(1) 這篇文章寫得很詳細
四、踩過的坑
4.1 不同系統配置文件的目錄不同
ubuntu不同於centos,ubuntu的配置文件目錄不在 /etc/vsftpd/vsftpd.conf 而是在 /etc/vsftpd.conf
4.2 明確vsftpd.conf 文件中幾個參數的作用
4.3 記得打開21端口的安全組
購買雲主機的時候,在做最初配置時,有引導安全組的配置。因為之前選了默認的打開“Linux安全組放通22端口”,而沒打開ftp的21端口。
所以,在配置完成ftp服務器時發現只能在服務器上登陸ftp,而通過外網無法訪問ftp。這是一個比較容易被忽略的問題!(這是一個大坑)
官方文檔:如何配置安全組?
4.4 出現錯誤500 OOPS: vsftpd: refusing to run with writable root inside chroot()
如果啟用chroot,必須保證ftp根目錄不可寫,這樣對於ftp根直接為網站根目錄的用戶不方便,所以建議假如ftp根目錄是/home/${cjh},則將訪問權限改寫如下
chmod a-w /home/cjh
4.5 寫文件時遇到-bash: data1.txt: Permission denied
sudo sh -c "echo a > 1.txt"
避免’sudo echo x >’ 時’Permission denied’
五、參考文獻
1、qcloud文檔中心, https://www.qcloud.com/doc/product
2、專題:vsftpd入門——安裝、配置、案例與常見問題。玩轉vsftpd服務器的四大高級配置, http://os.51cto.com/art/201008/222036.htm
3、FTP兩種工作模式介紹, http://www.softbar.com/blog/post/117.html
4、SELinux深入理解, http://blog.csdn.net/myarrow/article/details/9856095/
5、useradd 與adduser的區別, http://blog.csdn.net/deit_aaron/article/details/9984701
5、史上最詳細的vsftpd配置文件講解(1), http://os.51cto.com/art/201008/221842.htm
6、避免’sudo echo x >’ 時’Permission denied’, http://blog.csdn.net/hejinjing_tom_com/article/details/7767127