本文遵守CC BY-SA 3.0。
前言:
最近項目需要搭建第三方文件服務器,本來使用的是apache服務器將需要的子項目的目錄發布出來,然后通過軟連接將所有子項目關聯起來,但是如果不同時將所有子項目跑起來的話,未開啟的項目目錄就會丟失,着實蛋疼,所以才有搭建ftp服務器的想法,下面開始正文。
一、安裝
如果是ubuntu環境下的話,安裝是很簡單的,只需輸入如下命令:
安裝
sudo apt-get install vsftpd
安裝完成后可以察看下服務狀態(其實安裝完成了就會提示已經在跑了)
sudo service vsftpd status
二、配置文件
其實我用到的文件只有三個
1. /etc/vsftp.conf(主配置文件)
2. /etc/vsftp.chroot_list(可訪問用戶列表,這個在我這里貌似不是已有的,我是手建的,這個察看上面那個配置文件就會發現,配置文件里面有關聯)
3. /etc/pam.d/vsftpd(里面有個選項需要修改,這個需要簡單配置一下,否則會出現“530 login incorrect”的錯誤)
下面開始逐個文件說明:
1./etc/vsftpd.config 里面的注釋比較多,還很詳細,這里就不一一列舉了,只寫上我修改的
anonymous_enable=NO(是否允許匿名登陸)
local_enable=YES(是否允許本地登陸)
write_enable=YES(設置FTP可寫)
//chroot (Change Root)
chroot_local_user=YES(設置成YES后,加入vsftpd.chroot_list中的用戶可以通過ftp訪問)
chroot_list_enable=YES(啟用下面這個vsftpd.chroot_list)
chroot_list_file=/etc/vsftpd.chroot_list(指定一下list,這是文件默認的,但是並不存在,需要手動弄一下)
pam_service_name=vsftpd(這里留個標記,在一定情況下會出現530的問題,留到后面錯誤去講)
2./etc/vsftpd.chroot_list
這個文件比較簡單,之需要將允許ftp登陸的用戶名放進來就行,一個一行,我之前一直比較憤怒,網上在這里就這么說一下,都沒個例子,這叫勞資怎么填,其實很簡單,比如像這樣:
user
user2
user22
=========================我風騷地插了進來=============================
由於說到了添加用戶,其實是這樣的,你可以使用本地已經存在的用戶,但是作為一個淡定的ftp服務器,是不應該把本機的東西都共享給外面的,最好的方法就是再創建個用戶專門給ftp使用
所以這里來搞一下用戶的問題
添加(-d是指定的用戶主目錄,-m接要創建的用戶名),
sudo useradd -d /home/user -m username
創建完了用戶還需要個用戶密碼,
sudo passwd username
Whatever,要是想刪了,
sudo userdel username
這里還要留個標記,關於創建用戶之后,一些情況下可能會出現個500的錯誤,留到后面錯誤去講
好了,現在察看下創建結果,發着光的那條
user@userServer:/home$ ll 總用量 xx drwxr-xr-x 7 root root 4096 4月 24 11:27 ./ drwxr-xr-x 25 root root 4096 4月 9 09:47 ../ drwxr-xr-x 2 heihei heihei 4096 4月 24 11:27 heihei/ drwxr-xr-x 6 haha haha 4096 2月 15 18:08 haha/ drwxr-xr-x 75 username username 4096 4月 24 13:18 username/
==================================================================
3./etc/pam.d/vsftpd
這個文件其實也沒多少東西,就改一處即可:
auth required pam_listfile.so item=user sense=deny file=/etc/ftpuser onerr=succeed
默認是ftpuser,這里改成放入vsftpd.chroot_list里面的用戶就行了,不要在意那個deny,他不應該是allow,他不是不讓你使用,淡定..
三、登陸
其實有好多方法登陸的
1.命令行
ip地址用你的..
那個username應該是當前的用戶,不要管他,除非和ftp用戶是一個;
user就是你的ftp用戶,先前創建的那個,要是和當前用戶是一個的話直接回車過去;
passwd輸入;
搞定
user@userServer:/home$ ftp 192.168.1.123 Connected to 192.168.1.123. 220 (vsFTPd 2.3.5) Name (192.168.1.123:username): user 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
2.瀏覽器
在地址欄輸入(your ip address): ftp://192.168.1.123
3.在windows的目錄地址上面敲入上面的地址
四、錯誤
終於到了這里,事情從不會那么容易就讓你直接完成,就那么幾個問題,可能不經意見就中了套..
1.530 login Incorrect
話說這個問題貌似幾個情況都會出現:
(1)pam_service_name=vsftpd 就是前面vsftpd.conf文件里面那廝,我在第一台PC上面搭建的時候文件里面沒有,據說是因為這句話,由於第一台PC上面問題較多,我也不確定是不是這個問題
(2)還記得/etc/pam.d/vsftpd那個文件不,說了不要動deny,是不是手賤
(3)還沒發現,這是為了可擴展性,:-)
2.500 OOPS: cannot change directory:/home/**
(1)網上說法比較統一,一般是說設置一堆參數就好了,可以查一下
(2)我說說我的錯誤原因哈,MD其實就是ftp用戶創建的時候我把文件夾權限限定了,如果你的用戶沒有各種權限也會出這種問題,這個時候你只需要:
sudo chmod 755 userDir/