搭建FTP服務器
安裝vsftpd服務
yum search ftp
yum install vsftpd.x86_64
啓動服務
systemctl start vsftpd
關閉防火牆將ftp加進防火牆策略裏
systemctl stop firewalld
或
firewall-cmd –add-service=ftp
此時可用lftp ftp服務器ip就可訪問ftp服務器了
配置文件/etc/vsftpd/vsftpd.conf
1.匿名用戶(anonymous)設置
anonymous_enable=YES/NO(YES)
控制是否允許匿名用戶登入,YES 爲允許匿名登入,NO 爲不允許。默認值爲YES。
write_enable=YES/NO(YES)
是否允許登陸用戶有寫權限。屬於全局設置,默認值爲YES。
no_anon_password=YES/NO(NO)
若是啓動這項功能,則使用匿名登入時,不會詢問密碼。默認值爲NO。
ftp_username=ftp
定義匿名登入的使用者名稱。默認值爲ftp。
anon_root=/var/ftp
使用匿名登入時,所登入的目錄。默認值爲/var/ftp。注意ftp目錄不能是777的權限屬性,即匿名用戶的家目錄不能有777的權限。
anon_upload_enable=YES/NO(NO)
如果設爲YES,則允許匿名登入者有上傳文件(非目錄)的權限,只有在write_enable=YES時,此項纔有效。當然,匿名用戶必須要有對上層目錄的寫入權。默認值爲NO。
anon_world_readable_only=YES/NO(YES)
如果設爲YES,則允許匿名登入者下載可閱讀的檔案(可以下載到本機閱讀,不能直接在FTP服務器中打開閱讀)。默認值爲YES。
anon_mkdir_write_enable=YES/NO(NO)
如果設爲YES,則允許匿名登入者有新增目錄的權限,只有在write_enable=YES時,此項纔有效。當然,匿名用戶必須要有對上層目錄的寫入權。默認值爲NO。
anon_other_write_enable=YES/NO(NO)
如果設爲YES,則允許匿名登入者更多於上傳或者建立目錄之外的權限,譬如刪除或者重命名。(如果 anon_upload_enable=NO,則匿名用戶不能上傳文件,但可以刪除或者重命名已經存在的文件;如果anon_mkdir_write_enable=NO,則匿名用戶不能上傳或者新建文件夾,但可以刪除或者重命名已經存在的文件夾。)默認值爲NO。
chown_uploads=YES/NO(NO)
設置是否改變匿名用戶上傳文件(非目錄)的屬主。默認值爲NO。
chown_username=username
設置匿名用戶上傳文件(非目錄)的屬主名。建議不要設置爲root。
anon_umask=077
設置匿名登入者新增或上傳檔案時的umask 值。默認值爲077,則新建檔案的對應權限爲700。
deny_email_enable=YES/NO(NO)
若是啓動這項功能,則必須提供一個檔案/etc/vsftpd/banner_emails,內容爲email address。若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不允許進入。默認值爲NO。
banned_email_file=/etc/vsftpd/banner_emails
此文件用來輸入email address,只有在deny_email_enable=YES時,纔會使用到此檔案。若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不允許進入。
2.本地用戶設置
local_enable=YES/NO(YES)
控制是否允許本地用戶登入,YES 爲允許本地用戶登入,NO爲不允許。默認值爲YES。
local_root=/home/username
當本地用戶登入時,將被更換到定義的目錄下。默認值爲各用戶的家目錄。
write_enable=YES/NO(YES)
是否允許登陸用戶有寫權限。屬於全局設置,默認值爲YES。
local_umask=022
本地用戶新增檔案時的umask 值。默認值爲077。
file_open_mode=0755
本地用戶上傳檔案後的檔案權限,與chmod 所使用的數值相同。默認值爲0666。
歡迎語設置
dirmessage_enable=YES/NO(YES)
如果啓動這個選項,那麼使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,如果有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。默認值爲開啓。
message_file=.message
設置目錄消息文件,可將要顯示的信息寫入該文件。默認值爲.message。
banner_file=/etc/vsftpd/banner
當使用者登入時,會顯示此設定所在的檔案內容,通常爲歡迎話語或是說明。默認值爲無。如果歡迎信息較多,則使用該配置項。
ftpd_banner=Welcome to BOB’s FTP server
這裏用來定義歡迎話語的字符串,banner_file是檔案的形式,而ftpd_banner 則是字符串的形式。預設爲無。
4.控制用戶是否允許切換到上級目錄
在默認配置下,本地用戶登入FTP後可以使用cd命令切換到其他目錄,這樣會對系統帶來安全隱患。可以通過以下三條配置文件來控制用戶切換目錄。
chroot_list_enable=YES/NO(NO)
設置是否啓用chroot_list_file配置項指定的用戶列表文件。默認值爲NO。
chroot_list_file=/etc/vsftpd.chroot_list
用於指定用戶列表文件,該文件用於控制哪些用戶可以切換到用戶家目錄的上級目錄。
chroot_local_user=YES/NO(NO)
用於指定用戶列表文件中的用戶是否允許切換到上級目錄。默認值爲NO。
通過搭配能實現以下幾種效果:
①當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list文件中列出的用戶,可以切換到其他目錄;未在文件中列出的用戶,不能切換到其他目錄。
②當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其他目錄;未在文件中列出的用戶,可以切換到其他目錄。
③當chroot_list_enable=NO,chroot_local_user=YES時,所有的用戶均不能切換到其他目錄。
④當chroot_list_enable=NO,chroot_local_user=NO時,所有的用戶均可以切換到其他目錄。
服務器可能的報錯:
550: 服務本身不允許
553:本地文件系統權限不允許,有防火牆,selinux,要上傳的文件是否允許你上傳
530;密碼不對,根目錄權限太小,pam_service_name不對
500:根目錄權限太大:500 OOPS: vsftpd: refusing to run with writable root inside chroot():此時應該將用戶的寫權限去掉
三、實驗
/var/ftp的o權限最少爲5
1.怎麼讓匿名有虎可以上傳文件?
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
- 如何讓匿名用戶創建目錄?
vim /etc/vsftpd/vsftpd.conf
anon_mkfir_write_enable=YES - 如何讓匿名用戶可以下載?
vim /etc/vsftpd/vsftpd.conf
anon_world_readable_only=NO - 如何讓匿名用戶可以刪除文件,前提是所在目錄有權限?
vim /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES
如果參數忘記可以man 5 vsftpd.conf來查
5.如何修改用戶的默認家目錄?
匿名用戶:anon_root=/westos
怎麼讓他在新的家目錄可以上傳東西:
chown ftp /新目錄
chmod 700 /新目錄 或者
chgrp ftp /新目錄
chmod 070 /新目錄
6.如何修改用戶的上傳文件的權限?
匿名用戶:anon_umask=/westos
本地用戶:local_umask=/westos
如何修改匿名用戶上傳的身份?
chown_uploads=YES
chown_username=student如何修改上傳的最大速率?
anon_max_rate=102400
local_max_rate=102400
9.如何設置最大用戶連接數?
max——clinets=2
是在設置之後再登錄進來的開始算,之前就登錄進來的不算,
- 用戶被鎖定到自己的家目錄
chroot_local_user=NO 可以切換到除家目錄以外的其他目錄,默認可以切
YES 切換不到除加目錄以外的其他目錄,(我怎麼試出來500錯)
此時如果家目錄有w權限並且chroot_local_user=YES時,重新登錄的會報錯500
四、黑白名單
1.ftpusers:永久黑名單,優先級高於user_list
2.user_list:臨時黑名單
當user_list_deny=NO時他變爲白名單
五、虛擬用戶
進入/etc/vsftpd
1.再/etc/vsftpd下寫一個虛擬用戶的帳號和密碼的文件,文件名隨意
vim westosfile
user1
123
user2
123
注意文件裏面不要有空格什麼的
2.對上面文件進行加密
db_load -T -t hash -f westosfile westosfile.db
執行完後看/etc/vsftpd下有沒有westosfile.db
3.進入/etc/pam.d,編寫一個文件,文件名隨意
vim westos
account required pam_userdb.so db=/etc/vsftpd/westosfile
auth required pam_userdb.so db=/etc/vsftpd/westosfile
4.編寫/etc/vsftpd/vsftpd.conf
pam_service_name=westos
guest_enable=YES 開啓
guest_username=Linux 虛擬用戶以那個本地用戶的身份進行登陸
5.重啓vsftpd
6.chmod u-w /home/linux
怎麼獨立虛擬用戶的加目錄?
1.創建家目錄
mkdir /ftpdir/user1
mkdir /ftpdir/user2
爲了可以看見效果,創建兩個文件以示區別:
touch /ftpdir/user1/file1
touch /ftpdir/user2/file2
2.vim /etc/vsftpd/vsftpd.conf
local_root=/ftpdir/
3.systemctl restart vsftpd
怎麼獨立上傳?
1.分別在加目錄下建立目錄,並修改權限
mkdir /ftpdir/user1
mkdir /ftpdir/user2
touch /ftpdir/user1/file1
touch /ftpdir/user2/file2
(兩個touch是爲了爲區別兩個目錄)
修改虛擬用戶根目錄的權限否則回報553,本地文件系統不允許的錯
[root@ftp ftpdir]# chmod 070 user1
[root@ftp ftpdir]# chmod 070 user2
2.將配置文件中的chown註釋掉,chown是修改上傳身份的
3.vim /etc/vsftpd/vsftpd.conf
修改根目錄:local_root=/ftpdir/
4.systemctl restart vsftpd
分開控制配置文件
mkdir /ftpdir/user1/user1dir
mkdir /ftpdir/user2/user2dir
chmod 755 /ftpdir/user1/user1dir
chmod 755 /ftpdir/user2/user2dir
1.將主配置文件/etc/vsftpd/vsftpd.conf裏面的配置先註釋掉
2.往裏添加user_config_dir=/etc/vsftpd/linux
3.創建/etc/vsftpd/linux
4.某一用戶的配置文件vim user1
anon_upload_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES
5.重啓vsftpd服務