linux下java写ftp服务器端,在Linux下部署网站(java环境部署)第五章 FTP服务器搭建...
第五章 FTP服務器搭建
1.看看是否已經安裝FTP服務器
service vsftpd start
ftp localhost
如果不認識ftp命令是因為沒有安裝ftp的client包,需要拿安裝光盤去裝一下。首先將安裝盤(或者iso鏡像)裝入,進入安裝盤的Package目錄下。然后找到以ftp開頭的包,使用命令安裝即可。(注意:命令不要生搬硬套,你的ftpclient包版本可能和我不同,有可能輸入和我相同的名稱找不到)
如果不認識ftp命令是因為沒有安裝ftp的client包,需要拿安裝光盤去裝一下。首先將安裝盤(或者iso鏡像)裝入,進入安裝盤的Package目錄下。然后找到以ftp開頭的包,使用命令安裝即可。(注意:命令不要生搬硬套,你的ftpclient包版本可能和我不同,有可能輸入和我相同的名稱找不到)
ls -l ftp*
rpm -ivh ftp-0.17-54.el6.x86_64.rpm
這時再敲ftp命令就沒問題了!
如果想停止這個服務,輸入以下命令:
service vsftpd stop
2.從windows登錄FTP服務器
想要從Windows上登錄,就要先獲取到這臺Linux服務器的ip,使用以下命令:
ifconfig
ping 自己的ip
結果顯示能夠ping通。如果在確認網絡確實連接正確,ping的ip地址也正確,但是ftp就是上不去或者壓根ping不通,這有可能是由于Linux的防火墻造成的。
解決方法有兩種,一種是關閉Linux防火墻,輸入以下命令查看防火墻狀態:
service iptables status
setup
使用方向鍵切換到防火墻設置,按回車進入:
現在我們按下空格鍵,這樣就能禁用防火墻,然后按下 tab鍵,這樣OK按鈕就會被選中,然后按下回車鍵,使我們的修改生效:
提示警告的界面中,我們依舊選中是按鈕,回車:
現在運行這個命令,查看一下防火墻的狀態:
service iptables status
第二種方法是打開ftp使用的端口。ftp連接端口有2個 21 和 20 端口,我現在添加對應的規則。
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
好,這樣就添加完了,我們用瀏覽器訪問一下ftp,出現超時。所以我剛才說 ftp 是比較特殊的端口,它還有一些端口是 數據傳輸端口,例如目錄列表, 上傳 ,下載 文件都要用到這些端口。而這些端口是 任意 端口。。。 這個 任意 真的比較特殊。
如果不指定一個端口范圍, iptables 很難對任意端口開放的,如果iptables允許任意端口訪問,那和不設置防火墻沒什么區別,所以不現實的。那么我們的解決辦法就是 指定這個數據傳輸端口的一個范圍。下面我們修改一下ftp配置文件。
vi /etc/vsftpd.conf
在配置文件的最下面 加入
pasv_min_port=30001
pasv_max_port=31000
然后保存退出。這兩句話的意思告訴vsftpd, 要傳輸數據的端口范圍就在30001到31000 這個范圍內傳送。這樣我們使用 iptables 就好辦多了,我們就打開 30001到31000 這些端口。
iptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT
service iptables save
最后進行保存, 然后我們再用瀏覽器范圍下 ftp。可以正常訪問
不過建議在操作前先關閉防火墻。使用一下命令也可:
service iptables stop
這樣的結果就算連上了:
這說明ftp默認是允許匿名登陸的,用以下命令打開配置文件可以看到:
cd /etc/vsftpd
vi vsftpd.conf
這時在windows的控制臺登錄,用戶名為anonymous,密碼為空。
匿名登錄成功。使用ls看看有哪些目錄:
我們看到的pub就是一個目錄。如果是默認安裝vsftpd的話,以下是一些文件的位置約定:
/usr/sbin/vsftpd ????????---- VSFTPD的主程序
/etc/rc.d/init.d/vsftpd ---- 啟動腳本
/etc/vsftpd/vsftpd.conf ---- 主配置文件
/etc/pam.d/vsftpd ???????---- PAM認證文件
/etc/vsftpd.ftpusers ????---- 禁止使用VSFTPD的用戶列表文件
/etc/vsftpd.user_list ???---- 禁止或允許使用VSFTPD的用戶列表文件
/var/ftp ??????????????????---- 匿名用戶主目錄
/var/ftp/pub ?????????????---- 匿名用戶的下載目錄
這么說來,我們看到的pub就是/var/ftp/pub這個目錄。
如果要更改默認下載目錄,修改/etc/vsftpd/vsftpd.conf,加入如下三行:
local_root=/
chroot_local_user=YES
anon_root=/
local_root表示使用本地用戶登錄到ftp時的默認目錄
anon_root表示匿名用戶登錄到ftp時的默認目錄
修改vsftpd.conf配置文件:
chroot_local_user = YES
chroot_list_file=/etc/vsftpd.chroot_list
退出,然后編輯/etc/vsftpd.chroot_list,在這里面輸入用戶名字,一行寫一個用戶名。最后你再重新啟動一下vsftpd服務。就可以了
3.允許root用戶上傳
輸入以下命令,編輯文件,解除對root上傳的限制:
cd /etc/vsftpd
vi user_list
編輯這個文件,將里面的root刪掉。
cd /etc/vsftpd
vi ftpusers
然后使用以下命令重啟服務:
service vsftpd restart
在windows下可以使用FlashFXP
來登錄。
如果登錄時出現這樣的錯誤:
在Linux上運行以下命令查看一下:
sestatus -b | grep ftp
接下來把ftp_home_dir改成on:
setsebool -P ?ftp_home_dir ?on
然后重啟ftp:
修改/etc/selinux/config文件,設置SELINUX= disabled:
vi /etc/selinux/config
使用reboot命令重新啟動。再打開ftp服務,這時就可以了!
上傳Oracle安裝包試一下:
4.設置FTP開機自啟
chkconfig vsftpd on
chkconfig --list | grep vsftpd
總結
以上是生活随笔為你收集整理的linux下java写ftp服务器端,在Linux下部署网站(java环境部署)第五章 FTP服务器搭建...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实验6Linux系统开发环境,哈工大嵌入
- 下一篇: Linux给命令设置超时时间,Linux