ftp服務的定義
ftp:// 檔案傳輸協定
ftp協定提供的軟體
在rhel7中:
vsftpd
ftp服務的基本資訊
軟體的安裝包:vsftpd
預設釋出目錄:/var/ftp
協定接口: 21 tcp
服務的配置檔案: /etc/vsftpd/vsftpd.conf
部署ftp服務
yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
firewall-cmd –permanent –add-service=ftp 添加 ftp服務到火牆白名單中
firewall-cmd –reload
一切完成後看一下 getenforce 的狀态,若為enforcing 則需關閉
vim /etc/sysconfig/selinux 檔案
reboot虛拟機
getenfoce 檢視狀态,為disabled就可以進行實驗。
測試
報錯解析
530密碼錯,使用者認證失敗
550服務本身不允許
553本地檔案系統權限過小
500權限太大了
ftp服務的配置檔案
vim /etc/vsftpd/vsftpd.conf
ftp是否對登陸使用者可寫
write enable=YES|NO
可以看到參數為NO時,ftp服務對使用者不可寫
可以看到參數為YES時,ftp服務對使用者可寫
=========================匿名使用者權限設定===============================
1.匿名使用者是否可以登陸ftp伺服器
anontmous enable=YES|NO
可以看到參數為YES時,匿名使用者可登陸ftp伺服器
可以看到參數為NO時,匿名使用者不可登陸ftp伺服器
2.匿名使用者的上傳
[root@westos ~]# vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
[root@westos ~]# systemctl restart vsftpd
[root@westos ~]chgrp ftp /var/ftp/pub
[root@westos ~]chmod 775 /var/ftp/pub
put上傳
3.匿名使用者的上傳權限更改
寫入:anon_umask=022
4.匿名使用者建立目錄
寫入:anon_mkdir_write_enable=YES
5.匿名使用者下載下傳
預設不能下載下傳
寫入:anon_world_readable_only=YES|NO #NO表示匿名使用者可以下載下傳
測試:
6.匿名使用者删除
寫入:anon_other_write_enable=YES|NO
7.匿名使用者的家目錄修改
vim /etc/vsftpd/vsftpd/vsftpd.conf
anon_root=/westos #匿名使用者進來指定目錄
重新開機服務
8.匿名使用者使用的使用者身份修改
chown_uploads=YES
chown_username=westos
[root@westos westos]# systemctl restart vsftpd
9.匿名使用者上傳的最大速率
寫入:anon_max_rate=20480
10.最大連結數
root@westos ~]# vim /etc/vsftpd/vsftpd.conf
寫入:max_clients=1
=========================本地使用者權限設定===============================
1.本地使用者是否可以登陸ftp伺服器
[root@westos mnt]# vim /etc/vsftpd/vsftpd.conf
修改:local_enable=YES|NO 預設為YES
[root@westos mnt]# systemctl restart vsftpd 重新開機服務
使用者登陸lftp 172.25.254.101 -u gq
2.限制本地使用者浏覽/目錄,所有本地使用者被鎖定到自己家目錄中
chroot_local_user=YES 去掉注釋
寫入:local_root=/mnt
[root@westos mnt]# systemctl restart vsftpd
3.本地使用者上傳檔案權限
local umask=xxx
4.vim /etc/vsftpd/ftpusers #使用者黑名單(系統預設是黑黑名單)
vim /etc/vsftpd/user_list #使用者臨時黑名單
5.使用者白名單設定
userlist_deny=NO
/etc/vsftpd/user_list #參數設定,此檔案變成使用者白名單,隻在名單中出現的使用者可以登陸ftp
ftp虛拟使用者的設定
建立虛拟使用者的原因: 因為系統使用者登陸ftp服務,同時也可以登陸系統,這樣很不安全,是以我們要建立ftp虛拟使用者,使這些使用者隻能登陸ftp
ftp建立虛拟使用者
1>建立虛拟帳号身份
vim /etc/vsftpd/loginusers
編輯内容:
westos1 使用者
123 密碼
westos2 使用者
westos3 使用者
退出并儲存
注意:編輯的時候不要有空格
2>對檔案進行hash加密
執行 db_load -T -t hash -f loginusers loginusers.db
3>編輯檔案(驗證密碼與使用者是否一緻的檔案) 檔案名稱任意
vim /etc/pam.d/ftpauth
寫入
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
4>編輯配置檔案 vim /etc/vsftpd/vsftpd.conf退出後重新啟動服務
修改 pam_service_name=ftpauth
添加 guest_enable=YES
5> 在另一台主機進行測試:可以看到虛拟使用者建立成功,可以登入
注意: 建立虛拟使用者後,本地使用者就不能正常登陸了,但是仍然可以指定本地使用者身份登陸
5>再次編輯配置檔案vim /etc/vsftpd/vsftpd.conf
添加guest_username=tom退出(tom使用者必須存在)
修改後要重新開機!!!
6>檢視tom使用者家目錄下的東西,如果虛拟使用者登入時可以看到以下檔案,則證明虛拟使用者登入身份修改成功
cd /home/
執行 chmod 555 /home/westos減小權限
測試
成功!!!
虛拟使用者獨立家目錄設定
1>首先在這三個家目錄中分别建立檔案
mkdir -p /ftphome/westos{1…3}
mkdir -p /ftphome/westos1/westos1date
mkdir -p /ftphome/westos2/westos2date
mkdir -p /ftphome/westos3/westos3date
2>再編輯配置檔案vim /etc/vsftpd/vsftpd.conf退出後重新啟動服務
添加:
注意:
$ USER 相當于c語言中的變量,給不同的值,輸出不同的值
user_sub_token=$ USER (将shell中$USER的用法移到ftp服務中來用)
重新啟動服務systemctl restart vsftpd
給該檔案滿權限chmod 777 /ftphome/westos*/*
測試:
可以看到不同的虛拟使用者在不同的家目錄!!!
虛拟使用者權限單獨設定
原理:虛拟使用者使用的是匿名使用者的參數控制,如果我們想讓不同的虛拟使用者有不同的權利,就必須給每個虛拟使用者設定自己的次配置檔案。
1>首先建立虛拟使用者的次目錄和次配置檔案
mkdir /etc/vsftpd/user_conf
touch /etc/vsftpd/user_conf/westos1
2> 編輯次配置檔案 vim /etc/vsftpd/user_conf/westos1
寫入允許虛拟使用者執行的動作anon_upload_enable=YES退出儲存
3> 編輯配置檔案vim /etc/vsftpd/vsftpd.conf(注意:虛拟使用者的上傳參數為NO,或預設 )
寫入user_config_dir=/etc/vsftpd/user_conf
測試:
虛拟使用者westos1可以實作上傳功能,而westos2和westos3不行
可以看到westos1 可以上傳檔案,而westos2 westos3 不能上傳檔案!!!
---------------------
作者:Smile-GQ