linux 下搭建vsftpd


近來一直研究如何在linux下搭建ftp服務器,在搭建過程中走了很多彎路,一直遲遲不能搭建成功,終於通過網友提供的方法,搭建成功

現在講搭建過程分享一下

第一步:首先判斷是否已安裝vsftpd,  執行命令:

rpm -qa | grep vsftpd  

已安裝返回vsftpd版本號,未安裝沒有提示。

第二步:安裝vsftpd 

命令:yum -y install vsftpd

第三步:安裝vsftpd后,開始搭建vsftpd

1.首先創建ftp文件夾根目錄,位置任意,我創建在/home/下創建ftproot文件夾。在ftproot文件夾下可以創建多個用戶對應自己的根目錄文件夾

mkdir -p /home/ftproot/ftptest

2.創建用戶

創建用戶時要並且指定其目錄為用戶目錄中創建的 /home/ftproot/ftptest 

useradd -d /home/ftproot/ftptest -g ftp -s /sbin/nologin ftptest

-g ftp 表示該用戶屬於ftp分組 (ftp分組是內置的,本來就存在,不需要自己創建)
-s /sbin/nologin 表示這個用戶不能用來登錄secureCRT這樣的客戶端,這種不能登陸的用戶又叫做虛擬用戶

3:設置目錄權限

把目錄/home/ftproot/ftptest的擁有者設置為ftptest,后期可以通過vsftpd.conf的配置文件直接對應到此文件夾下

chown -R ftptest /home/ftproot/ftptest

使ftptest用戶擁有這個目錄的讀寫權限

chmod -R 775 /home/ftproot/ftptest

4:設置密碼

passwd ftptest 

輸入兩次密碼,密碼設置成功

第四步:配置vsftpd.conf文件

vi /etc/vsftpd/vsftpd.conf

修改配置文件如下:

anonymous_enable=NO   禁止匿名用戶登錄

chroot_list_enable=YES  去掉#注釋

# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list  去掉#注釋

注:
chroot_list_enable=YES: 表示對用戶訪問進行限制
chroot_list_file=/etc/vsftpd/chroot_list 表示對chroot_list里面指定的用戶進行限制 

創建的ftptest用戶所擁有的目錄是 /home/ftproot/ftptest,如果不做限制,那么使用ftptest登陸之后可以切換到其他敏感目錄去,比如切換到/usr目錄去,這樣就存在巨大的安全隱患。 為了規避這個隱患,需要限制ftptest用戶只能通過ftp訪問到 /home/ftproot/ftptest 目錄以及子目錄。

vsftpd.conf配置文件增加如下幾行:

allow_writeable_chroot=YES  打開用戶上傳文件的的讀寫權限(必須)

以下三行新增配置,我本人測試后,不添加三行,也不影響用戶文件的上傳,,姑且保留,如有哪位網友知道原因,可以給我留言

pasv_enable=YES

pasv_min_port=3000

pasv_max_port=30010

這表示使用被動模式,用於傳輸數據的端口分配從30000-30010之間。

 

 配置用戶列表

在/etc/vsftpd/下新增文件chroot_list ,此文件和上面的路徑對應

命令:vi /etc/vsftpd/chroot_list

插入用戶:ftptest,如果有其他用戶可以在此文件中添加,新添加的用戶訪問根目錄同上面的第二步

保存文件退出。

五:用戶鑒權

因為用戶 ftptest 是 nologin的,所以存在鑒權的問題。 如果鑒權問題不解決,就是永不停息的 530錯誤。。。
解決辦法有如下兩種:

1:方式一: pam.d/vsftpd 文件

vi /etc/pam.d/vsftpd

注釋掉/etc/pam.d/vsftpd文件里這一行:#auth required pam_shells.so
這樣不去鑒權,從而允許 ftptest 這種 nologin用戶登錄 ftp 服務器.

2:方式二:shells 文件

vi /etc/shells

在/etc/shells文件里面增加一行:/sbin/nologin
這樣允許不能登錄系統的用戶通過鑒權

六:重啟服務器

service vsftpd restart

到此vsftpd服務器搭建完成,可以通過上面創建的用戶進行測試

總結:最好將selinux和防火牆都關閉,要不開發的開端口的還需要在防火牆上做規則,關閉后,就不需要做啥規則了。

關閉selinux方法,參考https://www.cnblogs.com/liuzgg/p/11656532.html

關閉防火牆方法:systemctl stop firewalld

在連接過程中,有時報530 login incorrect 錯誤,看看

vi /etc/pam.d/vsftpd 文件是否已注釋掉鑒權。

參考:https://blog.csdn.net/zwd926/article/details/89884089


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM