vsftp 安裝

 

相關環境:
redhat AS4.6    vsftpd-1.2.0.tar.gz
shell


1、以系統用戶訪問ftp服務器
數據庫

一、卸載系統自帶的ftp軟件(若是有)
[root@test root]# rpm -qa | grep ftp
[root@test root]# rpm -e ftp lftp
[root@test root]# cd /usr/local/src
瀏覽器


2. 開始編譯與安裝 固然也能夠yum方式安裝
# vsftpd 預設安裝的路徑爲:
# 全部可執行檔放置在 /usr/local/sbin 裏面;
# man page 放置在 /usr/local/man/man5 與 /usr/local/man/man8
# 若 super daemon 爲 xinetd 時,會複製一份啓動檔案到 /etc/xinetd.d 去!
服務器

[root@test src]# tar -zxvf /root/vsftpd-1.2.0.tar.gz
[root@test src]# cd vsftpd-1.2.0/                                         # 在這個目錄下有個 INSTALL 與 README 請務必察看喔!
[root@test vsftpd-1.2.0]# make                       # 編譯的過程可能有 warning 的訊息,只要不是 Error 就能夠不理他!
[root@test vsftpd-1.2.0]# make install
[root@test vsftpd-1.2.0]# mkdir /etc/ftp
[root@test vsftpd-1.2.0]# cp vsftpd.conf /etc             # 創建主配置文件
[root@test vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd      # 將 PAM 身份認證模塊給他放進去系統裏面!
[root@test vsftpd-1.2.0]# useradd -M ftp -d /var/ftp            # 創建 ftp 這個使用者以及他的家目錄:# 若原本就存在 ftp 這個使用者,那就不須要進行新增!
[root@test vsftpd-1.2.0]# mkdir -p /var/ftp
[root@test vsftpd-1.2.0]# chown root:root /var/ftp             # 更改目錄權限
[root@test vsftpd-1.2.0]# chmod 755 /var/ftp
[root@test vsftpd-1.2.0]# mkdir -p /usr/share/empty            # 創建 vsftpd 須要的特殊目錄

3. 若是須要移除時:
# 若是想要移除 vsftp 時,能夠這樣作
[root@test vsftpd-1.2.0]# rm /usr/local/sbin/vsftpd
[root@test vsftpd-1.2.0]# rm /usr/local/man/man5/vsftpd.conf.5
[root@test vsftpd-1.2.0]# rm /usr/local/man/man8/vsftpd.8
[root@test vsftpd-1.2.0]# rm /etc/xinetd.d/vsftpd
[root@test vsftpd-1.2.0]# rm /etc/ftp/vsftpd.conf
session

4. 創建上傳目錄:
[root@test vsftpd-1.2.0]# cd /root
[root@test ~]# mkdir -p /var/ftp/upload
[root@test ~]# chown ftp /var/ftp/upload
app

5. 編輯配置文件
[root@test root]# more /etc/ftp/vsftpd.conf | grep -v "#" | moresocket

#####系統相關設置
dirmessage_enable=YES            # 顯示目錄信息
xferlog_enable=YES             # 記錄用戶的上傳下載行爲
connect_from_port_20=YES          # 使用20端口傳輸數據
xferlog_file=/var/log/vsftpd.log       # log文件
idle_session_timeout=600          # 鏈接超時600s
data_connection_timeout=120         # 數據傳輸超時120s
use_localtime=YES              # 使用本地時間
xferlog_std_format=YES           # 使用同wu ftp相同的文件格式
pam_service_name=vsftpd           # pam 模塊名稱
tcp_wrappers=YES              # tcp_wrappers支持
listen_port=21               # ftp 端口
listen=YES                 # 以獨立進程啓動
max_clients=50               # 最大客戶端
max_per_ip=5                # 同一IP最大鏈接數
ascii_upload_enable=NO           # 不使用ascii格式上傳
ascii_download_enable=NO          # 不使用ascii格式下載
nopriv_user=ftp               # 服務運行者爲 ftp
write_enable=YES               # 寫入權限
ls_recurse_enable=NO                        #禁止用戶登錄FTP後使用"ls -R"的命令。該命令會對服務器性能形成巨大開銷。若是該項被容許,那麼擋多用戶同時使用該命令時將會對該服務器形成威脅.
tcp

####本地用戶訪問相關設置
local_enable=YES              # 容許本地用戶訪問
local_umask=022               # 本地用戶上傳的文件權限
chroot_list_enable=YES           # 將用戶限止在本身的主目錄內
chroot_list_file=/etc/ftp/vsftpd.chroot_list  # 限定不能更改目錄的用戶
userlist_enable=YES             # 指定能登陸的用戶
userlist_deny=NO              # 指定不能登陸的用戶
userlist_file=/etc/ftp/vsftpd.user_list   # 指定能登陸的用戶
local_max_rate=10000            # 本地用戶傳輸速度 10000 bytes/second
ide


####匿名用戶訪問相關設置
anonymous_enable=NO              # 匿名用戶登陸
anon_other_write_enable=NO          # 匿名用戶寫入權限
anon_mkdir_write_enable=NO          # 匿名用戶創建目錄權限
anon_upload_enable=NO             # 匿名用戶上傳數據
deny_email_enable=YES            # 限止某email address 用戶使用匿名訪問
banned_email_file=/etc/ftp/vsftpd.banned_emails # 禁止登陸的email address
anon_max_rate=3000             # 匿名用戶傳輸速度 3000 bytes/second
工具

####虛擬用戶訪問相關設置
guest_enable=YES              # 啓用虛擬用戶
guest_username=vsftp                        # 虛擬用戶對應的系統用戶名
user_config_dir=/etc/ftp/vsftpd_user_conf   # 虛擬用戶的個性配置文件目錄

創建相關文件
[root@test root]# touch /etc/ftp/vsftpd.chroot_list   # 此文件內的用戶不能更改目錄     每行一個用戶名


[root@test root]# touch /etc/ftp/vsftpd.user_list     # 只容許此文件內的列出的用戶登陸

每行一個用戶名


[root@test root]# touch /etc/ftp/vsftpd.banned_emails   # 此文件內的email 不能login

每行一個eamil地址


[root@test root]# vi /etc/pam.d/vsftpd     創建pam文件  注意:若是是64位系統,那麼下面的路徑就是/lib64/security/   ,固然也能夠不寫這個路徑       
 
#%PAM-1.0
auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth       required     /lib/security/pam_pwdb.so shadow nullok
auth       required     /lib/security/pam_shells.so
account    required     /lib/security/pam_pwdb.so
session    required     /lib/security/pam_pwdb.so

[root@test root]# vi /etc/xinetd.d/vsftpd
# default: on
# description:
#   The vsftpd FTP server serves FTP connections. It uses
#   normal, unencrypted usernames and passwords for authentication.
# vsftpd is designed to be secure.
service ftp
{
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/local/sbin/vsftpd
#       server_args             =
#       log_on_success          += DURATION USERID
#       log_on_failure          += USERID
        nice                    = 10
        disable                 = yes          # 關閉xinetd模式啓動vsftpd
}

[root@test root]# vsftpd &                              # 啓動ftp服務器
[root@test root]# echo "/usr/local/sbin/vsftpd &" >> /etc/rc.local       # 開機自啓動

6. 測試

創建測試用戶
[root@test root]# useradd -p test1 test1 
[root@test root]# useradd -p test2 test2 
[root@test root]# useradd -p test3 test3

[root@test root]# more /etc/ftp/vsftpd.user_list    # 更改/etc/ftp/vsftpd.user_list內容以下
test2                        # 容許test2 、test3訪問ftp服務器
test3

[root@test root]# more /etc/ftp/vsftpd.chroot_list  # 更改/etc/ftp/vsftpd.chroot_list內容以下
test2                                               # 禁止test1 更改主目錄

使用ftp工具或是瀏覽器時行訪問,得出的結果應該是:

匿名用戶不能訪問

test1 用戶不能訪問
test2 用戶能訪問 可是隻能在自的主目錄中 而且可讀寫
test3 用戶能訪問 也能夠自由切換工做目錄 而且可讀寫

用戶的讀寫權限 需系統文件權限的支持。

完成

2、以虛擬用戶訪問ftp服務器 (推薦方式)

1. 創建虛擬用戶的用戶名和密碼,
  [root@test root]# vi /etc/ftp/logins.txt       
  t1
  pass1
  t2
  pass2
  t3
  pass3
 

格式以下:
<用戶名>
<密 碼>
<用戶名>
<密 碼>

2.創建虛擬用戶數據庫
  [root@test root]# db_load -T -t hash -f /etc/ftp/logins.txt /etc/ftp/vsftpd_login.db           
[root@test root]# chmod 600 /etc/vsftpd_login.db          # 創建虛擬用戶數據庫

3.創建pam認證文件,
  [root@test root]# vi /etc/pam.d/vsftpd.vu      注意:若是是64位系統,那麼下面的路徑就是/lib64/security/ ,固然也能夠不寫這個路徑                          

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login    
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login 

#/etc/vsftpd_login指的就是以前創建的虛擬用戶數據庫      

4.編輯配置文件
  [root@test root]# more /etc/ftp/vsftpd.conf | grep -v "#" | more

#####系統相關設置
dirmessage_enable=YES            # 顯示目錄信息
xferlog_enable=YES             # 記錄用戶的上傳下載行爲
connect_from_port_20=YES          # 使用20端口傳輸數據
xferlog_file=/var/log/vsftpd.log       # log文件
idle_session_timeout=600          # 鏈接超時600s
data_connection_timeout=120         # 數據傳輸超時120s
use_localtime=YES              # 使用本地時間
xferlog_std_format=YES           # 使用同wu ftp相同的文件格式

##############################更改此內容##############################################

pam_service_name=vsftpd.vu         # pam 模塊名稱   這是咱們以前建的pam文件

######################################################################################


tcp_wrappers=YES              # tcp_wrappers支持
listen_port=21               # ftp 端口
listen=YES                 # 以獨立進程啓動
max_clients=50               # 最大客戶端
max_per_ip=5                # 同一IP最大鏈接數
ascii_upload_enable=NO           # 不使用ascii格式上傳
ascii_download_enable=NO          # 不使用ascii格式下載
nopriv_user=ftp               # 服務運行者爲 ftp
write_enable=YES               # 寫入權限
ls_recurse_enable=NO                        #禁止用戶登錄FTP後使用"ls -R"的命令。該命令會對服務器性能形成巨大開銷。若是該項被容許,那麼擋多用戶同時使用該命令時將會對該服務器形成威脅.

####本地用戶訪問相關設置
local_enable=YES              # 容許本地用戶訪問
local_umask=022               # 本地用戶上傳的文件權限
chroot_list_enable=YES           # 將用戶限止在本身的主目錄內
chroot_list_file=/etc/ftp/vsftpd.chroot_list  # 限定不能更改目錄的用戶
userlist_enable=YES             # 指定能登陸的用戶
userlist_deny=NO              # 指定不能登陸的用戶
userlist_file=/etc/ftp/vsftpd.user_list   # 指定能登陸的用戶
local_max_rate=10000          # 本地用戶傳輸速度 10000 bytes/second


####匿名用戶訪問相關設置
anonymous_enable=NO              # 匿名用戶登陸
anon_world_readable_only=NO                 # 匿名只讀
anon_other_write_enable=NO          # 匿名用戶寫入權限
anon_mkdir_write_enable=NO          # 匿名用戶創建目錄權限
anon_upload_enable=NO             # 匿名用戶上傳數據
deny_email_enable=YES            # 限止某email address 用戶使用匿名訪問
banned_email_file=/etc/ftp/vsftpd.banned_emails # 禁止登陸的email address
anon_max_rate=3000             # 匿名用戶傳輸速度 3000 bytes/second


####################添加如下內容###########################
####虛擬用戶訪問相關設置
guest_enable=YES              # 啓用虛擬用戶
guest_username=ftpvu                        # 虛擬用戶對應的系統用戶名
user_config_dir=/etc/ftp/vsftpd_user_conf   # 虛擬用戶的個性配置文件目錄
###########################################################

5.創建相關文件
 [root@test root]# mkdir /etc/ftp/vsftpd_user_conf     # 虛擬用戶的個性配置文件目錄
 [root@test root]# useradd -d /var/ftp -s /sbin/nologin -g ftp ftpvu    # 虛擬用戶對應的系統用戶名
 [root@test root]# chown ftpvu.ftp /var/ftp
 [root@test root]# mkdir -pv /var/ftp/t1  /var/ftp/t2 /var/ftp/t3    # 創建各虛擬用戶的主目錄
 
6.爲各用戶單獨設置訪問權限
 [root@test root]# vi /etc/ftp/vsftpd_user_conf/t1
 local_root=/var/ftp/t1           # 將用戶t1訪問限定在/var/ftp/t1中
 
 [root@test root]# vi /etc/ftp/vsftpd_user_conf/t2
 local_root=/var/ftp/t2           # 將用戶t2訪問限定在/var/ftp/t2中 
 anon_other_write_enable=YES      # 寫入權限
 anon_mkdir_write_enable=YES      # 創建目錄權限
 anon_upload_enable=YES           # 用戶上傳數據
 
 [root@test root]# vi /etc/ftp/vsftpd_user_conf/t3
 anon_other_write_enable=YES      # 寫入權限
 anon_mkdir_write_enable=YES      # 創建目錄權限
 anon_upload_enable=YES           # 用戶上傳數據
 
[root@test root]# more /etc/ftp/vsftpd.user_list   # 更改/etc/ftp/vsftpd.user_list內容以下
t1                   # 容許t一、t二、t3訪問ftp服務器
t2
t3

[root@test root]# more /etc/ftp/vsftpd.chroot_list  # 更改/etc/ftp/vsftpd.chroot_list內容以下
t1                    # 禁止t一、t2更改主目錄
t2

7.測試
使用ftp工具或是瀏覽器時行訪問,得出的結果應該是:

匿名用戶不能訪問
t1   用戶能訪問,只讀權限,只能在主目錄(/var/ftp/t1)裏活動
t2   用戶能訪問,讀寫權限,只能在主目錄(/var/ftp/t2)裏活動
t3   用戶能訪問,讀寫權限,能在/var/ftp裏活動,可切換目錄

完成

 

3、常見錯誤 

1.   ftp登錄時候,500 cannot locate user****

緣由:多是用戶名有問題
注意看 logins.txt文件和
vsftpd.conf裏guest_username有沒有錯,好比多個空格!

2.   530 login failed 
pam驗證錯誤,檢查下/etc/pam.d/***配置文件,看看是否是指向正確的位置
 

3.   登錄後533 cannot create file
緣由,guest_username對目標文件夾沒有權限

4.   530 permission denied
緣由,看一下有沒有權限訪問目錄,還有用戶有沒有加到/etc/ftp/vsftpd.user_list文件中。

 

4、補充:

 

若是想更改用戶類型,好比原本是系統用戶訪問ftp,如今想要用虛擬用戶訪問ftp,更改vsftpd.conf中的pam_service_name=vsftpd 改成 pam_service_name=vsftpd.vu, 反之亦然。

相關文章
相關標籤/搜索