RH134-第十八節-FTP共享服務搭建以及個性化設置

搭建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

  1. 如何讓匿名用戶創建目錄?
    vim /etc/vsftpd/vsftpd.conf
    anon_mkfir_write_enable=YES
  2. 如何讓匿名用戶可以下載?
    vim /etc/vsftpd/vsftpd.conf
    anon_world_readable_only=NO
  3. 如何讓匿名用戶可以刪除文件,前提是所在目錄有權限?
    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

  1. 如何修改匿名用戶上傳的身份?
    chown_uploads=YES
    chown_username=student

  2. 如何修改上傳的最大速率?
    anon_max_rate=102400
    local_max_rate=102400

9.如何設置最大用戶連接數?
max——clinets=2
是在設置之後再登錄進來的開始算,之前就登錄進來的不算,

  1. 用戶被鎖定到自己的家目錄
    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/USERusersubtoken= USER
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/USERusersubtoken= USER
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服務

發佈了66 篇原創文章 · 獲贊 25 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章