Linux(Centos)配置vsftp使用賬號密碼(虛擬用戶)登錄ftp進行文件上傳和修改


 

安裝vsftp

 yum install vsftpd -y

 

安裝完成之后進入vsftp的配置文件夾

cd /etc/vsftpd/

文件夾內容如下

[root@VM-0-12-centos vsftpd]# ll
total 20
-rw------- 1 root root  125 Oct 14 00:10 ftpusers
-rw------- 1 root root  361 Oct 14 00:10 user_list
-rw------- 1 root root 5116 Oct 14 00:10 vsftpd.conf
-rwxr--r-- 1 root root  338 Oct 14 00:10 vsftpd_conf_migrate.sh

 

在當前目錄下創建一個用戶名和密碼的文件 

文件名名稱為 ftp_user.txt

vim /etc/vsftpd/ftp_user.txt

 

再ftp_user.txt文件里配置用戶和密碼

yvioo
123456
kaifa
12345678

其中 

 yvioo 是ftp登錄的用戶名

123456 是ftp中yvioo用戶登錄的密碼

kaifa 是ftp登錄的用戶名

12345678 是ftp中kaifa用戶登錄的密碼

以此內推,可以添加多個

 

然后保存退出

wq!

 

執行命令 生成虛擬數據庫

db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_login.db

其中

/etc/vsftpd/ftp_user.txt 是上面存放用戶名和密碼文件的絕對路徑

/etc/vsftpd/ftp_login.db  這個是生成的數據庫的路徑 數據庫名稱為 ftp_login.db

 

設置生成的數據庫的訪問權限

chmod 777 /etc/vsftpd/ftp_login.db 

 

編輯賬號的pam驗證文件

vim /etc/pam.d/vsftpd

 

在最上方增加

auth    sufficient      pam_userdb.so db=/etc/vsftpd/ftp_login
account sufficient      pam_userdb.so db=/etc/vsftpd/ftp_login

其中

db=/etc/vsftpd/ftp_login 這個就是上一步生成的虛擬數據庫(文件名稱根據自己的來),注意:這里不用加 .db 后綴

如下圖所示

 

 

 

創建一個文件夾

mkdir /home/vsftpd

 

新建一個系統用戶vsftpd

用戶登錄終端設為/bin/false(即不能登錄系統)

useradd vsftpd -d /home/vsftpd -s /bin/false 

其中 

vsftpd   這個就是創建的用戶的用戶名(這個下面配置文件里會使用)

/home/vsftpd  就是剛才創建的文件夾

 

根據需要創建修改/etc/vsftpd/vsftpd.conf,以下設置

vim /etc/vsftpd/vsftpd.conf

 

修改配置

#禁用匿名登入

anonymous_enable=YES 改為 anonymous_enable=NO

#監聽為專用模式

listen=NO 改為   listen=YES

 #將ipv6監聽注釋掉

listen_ipv6=YES 改為 #listen_ipv6=YES

 

 

在配置文件底部增加

#對用戶訪問只限制在主目錄 不能訪問其他目錄(這個已經有了 但是默認是注釋的 可以取消注釋或者直接新增)
chroot_local_user=YES

#啟用guest
guest_enable=YES


#使用虛擬賬號形式(vsftpd 就是我們上面創建的用戶的用戶名)
guest_username=vsftpd


#虛擬賬號配置目錄(這個還沒創建 我們下面再進行創建,先這樣寫)
user_config_dir=/etc/vsftpd/user_conf


#對vsftpd的用戶使用pam認證

(這個就是我們上面改的pam驗證文件的文件名,這個默認已經有了,所以不用添加, 沒有的話再添加)
pam_service_name=vsftpd

 

 

#允許本地用戶登錄(這個默認的也有了,沒有的話添加上)

local_enable=YES

 

然后保存退出

 

接着創建虛擬賬號配置目錄

mkdir /etc/vsftpd/user_conf

進入文件夾

cd /etc/vsftpd/user_conf/

創建文件

vim /etc/vsftpd/user_config/yvioo

其中

 yvioo 就是我們上面ftp_user.txt中配置的ftp的賬號的用戶名

(這里創建的文件名要對應上,如果有多個ftp用戶就創建多個ftp文件對應的用戶名文件,然后在里面設置權限即可)

然后添加

write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/www

 

說明如下

#是否允許登陸用戶有寫權限。屬於全局設置,默認值為YES。
write_enable=YES
#如果設為YES,則允許匿名登入者下載可閱讀的檔案(可以下載到本機閱讀,不能直接在FTP服務器中打開閱讀)。默認值為YES。
anon_world_readable_only=NO
#如果設為YES,則允許匿名登入者有上傳文件(非目錄)的權限,只有在write_enable=YES時,此項才有效。當然,匿名用戶必須要有對上層目錄的寫入權。默認值為NO。
anon_upload_enable=YES
#如果設為YES,則允許匿名登入者有新增目錄的權限,只有在write_enable=YES時,此項才有效。當然,匿名用戶必須要有對上層目錄的寫入權。默認值為NO。
anon_mkdir_write_enable=YES
#如果設為YES,則允許匿名登入者更多於上傳或者建立目錄之外的權限,譬如刪除或者重命名。(如果 anon_upload_enable=NO,則匿名用戶不能上傳文件,但可以刪除或者重命名已經存在的文件;如果 anon_mkdir_write_enable=NO,則匿名用戶不能上傳或者新建文件夾,但可以刪除或者重命名已經存在的文件夾。)默認值為NO。
anon_other_write_enable=YES
#當本地用戶登入時,將被更換到定義的目錄下。默認值為各用戶的家目錄。可以自己修改
local_root=/data/www

可以根據自己的需要添加,如果想擁有所有權限 就都加入

 

然后保存退出

 

給要遠程的目錄local_root添加權限

chmod 777 /data/www/

 

 

接着重啟服務

#啟動
service vsftpd start
#重啟
service vsftpd restart

 

然后就可以用軟件,使用用戶名:yvioo   密碼:123456 訪問遠程文件了

 

如果出現

連接失敗
OOPS: vsftpd: refusing to run with writable root inside chroot()

出現這個報錯

這是因為從2.3.5之后,vsftpd增強了安全檢查,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權限了!如果檢查發現還有寫權限,就會報該錯誤。

 

我們在修改配置文件 在底部增加

allow_writeable_chroot=YES

 

然后重啟即可

 


免責聲明!

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



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