1.vsftpd的安裝
1.1 首先確定下有沒安裝過。執行命令。
rpm -q vsftpd假如已經安裝了那么會顯示你已經安裝的版本。比如我執行命令后顯示
vsftpd-2.0.5-21.el51.2 沒有安裝那么執行
yum install vsftpd #安裝vsftpd要是你想卸載當前的版本,那么
yum uninstall vsftpd #卸載vsftpd
運行vsftpd方法。
service vsftpd start #vsftpd已經安裝為服務了。可以直接通過這種方式運行。
service vsftpd stop #通知運行vsftpd
service vsftpd restart #重新運行vsftpd ,當你更改了一些設置后要用重新運行,設置才會生效。
chkconfig vsftpd on #把vsftpd加入到開機啟動里。
chkconfig --list #查看下vsftpd是否加入。如果2-5都為ON則表示加入到開機啟動中了。
2.設置vsftpd
默認設置的文件放在/etc/vsftpd/vsfpd.conf
要是找不到可以用find命令
find /-name "vsftpd.conf"
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #首先備份一下設置文件.
3.vsftpd支持三種用戶訪問方式。
第一種是匿名訪問模式。
第二種是本地用戶模式。
第三種是虛擬用戶模式。
3.1 匿名訪問模式
vi /etc/vsftpd/vsftpd.conf #打開配置文件,并且更改為如下設置。
anonymous_enable=YES #是否允許匿名訪問。
write_enable=YES #允許所有用戶寫入。
anon_upload_enable=YES #是否允許匿名用戶上傳文件
anon_mkdir_write_enable=YES #是否允許匿名用戶建立文件夾
保存。然后重啟vsftpd .
service vsftpd restart
測試登錄:
ftp
open 127.0.0.1
如果出現連接拒絕。可能是防火墻或者selinux阻止
vi /etc/sysconfig/iptables #打開防火墻配置文件
#在最后面加上下面這行
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21-j ACCEPT # 允許開放端口21,這個端口是FTP的默認端口。
service iptables restart # 重啟防火墻使設置生效。
這樣應該就可以登錄上了。然后驗證是否可以上傳下載文件。以及建立文件夾。要是不行的話
setsebool ftpd_disable_trans 1#關閉selinux 的ftp設置。
chmod 755 /opt/var/ftp #設置文件夾權限
service vsftpd restart #重啟
登錄后的目錄是匿名用戶的目錄/opt/var/ftp
3.2 本地用戶模式
vi /etc/vsftpd/vsftpd.conf #打開設置文件
local_enable=YES #允許本地用戶登錄,要使用虛擬用戶那么這項也必須開啟。
chroot_local_user=YES #使用戶登錄后鎖定在主目錄下。
#在最后增加下面這行
user_config_dir=/etc/vsftpd/vconf #每個本地用戶的配置文件。在這里面可以設置用戶登錄后的文件夾。以及特定的權限。
#保存退出。
#接下來增加ftp用戶
useradd -g www -d /opt/var/ftp -s /sbin/nologin -M ftp_user #這種方式下添加用戶,使得只有FTP登錄的權限.不能登錄系統.
###############關于useradd 命令#####################
1.作用
useradd命令用來建立用戶帳號和創建用戶的起始目錄,使用權限是終極用戶。
2.格式
useradd [-d home][-s shell][-c comment][-m [-k template]][-f inactive][-e expire ][-p passwd][-r] name
3.主要參數
-c:加上備注文字,備注文字保存在passwd的備注欄中。
-d:指定用戶登入時的啟始目錄。
-D:變更預設值。
-e:指定賬號的有效期限,缺省表示永久有效。
-f:指定在密碼過期后多少天即關閉該賬號。
-g:指定用戶所屬的群組。
-G:指定用戶所屬的附加群組。
-m:自動建立用戶的登入目錄。
-M:不要自動建立用戶的登入目錄。
-n:取消建立以用戶名稱為名的群組。
-r:建立系統賬號。
-s:指定用戶登入后所使用的shell。
-u:指定用戶ID號。
4.說明
useradd可用來建立用戶賬號,他和adduser命令是相同的。賬號建好之后,再用passwd設定賬號的密碼。使用useradd命令所建立的賬號,
實際上是保存在/etc/passwd文本文件中。
5.應用實例
建立一個新用戶賬戶,并設置ID:
#useradd caojh -u 544
需要說明的是,設定ID值時盡量要大于500,以免沖突。因為Linux安裝后會建立一些特別用戶,一般0到499之間的值留給bin、mail這樣的
系統賬號。
####################################################
#建立本地用戶的FTP設置文件。
touch /etc/vsftpd/vconf/ftp_user #在user_config_dir設置的目錄下新建一個與要登錄的用戶同名的用戶文件。
vi /etc/vsftpd/vconf/ftp_user #編輯配置
#按需要增加下面幾個設置
local_root=/data/www #設置本地用戶登錄后的主目錄。
#保存后重啟vsftpd
service vsftpd restart
3.3 虛擬用戶模式。
3.3.1 添加虛擬用戶口令文件
vi /etc/vsftpd/vftpuser.txt #新建存放虛擬用戶密碼帳號原始文件
格式為:一行用戶名,一行密碼,以此類推。奇數行為用戶名,偶數行為密碼。
hahahahh #用戶名
abc123abc123 #密碼
bbababbaba #用戶名
aaaaaa # 密碼
3.3.2 生成虛擬用戶口令認證文件
將剛添加的vftpuser.txt虛擬用戶口令文件轉換成系統識別的口令認證文件。首先查看系統有沒有安裝生成口令認證文件所需的軟件db4-utils。
rpm -qa |grep db4-utils要是沒有安裝則
rpm –ivh db4-utils-4.3.29-9.fc6.i386.rpm然后使用db_load命令將剛才的用戶密碼文件生成虛擬用戶口令認證文件。
db_load –T –t hash –f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db3.3.3 編輯vsftpd的PAM認證文件使它使用我們剛才新建的認證文件
vi /etc/pam.d/vsftpd #默認放在這個目錄下。
#將里面其他的都注釋掉(這樣的話只允許虛擬用戶登錄了,要想本地和虛擬都登錄參考后面的配置),添加下面這兩行.
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
#保存。
3.3.4 配置vsftpd.conf
vi /etc/vsftpd/vsftpd.conf #編輯vsftpd主配置文件
guest_enable=YES #開啟虛擬用戶
guest_username=ftp_user #FTP虛擬用戶對應的系統用戶,就是剛才最先新建的那個帳號
pam_service_name=vsftpd #可選。PAM認證文件,這個要是沒有就加上。
保存后重啟vsftpd
sercvice vsftpd restart
4.一些相關的配置選項介紹
dirlist_enable=NO #是否允許所有用戶可以瀏覽(列出文件列表)
dirmessage_enable=YES #當用戶切換了目錄時,是否通知該用戶。
xferlog_enable=YES #是否啟用日志。與下面這個合用
xferlog_file=/var/log/xferlog #指定日志的文件名。
#注意:使用日志的時候,可能會造成錯誤。嘗試用命令
#rm /var/log/xferlog
local_root=/path #本地用戶登陸服務器后直接進入的目錄local_umask=022 #本地用戶上傳檔案權限的 umask值
###############################
我們知道使用本地用戶登錄ftp后進入的是用戶的主目錄,locla_root這個參數 允許我們登錄服務器后直接進入其它的目錄。
Linux系統中的任何文件都是有權限值的,上傳的文件也不例外,這個默認的權限值就由 local_umask參數指定。
其計算方法為:默認建立文件的權限+local_umask =0666默認建立目錄的權限+local_umask =0777
由此我們可以看出,上傳的文件無論如何都不可能有執行權限的。
###############################
local_max_rate= #本地用戶傳輸速率單位為 bps
chmod_enable=NO #是否允許本地用戶改變ftp 服務器上檔案的權限
Listen_port=5555 #使用端口5555作為FTP端口。記得防火墻要打開這個端口。
ftpd_banner=Welcome to FTP SERVER #成功登錄信息
idle_session_timeout=600 #可以設定默認的空閑超時時間,用戶超過這段時間不動作將被服務器踢出。
data_connection_timeout=120 #設定默認的數據連接超時時間。
ascii_upload_enable=YES;ascii_download_enable=YES #默認情況下服務器會假裝接受ASCⅡ模式請求但實際上是忽略這樣的請求,
#啟用上述的兩個選項可以讓服務器真正實現ASCⅡ模式的傳輸。這些ASCⅡ模式的設置選項分成上傳和下載兩個,
#這樣我們就可以允許ASCⅡ模式的上傳(可以防止上傳腳本等惡意文件而導致崩潰),而不會遭受拒絕服務攻擊的危險。
nopriv_user=ftpsecure #指定一個安全用戶賬號,讓FTP服務器用作完全隔離和沒有特權的獨立用戶。這是vsftpd系統推薦選項。
userlist_enable=NO #是否啟用 userlist 功能模塊
userlist_deny=NO #是否拒絕 userlist 文件中用戶登陸 ftp 服務
userlist_file=/path/to/file #指定的 userlist 文件名
chown_uploads=YES #如果啟用此項,則匿名用戶上傳文件的屬主用戶將改為別的用戶賬戶,這里建議
#不要指定root賬號為匿名上傳文件的屬主用戶!
chown_username=whoever #當啟用chown_uploads=YES時,所指定的屬主用戶賬號,要用合適的用戶賬號來代替。
chroot_list_enable=YES #可以用一個列表限定哪些本地用戶只能在自己目錄下活動,
#如果chroot_local_user=YES,那么這個列表里指定的用戶是不受限制的。
chroot_list_file=/etc/vsftpd.chroot_list #則指定該列表(chroot_local_user)的保存路徑(默認是/etc/vsftpd.chroot_list)。
pasv_enable=YES #啟用被動模式
pasv_min_port=30000#指定被動模式下的最小端口 pasv_max_port=30999 #指定被動模式下的最大端口,防火墻要允許通過
virtual_use_local_privs=YES #虛擬用戶和本地用戶有相同的權限;
max_clients=0#最大允許的同時在線用戶數量,0表示無限制
max_per_ip=0#每個IP允許的用戶數。
accept_timeout=#以pasv數據連接模式的時候,數據連接的超時;
connect_timeout=#以port模式連接數據連接時的超時時間
data_connection_timeout=300#數據連接后數據連接等待的空閑時間超時,超過時間后,數據連接將斷開連接
idle_session_timeout=180#客戶端隔多長時間不與服務器有交互ftp 命令,將自動斷開 ftp 服務連接。
port_enable=YES #是否啟用 port 模式
connect_from_port_20=YES #port 模式下是否默認使用固定的 20 端口,默認的好像是21端口。
ftp_data_port=21 #指定 port 模式的端口號
port_promiscuous=NO #是否使用安全的 port 模式,除非你確保服務器是與真正的客戶端進行連接,否則不要將此參數值改
新聞熱點
疑難解答