vsftpd配置虛擬用戶爲登陸用戶02

1.安裝vsftpd

安裝依賴包:
yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl
新建vsftpd系統用戶:
#創建Vsftpd服務的宿主用戶
useradd vsftpd -M -s /sbin/nologin
#創建Vsftpd虛擬宿主用戶
useradd ftpvload -M -s /sbin/nologin
安裝vsftpd
yum -y install vsftpd

2.配置vsftpd

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back

2.1 修改vsftpd.conf配置文件

vim /etc/vsftpd/vsftpd.conf
配置以下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to FTP Server
chroot_local_user=YES
ls_recurse_enable=NO
listen=YES
hide_ids=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftpvload
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf
主要是下面的一些配置參數介紹:
anonymous_enable=NO
#設定不容許匿名訪問
local_enable=YES
#設定本地用戶能夠訪問。注意:主要是爲虛擬宿主用戶,若是該項目設定爲NO那麼全部虛擬用戶將沒法訪問。
write_enable=YES
#設定能夠進行寫操做。
local_umask=022
#設定上傳後文件的權限掩碼。
anon_upload_enable=NO
#禁止匿名用戶上傳。
anon_mkdir_write_enable=NO
#禁止匿名用戶創建目錄。
dirmessage_enable=YES
#設定開啓目錄標語功能。
xferlog_enable=YES
#設定開啓日誌記錄功能。
connect_from_port_20=YES
#設定端口20進行數據鏈接。
chown_uploads=NO
#設定禁止上傳文件更改宿主。
xferlog_file=/var/log/vsftpd.log
#設定Vsftpd的服務日誌保存路徑。注意,該文件默認不存在。必需要手動touch出來,而且因爲這裏更改了Vsftpd的服務宿主用戶爲手動創建的Vsftpd。必須注意給與該用戶對日誌的寫入權限,不然服務將啓動失敗。
xferlog_std_format=YES
#設定日誌使用標準的記錄格式。
async_abor_enable=YES
#設定支持異步傳輸功能。
ascii_upload_enable=YES
ascii_download_enable=YES
#設定支持ASCII模式的上傳和下載功能。
ftpd_banner=This Vsftp server supports virtual users ^_^
#設定Vsftpd的登錄標語。
chroot_list_enable=NO
#禁止用戶登出本身的FTP主目錄。
ls_recurse_enable=NO
#禁止用戶登錄FTP後使用"ls -R"的命令。該命令會對服務器性能形成巨大開銷。若是該項被容許,那麼當多用戶同時使用該命令時將會對該服務器形成威脅。
listen=YES
#設定該Vsftpd服務工做在StandAlone模式下。
pam_service_name=vsftpd #設定PAM服務下Vsftpd的驗證配置文件名。所以,PAM驗證將參考/etc/pam.d/下的vsftpd文件配置。
userlist_enable=YES
#設定userlist_file中的用戶將不得使用FTP。
tcp_wrappers=YES
#設定支持TCP Wrappers

#如下這些是關於Vsftpd虛擬用戶支持的重要配置項目。默認Vsftpd.conf中不包含這些設定項目,須要本身手動添加配置
guest_enable=YES
#設定啓用虛擬用戶功能。
guest_username=ftpvload
#指定虛擬用戶的宿主用戶。
virtual_use_local_privs=YES
#設定虛擬用戶的權限符合他們的宿主用戶。
user_config_dir=/etc/vsftpd/vconf
#設定虛擬用戶我的Vsftp的配置文件存放路徑。也就是說,這個被指定的目錄裏,將存放每一個Vsftp虛擬用戶個性的配置文件,一個須要注意的地方就是這些配置文件名必須和虛擬用戶名相同。
創建Vsftpd的日誌文件,並更該屬主爲Vsftpd的服務宿主用戶:
touch /var/log/vsftpd.log
chown vsftpd.vsftpd /var/log/vsftpd.log

2.2 虛擬用戶配置

建立虛擬用戶配置文件存放路徑
mkdir /etc/vsftpd/vconf/ -pv
製做虛擬用戶數據庫文件
touch /etc/vsftpd/virtusers
新建一個測試用虛擬用戶
vim /etc/vsftpd/virtusers
編輯這個虛擬用戶名單文件,在其中加入用戶的用戶名和口令信息。格式很簡單:「奇數行用戶名,偶數行口令」。
virtusers文件格式以下:
test     #用戶名
test1234 #用戶密碼
生成虛擬用戶數據文件:
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
須要特別注意的是,之後再要添加虛擬用戶的時候,只須要按照「一行用戶名,一行口令」的格式將新用戶名和口令添加進虛擬用戶名單文件。可是光這樣作還不夠,這樣是不會生效的!還要再執行一遍「 db_load -T -t hash -f 虛擬用戶名單文件 虛擬用戶數據庫文件.db 」的命令使其生效才能夠!

2.3 設置認證文件PAM

在編輯前作好備份:
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
編輯Vsftpd的PAM驗證配置文件,把原來的配置文件所有註釋掉(不註釋掉虛擬用戶會登陸不上),添加以下行
#vim /etc/pam.d/vsftpd
auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
#以上兩條是手動添加的,內容是對虛擬用戶的安全和賬戶權限進行驗證。
這裏的auth是指對用戶的用戶名口令進行驗證。
這裏的accout是指對用戶的賬戶有哪些權限哪些限制進行驗證。
其後的sufficient表示充分條件,也就是說,一旦在這裏經過了驗證,那麼也就不用通過下面剩下的驗證步驟了。相反,若是沒有經過的話,也不會被系統當即擋之門外,由於sufficient的失敗不決定整個驗證的失敗,意味着用戶還必須將經歷剩下來的驗證審覈。
再後面的/lib/security/pam_userdb.so表示該條審覈將調用pam_userdb.so這個庫函數進行。
最後的db=/etc/vsftpd/virtusers則指定了驗證庫函數將到這個指定的數據庫中調用數據進行驗證。

2.4 虛擬用戶配置

規劃好虛擬用戶的主路徑:
mkdir /var/ftp/virtual
創建測試用戶的FTP用戶目錄:
mkdir /var/ftp/virtual/test1
更改虛擬用戶的主目錄的屬主爲虛擬宿主用戶:
chown -R ftpvload.ftpvload /var/ftp/virtual/
創建虛擬用戶配置文件模版:
vi /etc/vsftpd/vconf/vconf.tmp
vconf.tmp內容以下:
local_root=/var/ftp/virtual/username
#指定虛擬用戶的具體主路徑
anonymous_enable=NO
#設定不容許匿名用戶訪問
write_enable=YES
#設定容許寫操做
local_umask=022
#設定上傳文件權限掩碼
anon_upload_enable=NO
#設定不容許匿名用戶上傳
anon_mkdir_write_enable=NO
#設定不容許匿名用戶創建目錄
idle_session_timeout=600
#設定空閒鏈接超時時間
data_connection_timeout=120
#設定單次連續傳輸最大時間
max_clients=10
#設定併發客戶端訪問個數
max_per_ip=5
#設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟件
local_max_rate=50000
#設定該用戶的最大傳輸速率,單位b/s
測試用戶複製配置模板
cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test
vim /etc/vsftpd/vconf/test

3.測試配置

使用ftp鏈接以後,測試狀況以下

4.自動腳本

4.1 自動安裝配置

#!/bin/bash
#date:2017-08-15
#version:0.0.2

#開始安裝vsftpd
echo ">>> 1. Start install Vsftpd ......"
yum -y install pam pam-devel db4 de4-devel db4-tcl vsftpd
mkdir /var/ftp/virtual
useradd vsftpd -M -s /sbin/nologin
useradd ftpvload -d /var/ftp/ -s /sbin/nologin
sleep 3
chown -R ftpvload.ftpvload /var/ftp/
sleep 5

#開始配置vsftpd
echo ">>> 2. Start config Vsftpd ......"
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back

echo "anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to FTP Server
chroot_local_user=YES
ls_recurse_enable=NO
listen=YES
hide_ids=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftpvload
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf" > /etc/vsftpd/vsftpd.conf

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
sed -i s/^/#/g /etc/pam.d/vsftpd
echo "auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers" >> /etc/pam.d/vsftpd
sleep 3

#開始配置其它
echo ">>> 3. Start config other ......"
touch /var/log/vsftpd.log
chown vsftpd.vsftpd /var/log/vsftpd.log
mkdir /etc/vsftpd/vconf/ -p
sleep 3

#配置虛擬用戶
echo ">>> 4. Start config vitual user"
echo -e "test\ntest1234" >> /etc/vsftpd/virtusers
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
mkdir /var/ftp/virtual/test

echo "local_root=/var/ftp/virtual/username
#指定虛擬用戶的具體主路徑
anonymous_enable=NO
#設定不容許匿名用戶訪問
write_enable=YES
#設定容許寫操做
local_umask=022
#設定上傳文件權限掩碼
anon_upload_enable=NO
#設定不容許匿名用戶上傳
anon_mkdir_write_enable=NO
#設定不容許匿名用戶創建目錄
idle_session_timeout=600
#設定空閒鏈接超時時間
data_connection_timeout=120
#設定單次連續傳輸最大時間
max_clients=10
#設定併發客戶端訪問個數
max_per_ip=5
#設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟件
#local_max_rate=50000
#設定該用戶的最大傳輸速率,單位b/s" >> /etc/vsftpd/vconf/vconf.tmp

cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test
sed -i s/username/test/g /etc/vsftpd/vconf/test

echo "All OVER! "

4.2 新增用戶

#!/bin/bash
#date:2017-05-25
if read -t 5 -p "Please enter you name: " username
then
   if [ -f /etc/vsftpd/vconf/$username ]  #判斷用戶是否存在
   then
      echo "The $username is exists, please input another name."
   else
      read -s -p "Please enter your password: " passwd
	  echo -e "$username\n$passwd" >> /etc/vsftpd/virtusers
	  db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
      mkdir -p /var/ftp/virtual/$username
      chown -R ftpvload.ftpvload /var/ftp
      cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/$username
      sed -i s/username/$username/g /etc/vsftpd/vconf/$username
      echo "The config is over."
   fi
else
   echo -e "\nThe 5s has passed, you are to slow! "
fi
4.3 刪除用戶



相關文章
相關標籤/搜索