Linux操作系統之ftp搭建

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的默認端口


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章