1.安裝vsftp
在這裏,我們架設的是虛擬用戶,所謂虛擬用戶就是沒有使用真實的帳戶,只是通過某種手段達到映射帳戶和設置權限的目的。
yum install vsftpd
touch /var/log/vsftpd.log #創建vsftp的日誌文件
在CentOS中,這樣就可以完成了一個簡單的匿名FTP的搭建。你可以通過訪問ftp://yourip來進行,不過這個FTP沒有任何權限。
2.啓動/重啓/關閉vsftpd服務器
[root@localhost ftp]# /sbin/service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
OK表示重啓成功了.
啓動和關閉分別把restart改爲start/stop即可.
如果是源碼安裝的,到安裝文件夾下找到start.sh和shutdown.sh文件,執行它們就可以了.
3.與vsftpd服務器有關的文件和文件夾
vsftpd服務器的配置文件的是: /etc/vsftpd/vsftpd.conf
vsftpd服務器的根目錄,即FTP服務器的主目錄:/var/ftp/pub
如果你想修改服務器目錄的路徑,那麼你只要修改/var/ftp到別處就行了
4.添加FTP本地用戶(即虛擬用戶,簡單方案)
有的FTP服務器需要用戶名和密碼才能登錄,就是因爲設置了FTP用戶和權限.
FTP用戶一般是不能登錄系統的,只能進入FTP服務器自己的目錄中,這是爲了安全.
這樣的用戶就叫做虛擬用戶了.實際上並不是真正的虛擬用戶,只是不能登錄SHELL了而已,沒權限登錄系統.
/usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin test
這個命令的意思是:
使用命令(adduser)添加test用戶,不能登錄系統(-s /sbin/nologin),自己的文件夾在(-d /opt/test_ftp)),屬於組ftp(-g ftp)
然後你需要爲它設置ftp登錄密碼passwd test
passwd test
Changing password for user test.
New UNIX password:
Changing password for user test.New UNIX password:
注意:這裏的密碼要求爲字母和數字的組合纔可以,如果不符合密碼驗證機制的話就修改不成功,會有各種報錯,“BAD PASSWORD: it's WAY too short”,這是報密碼太短,不符合/etc/login.defs的設置,“BAD PASSWORD: it is based on your username”,這是密碼與帳號不能同名,這是不符合/etc/pam.d/passwd的設置。“BAD PASSWORD: it is based on a dictionary word”這是因爲出現了字典裏的字符串,如果你英文與數字組合使用,就不會報錯。
----------------------------------------------------------------------------------------------------------
1)我們在/etc/vsftpd/vsftpd.conf中做如下CentOS FTP服務配置:(複雜方案)
anonymous_enable=NO 設定不允許匿名訪問
local_enable=YES 設定本地用戶可以訪問。注:如使用虛擬宿主用戶,在該項目設定爲NO的情況下所有虛擬用戶將無法訪問。
chroot_list_enable=YES 使用戶不能離開主目錄
xferlog_file=/var/log/vsftpd.log 設定vsftpd的服務日誌保存路徑。注意,該文件默認不存在。必須要手動touch出來
ascii_upload_enable=YES
ascii_download_enable=YES 設定支持ASCII模式的上傳和下載功能。
pam_service_name=vsftpd PAM認證文件名。PAM將根據/etc/pam.d/vsftpd進行認證
以下這些是關於Vsftpd虛擬用戶支持的重要CentOS FTP服務配置項目。
默認vsftpd.conf中不包含這些設定項目,需要自己手動添加CentOS FTP服務配置。
guest_enable=YES 設定啓用虛擬用戶功能。
guest_username=ftp 指定虛擬用戶的宿主用戶。-CentOS中已經有內置的ftp用戶了
user_config_dir=/etc/vsftpd/vuser_conf 設定虛擬用戶個人vsftp的CentOS FTP服務文件存放路徑。
存放虛擬用戶個性的CentOS FTP服務文件(配置文件名=虛擬用戶名)
2)創建chroot list,將用戶ftp加入其中:
touch /etc/vsftpd/chroot_list
echo test >> /etc/vsftpd/chroot_list
3)進行認證(可以不認證):
首先,安裝Berkeley DB工具,很多人找不到db_load的問題就是沒有安裝這個包。
yum install db4 db4-utils
然後,創建用戶密碼文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用戶名,偶行是密碼
ftpuser1
ftppass1
ftpuser2
ftppass2
接着,.生成虛擬用戶認證的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
隨後,編輯認證文件/etc/pam.d/vsftpd,全部註釋掉原來語句
再增加以下兩句
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
最後,創建虛擬用戶個性CentOS FTP服務文件
mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/ftpuser1
內容如下:
local_root=/opt/var/ftp1 虛擬用戶的根目錄(根據實際修改)
write_enable=YES 可寫
anon_umask=022 掩碼
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
-------------------------------------------------------------------------------------------------------------------------
5、常見錯誤:
安裝完以後,可能發現連接ftp服務器,一般是由於SELinux的問題,原因如下:
他的系統是CentOS,是RH派系的。我把vsftpd安裝配置好了,以爲大功告成,但客戶端訪問提示如下錯誤:
500 OOPS: cannot change directory:/home/ftp
原因是他的CentOS系統安裝了SELinux,因爲默認下是沒有開啓FTP的支持,所以訪問時都被阻止了。
//查看SELinux設置
# getsebool -a|grep ftp
ftpd_disable_trans --> off
ftp_home_dir-->off
//使用setsebool命令開啓
# setsebool ftpd_disable_trans 1
# setsebool ftp_home_dir 1
由於操作系統一旦重啓後,這種設置需要重新設置,這裏使用-P參數實現.
//setsebool使用-P參數,無需每次開機都輸入這個命令
# setsebool -P ftpd_disable_trans 1
# setsebool -P ftp_home_dir 1
//查看當前狀態是否是on的狀態
# getsebool -a|grep ftp
ftpd_disable_trans --> on
ftp_home_dir-->on
# service vsftpd restart
有關selinux的配置
如關閉,僅僅警告,強制等等 需要編輯/etc/sysconfig/selinux 默認是強制。
1.553 Could not create file
一般都是SELinux的問題,設置SELinux的一個值,重啓服務器即可。
setsebool -P ftpd_disable_trans 1
service vsftpd restart
2.500 OOPS: bad bool value in config file for: write_enable
注意你的CentOS FTP服務文件中保證每一行最後沒有任何空格,一般出錯就是在多餘的空格上。
打開/etc/selinux/config
將selinux=enforcing 改成permissive 或disabled。
enforcing強制模式,只要SELinux不允許,就無法執行;
permissive警告模式,將該事件記錄,依然允許執行;
disabled關閉SELinux;
停用、啓用需要重啓計算機;
使用setenforce切換enforcing與permissive模式不需要重啓計算機;
getenforce及sestatus查看執行模式;
關閉selinux命令:setenforce 0
我的FTP無法訪問提示ftp: connect :未知錯誤號
以前問過這個問題,朋友們說是LINUX的防火牆沒有關閉
請問在字符方式下如何關閉我LINUX上的防火牆?
yongpeng
我的FTP無法訪問提示ftp: connect :未知錯誤號
service iptables stop
or
/etc/rc.d/init.d/iptables stop
nios
我的FTP無法訪問提示ftp: connect :未知錯誤號
謝謝你了,
LINUX 默認會起這個防火牆嗎??
順便說一下剛纔發現一個查看服務的命令
/sbin/service --status-all
ftp:connect:未知錯誤號
可能的原因是ftp服務沒有真正啓動成功,可以做以下幾步
1、查看兩臺機器間能否ping通
2、關閉防火牆:service iptables stop (也可以chkconfig iptables off 這樣啓動是就關閉了,其他服務類似)
3、查看21端口,有沒有被其他暫用:netstat -ano | grep 21
如果被暫用,就修改ftp的默認端口
Linux操作系統之ftp搭建
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.