第十三節(jié)、VSFTP服務(wù)

FTP協(xié)議及VSFTP服務(wù)

FTP是文件傳輸協(xié)議,正是由于這種協(xié)議使得主機間可以共享文件。 FTP 使用TCP生成一個虛擬連接用于控制信息,然后再生成一個單獨的 TCP 連接用于數(shù)據(jù)傳輸。
vsftpd是一款在Linux發(fā)行版中最主流的FTP服務(wù)器程序;特點是小巧輕快,安全易用;能讓其自身特點得發(fā)發(fā)揮和掌握。
目前在開源操作系統(tǒng)中常用的FTP服務(wù)器程序主要有vsftpd、ProFTPD、PureFTPd和wuftpd等

安裝服務(wù)端VSFTP命令

yum install vsftpd* -y

查看命令及相關(guān)文件的安裝路徑,共享目錄路徑
[root@mini ~]# rpm -ql vsftp
/etc/rc.d/init.d/vsftpd   #啟動文件位置
/etc/vsftpd/vsftpd.conf #配置文件位置
/usr/sbin/vsftpd  #命令位置
[root@mini pub]# pwd
/var/ftp/pub       #上傳文件的默認(rèn)發(fā)布目錄
修改配置文件(先備份原文件再去除帶#的注釋語句)
[root@mini ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak#備份原配置文件
[root@mini ~]# grep -v "#" /etc/vsftpd/vsftpd.conf #利用v參數(shù)查找除注釋語句外的內(nèi)容,粘貼到新建的配置文件中
anonymous_enable=YES    #允許匿名用戶訪問FTP服務(wù)器
local_enable=YES  #允許本地用戶登錄FTP
write_enable=YES #允許用戶在FTP目錄下有寫的權(quán)限
local_umask=022  #設(shè)置本地用戶文件生成掩碼,計算權(quán)限用
dirmessage_enable=YES #激活目錄信息,當(dāng)遠(yuǎn)程用戶更改目錄時,將出現(xiàn)提示信息
xferlog_enable=YES #啟用上傳和下載日志功能,記錄上傳下載行為
connect_from_port_20=YES #啟用FTP數(shù)據(jù)端口的連接請求
xferlog_std_format=YES #是否使用標(biāo)準(zhǔn)的ftpd xferlog日志文件格式
listen=YES #使vsftpd處于獨立啟動監(jiān)聽端口模式

pam_service_name=vsftpd  #設(shè)置PAM認(rèn)證服務(wù)配置文件名稱,文件存放在/etc/pam.d/目錄
userlist_enable=YES #用戶列表中的用戶是否允許登錄FTP服務(wù)器,默認(rèn)是不允許
tcp_wrappers=YES #使用tcp_wrqppers作為主機訪問控制方式,是否受防火墻控制
[root@mini ~]# vim /etc/vsftpd/vsftpd.conf   #新建配置文件
######VSFTPD CONFIG 2016
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
備注信息,配置文件中的userlist列表
#該列表中的用戶默認(rèn)禁止登錄FTP服務(wù)器,默認(rèn)是一些系統(tǒng)用戶,如果禁止某些用戶直接加入該列表
[root@mini vsftpd]# cat /etc/vsftpd/user_list 
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
##另外ftpusers 目錄下的用戶一樣也禁止登錄FTP服務(wù)器,比如想用root用戶就需要在兩張表中把root用戶都刪除
[root@mini vsftpd]# cat /etc/vsftpd/ftpusers 
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
啟動VSFTP

/etc/init.d/vsftpd start|stop|restart

客戶端遠(yuǎn)程連接

我的電腦地址欄輸入ftp://VSFTP_IP
vsftp的用戶密碼可以直接使用linux系統(tǒng)創(chuàng)建的普通用戶和密碼,直接通過useradd user_name來創(chuàng)建,而且上傳的文件會存放在每個用戶的家目錄/home中.

故障排查

搭建時遇到如下情況,客戶端無法連接FTP服務(wù)器


windows無法連接

經(jīng)排查應(yīng)該是用了代理軟件的問題,看看IE設(shè)置里的連接的局域網(wǎng)設(shè)置,是不是打開了自動配置腳本?
解決方法就是取消使用自動配置腳本,或者打開代理軟件。


解決辦法
創(chuàng)建VSFTP虛擬用戶

centos6.5版本下

  • 首先安裝db4數(shù)據(jù)庫服務(wù)yum install db4* -y
  • 創(chuàng)建虛擬用戶目錄文件
[root@mini ~]# vim /etc/vsftpd/ftpusers.txt  #創(chuàng)建文件
hx  #用戶名1
1231 #密碼
hw  #用戶名2
2223 #密碼
  • 生成虛擬用戶數(shù)據(jù)庫文件db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
  • 更改數(shù)據(jù)庫文件權(quán)限chmod 700 /etc/vsftpd/vsftpd_login.db
  • 配置PAM驗證文件
    在配置文件vi /etc/pam.d/vsftpd 行首加入如下兩行認(rèn)證語句:(如果是32位,lib64需改成lib,如果RedHat,加入的語句不一樣,需注意)
auth        sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/vsftpd_login
account  sufficient      /lib64/security/pam_userdb.so      db=/etc/vsftpd/vsftpd_login
  • 創(chuàng)建vsftpd映射本地用戶
    所有的FTP虛擬用戶需要使用一個系統(tǒng)用戶,這個系統(tǒng)用戶不需要密碼,也不需要登錄。主要用來做虛擬用戶映射使用。
    useradd -s /sbin/nologin ftpuser
  • 修改完整版vsftpd.conf配置文件
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YES
guest_enable=YES  #啟用虛擬用戶映射本地用戶
guest_username=ftpuser #使用的本地用戶名
allow_writeable_chroot=YES #chroot將權(quán)限最小化的限制到服務(wù)本身如這里限制到vsftp
pam_service_name=vsftpd #引用認(rèn)證文件,可重定向到其他配置文件如vsftpd.vu
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虛擬用戶配置文件路徑
virtual_use_local_privs=YES #虛擬用戶擁有本地用戶的所有權(quán)限

保存重啟,service vsftpd restart 即可使用虛擬用戶登錄,這時候所有的虛擬用戶共同使用/home/ftpuser目錄上傳下載
即所有虛擬用戶的文件都保存在ftpuser的家目錄下/home/ftpuser

  • 為不同的虛擬用戶創(chuàng)建各自的目錄
    mkdir -p /etc/vsftpd/vsftpd_user_conf 創(chuàng)建虛擬用戶配置目錄
vim hx #創(chuàng)建對應(yīng)用戶的配置文件
local_root=/home/ftpuser/hx  #鎖定用戶到自己的專用目錄
write_enable=YES   #可寫
anon_world_readable_only=YES  #允許讀取
anon_upload_enable=YES  #允許上傳
anon_mkdir_write_enable=YES  #允許創(chuàng)建文件
anon_other_write_enable=YES  #允許其他人寫入
  • 創(chuàng)建各自專屬目錄并授權(quán)
    mkdir -p /home/ftpuser/{wugk,wugk1} ;chown -R ftpuser:ftpuser /home/ftpuser
備注:因為虛擬用戶是基于db庫文件,所以每次修改完/etc/vsftpd/ftpusers.txt必須重新生成庫文件

db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db

RHEL7系統(tǒng)VSFTP服務(wù)

服務(wù)安裝后需要注意開啟selinux狀態(tài)時候基于安全的考慮selinux的作用域會限制VSFTP的共享目錄pub下文件的創(chuàng)建寫入權(quán)限報錯550

ftp>mkdir gugu
550 Create directory operation failed.
[root@localhost~]# getsebool  -a |grep ftp
ftpd_full_access --> off   #篩選結(jié)果ftp完全訪問權(quán)限是關(guān)閉的
[root@localhost~]# setsebool   -P  ftpd_full_access=on   #打開權(quán)限

在linux系統(tǒng)上測試需要安裝ftp工具

[root@localhost~]# yum install -y ftp
[root@localhost~]#  ftp 192.168.10.10 #登錄VSFTP服務(wù)器
Connected to 192.168.10.10 (192.168.10.10)
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root) : anonymous    #匿名用戶
331 Please specify the password.
Password:
230 Login successful.
Remote  system  type is  UNIX.
Using  binary  mode to  transfer  files.
ftp>cd pub
250 Directory successfully changed. 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 《水滸傳》第五回中,山寨王周通看上了桃花莊劉太公的獨生女,硬要把她娶上山。路過桃花莊的魯智深受到劉太公的款待后,出...
    愛吃魚的企鵝閱讀 1,140評論 0 0
  • Redis簡介 Redis 是一個開源(BSD許可)的,內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息中間...
    萬總有點菜閱讀 320評論 0 0
  • 晚上在教室待不下去了,早早回到寢室。本周的學(xué)習(xí)計劃是審計14財管9經(jīng)濟法9,好像每個都沒有達(dá)到預(yù)期。坐在教室里,坐...
    檸檬安然閱讀 151評論 0 0