前期準備:
在虛擬機上
vim /etc/sysconfig/selinux ##關閉內核加強型火牆
SELINUX=disabled
reboot
getenforce ##確認內核加強型火牆已經關閉
hostnamectl 查看系統版本
yum install lftp -y
1.ftp的定義
ftp:// ##文本傳輸協議
2.ftp協議提供的軟件
在rhel7中:
vsftpd
3.部署ftp服務
ftp服務的基本信息
軟件安裝包: vsftpd
默認發佈目錄: /var/ftp
協議接口: 21/tcp
服務配置文件: /etc/vsftpd/vsftpd.conf
報錯id的解析:
530 | #用戶認證失敗 |
---|---|
500 | #文件系統權限過大 |
553 | #本地文件系統權限過小服務器的權限系統拒絕操操 |
550 #服務本身功能未開放 |
1)安裝ftp服務
yum install vsftpd -y
2)開啓ftp服務
systemctl start vsftpd
systemctl enable vsftpd
3)設置防火牆永久允許ftp服務運行
方法1:直接通過命令實現
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-all
方法2:通過圖形進行設置
在主機上測試是否成功開啓ftp服務
4.ftp服務的管理
編輯ftp配置文件
vim /etc/vsftpd/vsftpd.conf
注意:每次編輯配置文件後需要重啓ftp服務才能生效,編輯時每行後面不要加空格否則服務會起不來
匿名用戶
anonymous_enable=YES|NO ##匿名用戶是否可以登陸
當anonymous_enable=NO時
再次從真機上登陸時會發現無法使用匿名用戶登陸
本地用戶
local_enable=YES|NO ##本地用戶是否可以登陸
wirte_enable=YES|NO ##ftp是否對登陸用戶可寫
1)匿名用戶上傳
vim /etc/vsftpd/vsftpd.conf
wirte_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
測試:
如果你按着這個步驟來仍然報錯553那說明你前期準備沒做或者做了以後虛擬機reset了
2)匿名用戶家目錄修改
anon_root=/westos
systemctl restart vsftpd
mkdir /westos
touch /westos/westosfile
測試:
3)匿名用戶上傳文件默認權限修改
anon_umask=022
測試:
4)匿名用戶建立目錄
anon_mkdir_write_enable=YES|NO
測試:
5)匿名用戶下載
anon_world_readable_only=YES|NO ##設定參數值爲no表示匿名用戶可以下載
測試:
6)匿名用戶刪除
anon_other_write_enable=YES|NO
測試:
7)匿名用戶使用的用戶身份修改
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
測試:
上傳文件的所有人變爲了student,權限爲644
8)最大上傳速率
anon_max_rate=102400 ##100k
測試:
9)最大鏈接數
max_clients=2
測試:
第一個連接成功
第二個連接成功
第三個連接失敗
10)本地用戶家目錄的修改:
local_root=/westos
測試:
11)本地用戶上傳文件權限
local_umask=022
測試:
12)限制本地用戶瀏覽/目錄
所有用戶被鎖定到自己的家目錄中
chroot_local_user=YES #禁止用戶訪問/目錄
chmod u-w /home/*
注意:ftp的家目錄不能有寫權限
看到500報錯 將w權限去除即可
測試:
用戶黑名單的建立 #黑白名單的建立取決於默認權限chroot_local_user=是禁止還是允許,
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
systemctl restart vsftpd
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list #編輯後立即生效
測試:
用戶student被所在自己的家目錄中
其他用戶可以訪問/目錄
用戶白名單的建立
chroot_local_user=YES
chroot_list_ecable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
測試:
student用戶登陸可以訪問/目錄
其他用戶登陸被鎖在自己家目錄下
13)限制本地用戶登陸
vim /etc/vsftpd/ftpusers ##用戶永久黑名單,只要出現在此黑名單你就永遠是黑的
測試:
使用student用戶身份連接失敗
使用其他用戶身份連接成功
vim /etc/vsftpd/user_list ##用戶臨時黑名單
用戶白名單設定
userlist_deny=NO
/etc/vsftpd/user_list ##參數設定,此文件變成用戶白名單,只有在名單中出現的用戶可以登陸ftp
測試:
使用student用戶身份可以成功登陸
使用其他用戶身份無法登陸
14)虛擬用戶的設定:
創建虛擬帳號身份
vim /etc/vsftpd/guestfile ##文件名稱任意
db_load -T -t hash -f /etc/vsftpd/guestfile /etc/vsftpd/guestfile.db ##對文件指定hash加密
ls /etc/vsftpd/ ##可以看到加密文件生成
vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd ##編輯vsftpd配置文件我們可以看到認證的名稱爲pam,認證方式爲vsftpd
rpm -ql vsftpd ##查看vsftpd的安裝目錄,找到管理認證方式的文件/etc/pam.d/vsftpd
vim /etc/pam.d/vsftpd ##查看其書寫格式
vim /etc/pam.d/westos ##手動編寫一個認證管理文件文件名稱任意
account | required | pam_userdb.so | db=/etc/vsftpd/guestfile |
---|---|---|---|
帳號 | 認證方式 | 認證插件 | 讀取文件 |
auth | required | pam_userdb.so | db=/etc/vsftpd/guestfile |
認證 |
注意:該文件內文件後綴會自動補齊,如果你輸入db=/etc/vsftpd/guestfile.db 退出保存後就會被識別爲db=/etc/vsftpd/guestfile.db.db,產生報錯
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos ##設定認證方式
guest_enable=YES ##開啓虛擬用戶認證
guest_username=ftp ##虛擬帳號身份指定
systemctl restart vsftpd
測試:
成功使用虛擬用戶身份登陸
15)虛擬用戶家目錄的修改
mkdir /var/ftpuserdir/westos{1…3} -p ##創建虛擬用戶家目錄
vim /etc/vsftpd/vsftpd.conf
指定虛擬用戶家目錄:
systemctl restart vsftpd.service
mkdir /var/ftpuserdir/westos{1…3}/pub ##在各個目錄下創建文件以示區別
touch /var/ftpuserdir/westos1/westos1file
touch /var/ftpuserdir/westos2/westos2file
touch /var/ftpuserdir/westos3/westos3file
測試:
16)虛擬帳號配置獨立
chmod 775 /var/ftpuserdir/westos*/pub/ ##不改報錯553
chgrp ftp /var/ftpuserdir/westos*/pub/
vim /etc/vsftpd/vsftpd.conf
將匿名用戶權限全部屏蔽
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf ##目錄創建和你在user_config_dir=後面寫的一樣,寫錯報錯550
vim /etc/vsftpd/userconf/westos1
anon_upload_enable=YES
systemctl restart vsftpd.service
測試:
只有虛擬用戶westos1可以上傳文件