搞了下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
即可
