1. 程式人生 > >Linux下搭建FTP伺服器(Ubuntu16.04)

Linux下搭建FTP伺服器(Ubuntu16.04)

搞了下FTP伺服器,基本上能遇到的問題都遇到了-。-!

先說步驟:

1.安裝vsftpd軟體包

sudo apt-get install vsftpd

2.開啟配置檔案

vim /etc/vsftpd.conf

3.修改引數

一些引數可以去掉註釋啟用,為了方便,你也可以註釋全部,然後新增下面的設定

#這些設定系統預設是開啟的,可以不管
listen=NO
listen_ipv6=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES

#下面的就要自定義設定了,建議系統預設的不管,然後複製下面的

#是否允許匿名訪問,NO為不允許
anonymous_enable=NO
#是否允許本地使用者訪問,就是linux本機中存在的使用者,YES允許
local_enable=YES
#是否開啟寫模式,YES為開啟
write_enable=YES
#新建檔案許可權,一般設定為022,那麼新建後的檔案的許可權就是777-022=755
local_umask=022

#是否啟動userlist為通過模式,YES的話只有存在於userlist檔案中的使用者才能登入ftp(可以理解為userlist是一個白名單),NO的話,白名單失效,和下面一個引數配合使用
userlist_enable=YES
#是否啟動userlist為禁止模式,YES表示在userlist中的使用者禁止登入ftp(黑名單),NO表示黑名單失效,我們已經讓userlist作為一個白名單,所以無需使用黑名單功能
userlist_deny=NO
#指定哪個檔案作為userlist檔案,我們稍後編輯這個檔案
userlist_file=/etc/vsftpd.user_list

#是否限制本地所有使用者切換根目錄的許可權,YES為開啟限制,即登入後的使用者不能訪問ftp根目錄以外的目錄,當然要限制啦
chroot_local_user=YES
#是否啟動限制使用者的名單list為允許模式,上面的YES限制了所有使用者,可以用這個名單作為白名單,作為例外允許訪問ftp根目錄以外
chroot_list_enable=YES
#設定哪個檔案是list檔案,裡面的使用者將不受限制的去訪問ftp根目錄以外的目錄
chroot_list_file=/etc/vsftpd.chroot_list
#是否開啟寫模式,開啟後可以進行建立資料夾等寫入操作
allow_writeable_chroot=YES

#設定ftp根目錄的位置,這個檔案我們稍後自己建立
local_root=/var/myftp

重啟vsftpd

sudo /etc/init.d/vsftpd restart

4.新增ftp使用者

順便將將使用者目錄設定為我們上面的ftp根目錄

sudo useradd -d /var/myftp ftpuser

設定使用者密碼

sudo passwd ftpuser

5.建立需要的檔案,設定資料夾許可權

上面我們指定了兩個檔案,userlist檔案和list檔案,有時候系統不會自動建立,你要自己建立

vim /etc/vsftpd.user_list

然後新增ftpuser進去作為白名單的一員

vim /etc/vsftpd.chroot_list

設為空即可

建立使用者資料夾,設定許可權

mkdir /var/myftp

許可權設定可以根據你的使用場景來設定,我這裡在根目錄下禁止此使用者寫,然後下面建兩個資料夾,一個download只允許讀取,upload允許寫和讀

chmod 555 /var/myftp
cd /var/myftp
mkdir upload
chmod 755 upload
mkdir download
chmod 555 download

---------------------------------------------------------------------------------------------

最後檢查一下檔案所有者,都改為ftpuser

6.使用ftp,解決各種問題

linux訪問輸入ftp 加 你的IP

ftp xxx.xxx.xxx.xxx

輸入使用者名稱ftpuser和密碼

如果登入出現530錯誤:

vim /etc/pam.d/vsftpd

註釋掉#auth   required    pam_shells.so

然後ls一下,如果失敗了,切換到被動模式即可

passive mode

然後mkdir一下發現無法建立資料夾 550 create directory operation failed

setsebool -P ftpd_disable_trans on
/etc/init.d/vsftpd restart

即可