ftp服務
一、ftp
FTP 是File Transfer Protocol(檔案傳輸協定)的英文簡稱,而中文簡稱為“文傳協定”。用于Internet上的控制檔案的雙向傳輸。同時,它也是一個應用程式(Application)。基于不同的作業系統有不同的FTP應用程式,而所有這些應用程式都遵守同一種協定以傳輸檔案。在FTP的使用當中,使用者經常遇到兩個概念:"下載下傳"(Download)和"上傳"(Upload)使用者通過一個支援FTP協定的客戶機程式,連接配接到在遠端主機上的FTP伺服器程式。使用者通過客戶機程式向伺服器程式發出指令,伺服器程式執行使用者所發出的指令,并将執行的結果傳回到客戶機。比如說,使用者發出一條指令,要求伺服器向使用者傳送某一個檔案的一份拷貝,伺服器會響應這條指令,将指定檔案送至使用者的機器上。客戶機程式代表使用者接收到這個檔案,将其存放在使用者目錄中。
二、ftp實驗
1、準備工作
首先需要配置好ip和yum源
ip的配置
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyNykDO1EDNwADMxUDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
yum源
在服務端首先vim /etc/sysconfig/selinux
更改SELINUX=disabled
reboot (更改完成後一定要reboot)
getenforce (出現Disabled即為成功)
2、開始實驗
yum install vsftpd -y 安裝vsftp(ftp服務)軟體
systemctl start vsftpd 開啟ftp服務
systemctl enable vsftpd 開機自動開啟ftp服務
firewall-cmd --list-all 防火牆資訊檢視
firewall-cmd --permanent --add-service=ftp 添加火牆允許ftp服務通過
firewall-cmd --reload 火牆重新加載
firewall-cmd --list-all
用戶端測試服務端是否已成功開啟ftp服務(服務端ip172.25.254.213)
報錯: 530是登入失敗,能列出東西才可以登陸(密碼錯了,設定錯了)
550是程式不允許
553是伺服器檔案系統不允許你寫(權限過小)
500是權限過大
lftp 172.25.254.200
ls (預設直接進入的為/var/ftp)
mkdir /ftpdir/westosdir -p(建立目錄)
vim /etc/vsftpd/vsftpd.conf
匿名使用者家目錄修改
anon_root=/direcotry (添加anon_root=/ftpdir)
此時匿名使用者lftp預設進入目錄更改為/ftpdir
匿名使用者登陸限制
anonymous_enable=YES|NO ##匿名使用者登陸限制
useradd westos 添加westos使用者
passwd westos 給westos使用者設定密碼
本地使用者登陸設定
local_enable=YES|NO ##本地使用者登陸限制
write_enable=YES|NO ##本地使用者寫權限限制
用戶端實驗 lftp 172.25.254.*** -u student (student使用者使用lftp通路)
匿名使用者上傳
vim /etc/vsftpd/vsftpd.conf 編輯主配置檔案
write_enable=YES 允許本地使用者上傳寫
anon_upload_enable=YES 允許你名使用者上傳 (這兩個必須都滿足逆名使用者才可以上傳)
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
匿名使用者下載下傳
添加anon_world_readable_only=YES|NO ##設定參數值為no表示匿名使用者可以下載下傳檔案
匿名使用者删除
添加anon_other_write_enable=YES|NO ##yes表示匿名使用者可以删除檔案
匿名使用者建立目錄
anon_mkdir_write_enable=YES|NO ##yes表示可以删除
匿名使用者上傳檔案預設權限修改
添加anon_umask=xxx (777-022=755,核心預留權限111,是以此時檔案權限為644)
最大上傳速率
anon_max_rate=102400
本地使用者家目錄修改
local_root=/directory
本地使用者上傳檔案權限
local_umask=xxx (777-077=700,核心預留權限1,此時檔案權限600)
限制本地使用者浏覽/目錄
所有使用者被鎖定到自己的家目錄中
chroot_local_user=YES 本地使用者開啟将鎖定在自己家目錄中
chmod u-w /home/*
使用者黑名單建立(此黑名單建立表明再次很名單裡的本地使用者将隻能被鎖定在自己家目錄中)
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
student
表示student使用者被鎖定在自己家目錄
使用者白名單建立(此名單表明,隻有在此名單中的使用者才可以浏覽其他地方,而其他使用者隻能被鎖定在自己家目錄中)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
student
表示隻有student使用者不被鎖定在自己家目錄
限制本地使用者登陸
vim /etc/vsftpd/ftpusers ##使用者黑名單(再此名單中的本地使用者将不能使用ftp服務登陸)
vim /etc/vsftpd/user_list ##使用者臨時黑名單
使用者白名單設定
vim /etc/vsftpd/vsftpd.conf
添加userlist_deny=NO
/etc/vsftpd/user_list ##參數設定,此檔案變成使用者白名單,隻在名單中出現的使用者可以登陸ftp
westos
ftp虛拟使用者的設定
(建立虛拟帳号身份)
vim /etc/vsftpd/userdb ##檔案名稱任意 建立虛拟使用者并并編寫其密碼)
user1
123
user2
123
user3
123
db_load -T -t hash -f /etc/vsftpd/userdb /etc/vsftpd/ userdb.db 将編寫的/etc/vsftpd/userdb檔案進行加密
vim /etc/pam.d/ftpuser ##檔案名稱任意
account required pam_userdb.so db=/etc/vsftpd/userdb
auth required pam_userdb.so db=/etc/vsftpd/userdb
vim /etc/vsftpd/vsftpd.conf
添加pam_service_name=ftpuser(此時當有使用者使用ftp服務時會通路ftpuser這個檔案裡面的内容)
guest_enable=YES
guest_username=ftp (虛拟使用者使用ftp使用者進行登陸通路)
chmod u-w /home/*
虛拟帳号家目錄獨立設定
mkdir /vftpdir
mkdir /vftpdir/user{1..3}
touch /vftpdir/user1/user1file
touch /vftpdir/user2/user2file
touch /vftpdir/user3/user3file
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftpuser(此時當有使用者使用ftp服務時會通路ftpuser這個檔案裡面的内容)
guest_enable=YES
guest_username=ftp (虛拟使用者使用westos使用者方式進行登陸通路)
local_root=/vftpdir/$USER (設定使用者家目錄)
user_sub_token=$USER (設定上面所寫的$USER為shell中的意思)
虛拟帳号配置獨立
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
mkdir user{1..3}/pub
chgrp westos user{1..3}/pub
chmod 775 user{1..3}
當我們想讓虛拟使用者中部分使用者擁有某些功能時
首先關掉主配置檔案中的功能此時對所有虛拟使用者都沒有此功能
vim /etc/vsftpd/vsftpd.conf
添加 user_config_dir=/etc/vsftpd/conf_dir
mkdir /etc/vsftpd/conf_dir -p
此時需要給那個使用者開放某種功能隻需編寫某個虛拟使用者的檔案寫入開啟功能即可
vim /etc/vsftpd/conf_dir/user2
anon_upload-enable=YES ####上傳檔案