Ubuntu 用vsftpd 配置FTP服務器

本文在Ubuntu Server 14.04 amd64系統測試。

Made By:CSGrandeur

安裝ftp

sudo apt-get install vsftpd

配置vsftpd.conf

sudo nano /etc/vsftpd.conf

複製代碼

#禁止匿名訪問
anonymous_enable=NO
#接受本地用戶
local_enable=YES
#允許上傳
write_enable=YES
#用戶只能訪問限制的目錄
chroot_local_user=YES
#設置固定目錄,在結尾添加。如果不添加這一行,各用戶對應自己的目錄,當然這個文件夾自己建
local_root=/home/ftp

複製代碼

看網上說加一行“pam_service_name=vsftpd”,我看我這個配置文件本來就有,就不管了。

添加ftp用戶

sudo useradd -d /home/ftp -M ftpuser
sudo passwd ftpuser

調整文件夾權限

這個是避免“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”

sudo chmod a-w /home/ftp
sudo mkdir /home/ftp/data

這樣登錄之後會看到data文件夾,雖然稍麻煩,原因不表了。。查資料這麼辛酸已經不易。。

改pam.d/vsftpd

這時候直接用useradd的帳號登錄ftp會530 login incorrect

sudo nano /etc/pam.d/vsftpd

註釋掉 

#auth    required pam_shells.so

重啓vsftpd

sudo service vsftpd restart

這時就可以用剛纔建的ftpuser這個用戶登錄ftp了,看到的是local_root設置的/home/ftp,並且限制在該目錄。

可以在瀏覽器用ftp://xxx.xxx.xxx.xxx訪問,也可以用ftp軟件比如flashFXP,密碼就是ftpuser的密碼。

關於用戶訪問文件夾限制

由chroot_local_user、chroot_list_enable、chroot_list_file這三個文件控制,轉別人的一段話:

首先,chroot_list_enable好理解,就是:是否啓用chroot_list_file配置的文件,如果爲YES表示chroot_list_file配置的文件生效,否則不生效;
第二,chroot_list_file也簡單,配置了一個文件路徑,默認是/etc/vsftpd.chroot_list,該文件中會填入一些賬戶名稱。但是這些賬戶的意義不是固定的,是跟配置項chroot_local_user有關的。後一條中說明;
第三,chroot_local_user爲YES表示所有用戶都*不能*切換到主目錄之外其他目錄,但是!除了chroot_list_file配置的文件列出的用戶。chroot_local_user爲NO表示所有用戶都*能*切換到主目錄之外其他目錄,但是!除了chroot_list_file配置的文件列出的用戶。也可以理解爲,chroot_list_file列出的“例外情況”的用戶。

 如果客戶端登錄時候提示“以pasv模式連接失敗”

編輯/etc/vsftpd.conf

最後添加

pasv_promiscuous=YES

記得:sudo chown --recursive root:ftp ftpdata

然後再重啓vsftpd服務。 

關於安裝和刪除vsftpd:

1)使用apt-get 工具安裝vsftpd

sudo apt-get install vsftpd

2)

service vsftpd start   開啓vsftpd服務

service vsftpd stop    停止vsftpd服務

service vsftpd restart  重啓vsftpd服務

3)修改vsftpd配置文件

sudo vi /etc/vsftpd.conf  

4)主要相關配置

listen=YES                 # 服務器監聽  

local_enable=YES         # 是否允許本地用戶訪問  

write_enable=YES         # 是否允許上傳文件,不開啓會報 550 permission denied 

 anonymous_enable=NO   # 匿名訪問允許,默認不要開啓

 #anon_upload_enable=YES # 匿名上傳允許,默認是NO

 #anon_mkdir_write_enable=YES # 匿名創建文件夾允許  


5)用戶訪問目錄的權限設置:

chroot_local_user=YES      # 用於指定用戶列表文件中的用戶是否允許切換到上級目錄。默認值爲NO。  chroot_list_enable=YES  # 設置是否啓用chroot_list_file配置項指定的用戶列表文件。默認值爲NO。  chroot_list_file=/etc/vsftpd.chroot_list      #禁用的列表名單,格式爲一行一個用戶,用於指定用戶列表文件,該文件用於控制哪些用戶可以切換到用戶家目錄的上級目錄。  
1).當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list文件中列出的用戶,可以切換到其他目錄;未在文件中列出的用戶,不能切換到其他目錄。

 (2).當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其他目錄;未在文件中列出的用戶,可以切換到其他目錄。

 (3).當chroot_list_enable=NO,chroot_local_user=YES時,所有的用戶均不能切換到其他目錄。

 (4).當chroot_list_enable=NO,chroot_local_user=NO時,所有的用戶均可以切換到其他目錄。 

6)

local_umask=022         # FTP上本地的文件權限,默認是077  dirmessage_enable=YES     # 進入文件夾允許  xferlog_enable=YES         # ftp 日誌記錄允許  connect_from_port_20=YES # 啓用20號端口作爲數據傳送的端口  xferlog_enable=yes         # 激活上傳和下傳的日誌  xferlog_std_format=yes     # 使用標準的日誌格式 ftpd_banner=XXXXX 

7)配置完成後可以使用以下命令重啓vsftpd以生效配置

sudo /etc/init.d/vsftpd restart  

或者  

sudo service vsftpd restart  

8)創建目錄

mkdir -p /home/uftp

9)創建用戶

sudo useradd -g ftp -d /home/uftp -m uftp

10)設置用戶密碼

sudo passwd uftp  123456

11)添加用戶到用戶權限文件中

編輯/etc/vsftpd.chroot_list文件,將ftp的帳戶名添加進去,保存退出

sudo vim /etc/vsftpd.chroot_list

12)重啓vsftpd服務

sudo service vsftpd restart  

13)刪除用戶

sudo  userdel uftp

14)卸載vsftpd

sudo apt-get remove --purge vsftpd
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章