ftp服務很重要,這裏介紹ftp在linux上不連接mysql數據庫的搭建方法,ftp也可以連接mysql,有時間再生成文檔。
先說明ftp的基本原理:FTP –File Transfer Protocol 文件傳輸協議。能夠在網絡上提供文件傳輸服務,遠程用戶可以上傳和下載文件。常使用TCP端口20作爲數據通道(傳輸文件和目錄列表)、TCP端口21作爲命令通道(傳輸用戶命令)。linux下常用的服務器有:proftpd、wuftpd、vsftpd等,我們一般使用vsftpd,直接在redhat系統盤用rpm安裝即可。ftp傳輸分爲主動模式和被動模式,主動與被動是相對服務器來區分的,即主動模式是服務器主動發起數據請求,服務器的端口號爲20;被動模式是客戶端主動發起數據請求,服務器端口爲1024及以上,爲了安全,建議用主動模式。
實驗環境:rhel5.6
實驗過程:
#mount /dev/cdrom /media //掛載linux系統盤
#yum install vsftpd //安裝vsftpd
#/etc/init.d/vsftpd start //啓動vsftpd服務
到這裏,基本的vsftpd服務已經搭好,客戶端可以正常下載數據,如下截圖:
但是,到這裏登錄進來的用戶都屬於匿名用戶,匿名用戶若想上傳東西是不被允許的,下載與瀏覽都可以,應該再繼續配置以支持用戶上傳。
進入/etc/vsftpd/vsftpd.conf,將上圖中的27行和31行前面的#去掉,即打開匿名用戶的上傳和新建文件夾功能。
#chmod o+w /var/ftp/pub //修改ftp所在目錄的權限,允許匿名用戶上傳和新建,默認情況下,ftp會把用戶的需要上傳下載的東西放在/var/ftp/pub目錄下。
#/etc/init.d/vsftpd restart
到這裏匿名用戶的上傳和新建目錄的功能可以打開,如下截圖:
但是,因爲只要是能夠訪問這個ftp站點的人都可以上傳數據,萬一上傳一個病毒玩意呢?所以應當設置用戶名密碼訪問,步驟如下:
#vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=NO
27 anon_upload_enable=NO
31 anon_mkdir_write_enable=NO //將允許匿名用戶新建上傳功能關掉
#service vsftpd restart
#useradd ftptest
#passwd ftptest //創建允許訪問ftp用戶名密碼
到這裏就做到了需要用戶名密碼訪問ftp服務,用戶的ftp數據在用戶名的目錄下。
爲了更加安全,可以將系統用戶限制在自己的主目錄下,做法如下:
#vim /etc/vsftpd/vsftpd.conf
即將96行、98行前面的#去掉,開啓chroot_list_enable和chroot_list_file
#/etc/init.d/vsftpd restart
登錄ftp嘗試:
發現之前可以訪問的現在無法登錄,在此之所以把這個問題貼出來,是想提醒自己以後碰到類似這種問題不要心慌、不要着急、尋找蛛絲馬跡解決問題,找到解題思路。在這種圖形界面下很難發現問題所在,不妨試試cmd命令行方式登錄ftp以需求解決問題突破口,如下截圖:
通過命令提示符可以看到客戶端打不開文件/etc/vsftpd/chroot_list,現在不妨進入ftp服務器看看這個文件
發現沒有這個文件,那就新建一個吧:
#touch /etc/vsftpd/chroot_list
再次登錄:
成功了,到這裏沒有連接mysql數據庫但是帶有用戶名密碼訪問ftp服務搭建成功了,這裏強調的是要注意解決問題的方法。
附:
服務一覽
後臺進程:vsftpd
類型:System V 服務
使用端口:20(ftp-data),21(ftp)
所需RPM包:vsftpd
配置文件:/etc/vsftpd/vsftpd.conf
/etc/vsftpd.ftpusers
/etc/pam.d/vsftpd
日誌:/var/log/vsftpd.log
vsftpd.conf
/etc/vsftpd/vsftpd.conf是vsftpd主配置文件,配置參數如下:
anonymous_enable=YES#是否允許匿名ftp
local_enable=YES#是否允許本地用戶登錄
local_umask=022#默認的umask碼
anon_upload_enable=YES#是否允許匿名上傳文件
anon_mkdir_write_enable=YES#是否允許匿名用戶創建目錄
anon_other_write_enable=YES#是否允許匿名用戶刪除目錄和文件
dirmessage_enable=YES#是否顯示目錄說明文件,默認是YES但需要收工創建.message文件
xferlog_enable=YES#是否記錄ftp傳輸過程
connect_from_port_20=YES#是否確信端口傳輸來自
chown_username=username#是否改變上傳文件的屬主
xferlog_file=/var/log/vsftpd.log# ftp傳輸日誌的路徑和名字
xferlog_std_format=YES#是否使用標準的ftp xferlog模式
idle_session_timeout=600#設置默認的斷開不活躍session的時間
ata_connection_timeout=120#設置數據傳輸超時時間
ascii_upload_enable=YES
ascii_download_enable=YES#是否使用ascii碼方式上傳和下載文件
ftpd_banner=my FTP server#定製歡迎信息
deny_email_enable=YES
banned_email_file=/etc/vsftpd.banned_emails#是否允許禁止匿名用戶使用某些郵件地址,如果是輸入禁止的郵件地址的路徑和文件名
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list#是否將系統用戶限止在自己的home目錄下,如果選擇了yes那麼vsftpd.chroot_list中列出的是不chroot的用戶的列表
max_clients=N#如果以standalone模式起動,那麼只有N個用戶可以連接,其他的用戶將得到錯誤信息,默認是0不限制
message_file#設置訪問一個目錄時獲得的目錄信息文件的文件名。默認是.message
ftp用戶控制
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/chroot_list
ftpusers:所有用戶名出現在此文件中的用戶就不可以通過FTP登錄到系統。
user_list:當在vsftpd.conf文件中定義serlist_deny=YES(默認)時,在vsftpd.user_list文件中定義的用戶不可以使用FTP,當定義userlist_deny=NO,只有在vsftpd.user_list文件中定義的用戶可以使用FTP。
chroot_list:是否將系統用戶限止在自己的主目錄下。如果選擇了chroot_list_enable=YES,那麼chroot_list中列出的是被chroot的用戶列表;如果添加chroot_local_user=YES,那麼chroot_list中列出的是不被chroot的用戶列表。