vsftp匿名上傳
vsftpd服務程序中匿名開放是一種最不安全的驗證模式,任何人都可以無需密碼驗證就登陸到FTP服務端主機,這種模式一般只用來保存不重要的公開文件,尤其是在生產環境中更要注意不放敏感文件,當然也非常推薦用咱們第八章中學習的防火牆管理工具(例如Tcp_wrappers)將vsftpd服務程序的允許訪問主機范圍設置為企業內網,這樣還算能夠保證基本的安全性。
vsftpd服務程序默認已經開啟了匿名訪問模式,咱們需要做的就是進一步允許匿名用戶的上傳、下載文件的許可權,以及讓匿名用戶能夠創建、刪除、更名文件的許可權,這些許可權對於匿名用戶來講非常的危險,咱們只是為了練習linux系統中vsftpd服務程序的配置能力,十分不推薦在生產環境中使用,匿名用戶的許可權參數及介紹:
參數 作用
anonymous_enable=YES 允許匿名訪問模式。
anon_umask=022 匿名用戶上傳文件的umask值。
anon_upload_enable=YES 允許匿名用戶上傳文件
anon_mkdir_write_enable=YES 允許匿名用戶創建目錄
anon_other_write_enable=YES 允許匿名用戶修改目錄名或刪除目錄
[root@linuxprobe~]#vim/etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
確認參數填寫正確後保存並退出vsftpd服務程序的主配置文件,還需要重啟vsftpd服務程序來讓新的配置服務參數生效,並且同學們在生產環境中或者紅帽RHCSA、RHCE、RHCA認證考試中也請記得一定要把配置過的服務程序加入到開機啟動項中,以保證下次伺服器重啟後依然能夠為用戶正常提供ftp文件傳輸服務:
[root@linuxprobe~]#systemctlrestartvsftpd
[root@linuxprobe~]#systemctlenablevsftpd
ln-s'/usr/lib/systemd/system/vsftpd.service''/etc/systemd/system/multi-user.target.wants/vsftpd.service
這樣咱們就可以在客戶端上面使用ftp命令連接到遠程的FTP伺服器上面了,FTP服務的匿名開放模式的帳號統一為anonymous,密碼為空。匿名模式登陸到FTP伺服器後默認所在位置為/var/ftp目錄,咱們可以切換至裡面的pub目錄中,然後嘗試創建一個新的目錄文件來檢驗是否已經有了寫入許可權:
[root@linuxprobe~]#ftp192.168.10.10
Connectedto192.168.10.10(192.168.10.10).
220(vsFTPd3.0.2)
Name(192.168.10.10:root):anonymous
331Pleasespecifythepassword.
Password:此處敲擊回車即可
230Loginsuccessful.
RemotesystemtypeisUNIX.
.
ftp>cdpub
.
ftp>mkdirfiles
550Permissiondenied.
剛剛咱們已經把iptables防火牆策略清空,而且也在vsftpd服務程序的主配置文件中添加了允許匿名用戶創建目錄和寫入文件的許可權,那麼為什麼還會被拒絕呢?建議同學們先不要往下面看,思考後用自己的方法嘗試解決下這個問題,長期這樣您的Linux系統排錯能力就一定會練出來的。
回想起前面操作的細節,咱們FTP服務的匿名開放模式是默認登陸到了/var/ftp目錄中,查看下這個目錄的許可權後才發現原來只有root管理員用戶才有寫入許可權的,怪不得會提示寫入出錯呢,咱們只需要把目錄的所有者身份改成系統帳戶ftp即可,這樣就應該可以了吧~
[root@linuxprobe~]#ls-ld/var/ftp/pub
drwxr-xr-x.3rootroot16Jul1314:38/var/ftp/pub
[root@linuxprobe~]#chown-Rfftp/var/ftp/pub
[root@linuxprobe~]#ls-ld/var/ftp/pub
drwxr-xr-x.3ftproot16Jul1314:38/var/ftp/pub
[root@linuxprobe~]#ftp192.168.10.10
Connectedto192.168.10.10(192.168.10.10).
220(vsFTPd3.0.2)
Name(192.168.10.10:root):anonymous
331Pleasespecifythepassword.
Password:此處敲擊回車即可
230Loginsuccessful.
RemotesystemtypeisUNIX.
.
ftp>cdpub
.
ftp>mkdirfiles
.
又報錯了!!此時再次使用ftp命令登入到FTP伺服器主機後依然會提示寫入操作失敗,但細心的同學一定發現報錯信息已經產生了變化,在剛剛沒有寫入許可權的時候提示說許可權拒絕(Permission denied.)所以咱們懷疑是許可權的問題,但現在是提示創建目錄的操作失敗(Create directory operation failed.)那麼咱們同學應該也能馬上意識到是SELinux服務在限制這個操作了吧,查看下所有與ftp相關的SELinux域策略有那些吧:
[root@linuxprobe~]#getsebool-a|grepftp
ftp_home_dir-->off
ftpd_anon_write-->off
ftpd_connect_all_unreserved-->off
ftpd_connect_db-->off
ftpd_full_access-->off
ftpd_use_cifs-->off
ftpd_use_fusefs-->off
ftpd_use_nfs-->off
ftpd_use_passive_mode-->off
httpd_can_connect_ftp-->off
httpd_enable_ftp_server-->off
sftpd_anon_write-->off
sftpd_enable_homedirs-->off
sftpd_full_access-->off
sftpd_write_ssh_home-->off
tftp_anon_write-->off
tftp_home_dir-->off
根據策略的名稱和經驗可以猜測出是哪一條規則策略,咱們在設置的時候請記得使用-P參數來讓配置過的策略永久生效,保證在伺服器重啟後依然能夠順利寫入文件,咱們可以分別嘗試下創建目錄文件、對文件進行改名以及刪除目錄文件等等操作。最後,恭喜同學們完成了這個實驗課程,建議您在進行一次實驗課程前還原虛擬機到最初始的狀態,以免多個配置參數之間產生沖突。
[root@linuxprobe~]#setsebool-Pftpd_full_access=on
[root@linuxprobe~]#ftp192.168.10.10
Connectedto192.168.10.10(192.168.10.10).
220(vsFTPd3.0.2)
Name(192.168.10.10:root):anonymous
331Pleasespecifythepassword.
Password:此處敲擊回車即可
230Loginsuccessful.
RemotesystemtypeisUNIX.
.
ftp>cdpub
.
ftp>mkdirfiles
257"/pub/files"created
ftp>renamefilesdatabase
350ReadyforRNTO.
250Renamesuccessful.
ftp>rmdirdatabase
.
ftp>exit
221Goodbye.
看了還不會的話 就回去看下原文吧《Linux就該這么學》第11章節~
② 7.7 配置Vsftp-允許匿名用戶上傳
anon_upload_enable
anon_mkdir_write_enable
anon_world_readable_only=NO 放開匿名用戶對整個伺服器的瀏覽許可權。
⑴修改vsftpd 的主配置文件/etc/vsftpd.conf
# vi /etc/vsftpd.conf
⑵將如下兩行前的#刪除
#anon_upload_enable=YES 允許匿名用戶上傳
#anon_mkdir_write_enable=YES 開啟匿名用戶的寫和創建目錄的許可權
若要以上兩項設置生效,同時還要求:
write_enable=YES
⑶匿名用戶對文件系統的上傳目錄具有寫許可權,添加如下的配置語句
anon_world_readable_only=NO
上面的配置語句用於放開匿名用戶的瀏覽許可權
修改後存檔退出vi
⑷創建匿名上傳目錄
# mkdir /var/ftp/incoming
⑸修改上傳目錄的許可權
# chmod o+w /var/ftp/incoming/
⑹重新啟動vsftpd
# service vsftpd restart
⑴匿名用戶對/var/ftp/incoming 目錄而言是其他用戶,所以必須為此目錄添加對其他用戶的可寫許可權才可上傳,即此目錄許可權的數字表示是707。
⑵只有設置anon_world_readable_only=NO 後,才能開放匿名用戶的讀許可權,即:瀏覽此伺服器中全部的內容。
⑶若想匿名用戶能夠進行續傳文件還應使用anon_other_write_enable=YES配置,並隨時對FTP站點進行維護,即:將incoming目錄中有用的文件移向pub目錄。
③ linux的ftp匿名用戶只允許上傳 不允許下載
最簡單的方法是新建一個不允許登陸的系統用戶:
useradd sydsftp -s /sbin/nologin
passwd sydsftp 設置密碼
再給/var/ftp目錄授權
chown sydsftp:sydsftp /var/ftp
修改vsftp配置文件,允許匿名用戶可讀,允許本地用戶可讀可寫:
vi /etc/vsftp/vsftpd.conf
anonymous_enable=YES
anon_upload_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES 將FTP本地用戶禁錮在宿主目錄中
anon_root=/var/ftp 設置主目錄
local_root=/var/ftp 設置本地用戶主目錄
④ linux vsftp匿名用戶不可以上傳怎麼解決
首先要把防火牆給關閉了,iptables
-F
service
iptables
save
&&
service
iptables
stop
第二
設置文件夾具有可寫許可權
/var/ftp/pub
許可權設置為chmod
o+w
/var/ftp/pub
