由於FTP的端口是 兩個,一個是固定21端口,還有一個任意端口的數據通道。關鍵是任意端口很差搞。php
首先在vsftpd的配置文件中設置 任意端口的範圍html
[root@localhost root]# vi /etc/vsftpd.conf
在配置文件的最下面 加入
pasv_min_port=30001
pasv_max_port=31000
而後保存退出。java
而後設置iptables防火牆的配置文件linux
[root@localhost root]# vi /etc/sysconfig/iptables
在配置文件的最下面 加入web
-A INPUT -p tcp -m state –state NEW -m tcp –dport 30001:31000 -j ACCEPTshell
而後保存退出。數據庫
http://dns.myhusl.com/a/default/2011/0922/18.htmlapache
Vsftp用虛擬用戶比較方便控制權限,及方便配置路徑及密碼管理.
ubuntu
#yum install pam-devel db4-utils
#yum install vsftpd*
#ldd /usr/sbin/vsftpd(等裝好vsftpd 後使用此命令查看一下。)
用ldd命令能夠看到vsftpd是否加載了pam: l
ibpam.so.0 => /lib/libpam.so.0 #看到此行,表示pam安裝成功。
[root@test vsftpd]# grep ^[^#] /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
guest_enable=YES
guest_username=apache #也可用別的
user_config_dir=/etc/vsftpd/user_config_dir
userlist_enable=YES
chroot_local_user=YES
tcp_wrappers=YES
listen_port=21
pasv_min_port=9991
pasv_max_port=9994
三、配置pam文件 (對應的文件是:/etc/vsftpd/vsftpd_login.db 但配置不能帶.db後輟
,
不然,ftp鏈接時,會提示 530 Login incorrect錯誤,是由於用戶密碼沒生效。我在這糾結了好幾個小時
)
#vi /etc/pam.d/vsftpd
#%PAM-1.0
...
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login #不能帶.db後輟![](http://static.javashuo.com/static/loading.gif)
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login #不能帶.db後輟![](http://static.javashuo.com/static/loading.gif)
4. 爲虛擬用戶建立本地系統用戶 ,
由於我網站ftp要上傳,用戶權限想保持一致,因此都用apache,這樣上傳後不用改用戶權限,這樣方便.
useradd -d /home/ftp apache
mkdir /home/ftp
chown apache.apache /home/ftp -R
useradd -d /home/ftp vftpuser
mkdir /home/ftp
chown vftpuser.vftpuser /home/ftp -R
5.、生成數據庫文件:(生成配置時帶.db, !!!但pam.d/vsftpd配置不能帶.db)
#vim logins_user.txt
ftp_007
1234567
ftp_004
4321
ftp_008
8321
db_load -T -t hash -f /etc/vsftpd/logins_user.txt /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
6. username 要跟生成的用戶名一致
[root@localhost /]# cat /etc/vsftpd/user_config_dir/ftp_007
#管理員權限,擁有全部權限:
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftp
-------------
[root@localhost /]# cat /etc/vsftpd/user_config_dir/ftp_004
#只能夠上傳,不可修改和刪除:
local_root=/home/ftp/user
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
[root@localhost /]# cat /etc/vsftpd/user_config_dir/ftp_008
#只能夠瀏覽和下載:
local_root=/home/ftp
anon_world_readable_only=NO
---------------
[root@test ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
#iptables.sh for FTP
iptables -A INPUT -p tcp -s 1.2.3.5/32 -m multiport --dport 21,9991,9992,9993,9994 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-resetvim
vsftp中遇到的問題:200 PORT command successful. Consider using PASV
全部目錄權限都改成777
[root@test home]# chmod 777 /home/ftp_all_backup -R
service vsftpd restart 必定要重啓一次.
## setsebool -P ftpd_disable_trans 1
----------------
解決vsftpd的530 Login incorrect錯誤
0 , vi /etc/pam.d/vsftpd 保留 2行試下。 <---
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account
account required /lib/security/pam_userdb.so db=/etc/vsftpd/account
一、首先須要在/etc/vsftpd/vsftpd.conf配置文件中啓動
pam_service_name=vsftpd
注意:若是沒有此項配置,則應該創建此配置項
二、cp Path/RedHat/vsftpd.pam /etc/pam.d/vsftpd 說明:path爲vsftp解壓縮源文件目錄 這是由於咱們RHEL啓用了PAM,
所在用到vsftp時須要用到 /etc/pam.d/vsftpd 這個文件(默認源碼安裝的不會有這個文件),所以除了匿名用戶外本地用戶沒法登陸。
注意:vsftpd這個文件名要求與pam_service_name的值一致,不然無效。
sftpd 530 Login incorrect 錯誤
星期一, 六月 21st, 2010 | Author: 8liang
在配置vsftpd 的時候,常會遇到530 Login incorrect 錯誤,大多數的緣由是限制了本地用戶的權限。
以centOS 爲例,有如下幾種解決方法:
1.缺乏了
pam_service_name=vsftpd
把這行加入到vsftpd.conf中就行了。
2.設置Authentication Configuration
setup
把其中的Local authorization is sufficient勾選上就能夠了
--------
在Redhat AS4裏按照默認方式安裝好vsftpd後,按照如下步驟配置:
gedit /etc/vsftpd/vsftpd.conf
在文件中限制匿名用戶,作以下設置:
anonymous_enable=NO
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
這樣只有在user_list 裏面的用戶才能夠訪問ftp。
可是在service vsftpd restart 後,
用ftp localhost 測試,輸入正確的用戶名和密碼以後,
卻一直顯示
:530 Login incorrect
Login Failed
後來發如今etc下面有個pam.d文件夾
進去打開vsftpd這個文件, 發現裏面對以前的用戶進行了限制,
將裏面對應的限制註釋掉,問題解決。
------------
連續配置在3臺服務器上安裝ftp,都是debian系的發行版
把vsftpd.conf裏面的local_enable打開以後,本地用戶仍是沒法登陸,遇到很是詭異的問題,折騰了好久最後才找到答案debian環境中,vsftpd.conf裏面的pam_service_name=vsftpd
要寫全絕對路徑
相似這樣的形式
pam_service_name=/etc/pam.d/vsftpd
這種垃圾問題很是惱火!!
------------------
在vsftp配置文件中開啓了匿名用戶登陸,匿名用戶有anonymous和ftp,
可是在登陸輸入密碼後報:500 OOPS: vsftpd: refusing to run with writable anonymous root檢測配置文件沒發現任何問題,
檢測默認的ftp目錄/var/ftp權限爲777,報錯應該爲權限問題,
嘗試chown root:root /var/ftp 而後chmod 755 /var/ftp 後,能夠正常登陸,,用戶的家目錄是不能針對全部用戶、用戶組、其它用戶組徹底開放。
----------------
而後保存退出,新建一個虛擬帳戶,useradd ftp1,最後修改/etc/vsftpd/vsftpd.conf文件,在後面加入:
guest_enable=YES
guest_username=ftp1
pam_service_name=vsftpd.vu
保存退出,重啓vsftpd服務後測試,輸入登錄密碼後報530 Login incorrect錯誤,
最終找到解決方法,把vsftpd.uv文件中的/lib/security/去掉,也就是說不用絕對路徑,
修改後重啓vsftpd服務正常,檢測/lib/security/目錄確實有pam_userdb.so文件,但不知道爲什麼在vsftpd.vu中用絕對路徑不生效。
-----
配置好vsftpd後,匿名用戶能夠登,本地用戶卻提示 530 Login incorrect錯誤。
找了半天緣由,都沒有搞定;後來發現緣由在於,新建本地用戶時,用了 -s /bin/false。
刪除用戶,再新建改爲 -s /sbin/nologin 。完整以下:
#groupadd ftpusers
#useradd -d /home/ftp -g ftpusers -s /sbin/nologin upload
#chown -R upload:ftpusers /home/ftp
就能夠了。
-----------
3、配置vsftpd.conf
anonymous_enable=NO
local_enable=YES // PAM方式此處好比爲YES,否則會報 500 OOPS: vsftpd: both local and anonymous
------------------
=========================================
客戶公司要架設兩臺FTP服務器分別給兩個地點的分公司使用,可是這兩臺服務器都比較老了,一臺HP 380G5 ,一臺HP 380 G4,因此他們計劃用linux,用什麼版本他們就沒說,因而我計劃用CentOS6.2,其實安裝和配置vsFTP都很簡單,網上也不少了,不過仍是詳細記錄一下好
環境:CentOS6.0+vsFTP 0:2.2.2-6.el6_2.1
第一步:安裝vsftp pam db4
yum install vsftpd pam* db4*-y
========================================================================================
Installed:
db4-cxx.i686 0:4.7.25-16.el6 db4-devel.i686 0:4.7.25-16.el6 db4-devel-static.i686 0:4.7.25-16.el6 db4-java.i686 0:4.7.25-16.el6
db4-tcl.i686 0:4.7.25-16.el6 pam-devel.i686 0:1.1.1-10.el6 pam_ldap.i686 0:185-11.el6 pam_pkcs11.i686 0:0.6.2-11.1.el6
pam_ssh_agent_auth.i686 0:0.9-70.el6_2.2 vsftpd.i686 0:2.2.2-6.el6_2.1
Dependency Installed:
pcsc-lite-libs.i686 0:1.5.2-6.el6
========================================================================================
經過setup對系統服務及防火牆進行配置,而後reboot系統
或者使用命令將vsftp配置爲系統服務
chkconfig --level 35 vsftpd on
第二步:配置vsftpd服務的宿主
#useradd vsftpdadmin -s /sbin/nologin
這個vsftpdadmin只是用來替換root的,並不須要登陸
第三步:創建ftp虛擬宿主賬戶
#useradd ftpuser -s /sbin/nologin
這ftpuser只個虛擬賬戶的宿主,自己是不用登陸的
第四步:配置vsftpd.conf
更改配置前最好備份一下而後再改
vim /etc/vsftpd/vsftpd.conf
修改下面紅色字體的部分爲藍色字體的形式,紫色字體是配置原有的
anonymous_enable=YES --> anonymous_enable=NO //不容許匿名用戶訪問,默認是容許。
#chroot_list_enable=YES --> chroot_list_enable=YES //不容許FTP用戶離開本身主目錄,默認是被註釋掉的。
#chroot_list_file=/etc/vsftpd/chroot_list --> chroot_list_file=/etc/vsftpd/chroot_list //若是開啓了chroot_list_enable=YES,那麼必定要開啓這個,這條是鎖定登陸用戶只能家目錄的位置,若是不開啓用戶登陸時就會報500 OOPS的錯。
注意:/etc/vsftp/chroot_list自己是不存在的,這要創建vim /etc/vsftp/chroot_list,而後將賬戶輸入一行一個,保存就能夠了
local_enable=YES //容許本地用戶訪問,默認就是YES,不用改
write_enable=YES //容許寫入,默認是YES,不用改
local_umask=022 //上傳後文件的權限掩碼,不用改
dirmessage_enable=YES //開啓目錄標語,默認是YES,開不開無所謂,我是默認就行
xferlog_enable=YES //開啓日誌,默認是YES,不用改
connect_from_port_20=YES //設定鏈接端口20
xferlog_std_format=YES //設定vsftpd的服務日誌保存路徑,不用改
(這步後面要有幾個操做才能運行,也就是touch這個文件(見第五步),由於它自己不存在,並且還要給文件寫入的權限)
#idle_session_timeout=600 --> idle_session_timeout=600 //會話超時,客戶端鏈接到ftp但未操做,默認被註釋掉,可根據我的狀況修改
#async_abor_enable=YES --> async_abor_enable=YES //支持異步傳輸功能,默認是註釋掉的,去掉註釋
#ascii_upload_enable=YES --> ascii_upload_enable=YES //支持ASCII模式的下載功能,默認是註釋掉的,去掉註釋
#ascii_download_enable=YES --> ascii_download_enable=YES //支持ASCII模式的上傳功能,默認是註釋掉的,去掉註釋
#ftpd_banner=Welcome to blah FTP service //FTP的登陸歡迎語,自己是被註釋掉的,去不去都行
#chroot_local_user=YES --> chroot_local_user=YES //禁止本地用戶登出本身的FTP主目錄,自己被註釋掉,去掉註釋
pam_service_name=vsftpd //設定pam服務下vsftpdd的驗證配置文件名,不用改
userlist_enable=YES //拒絕登陸用戶名單,不用改
TCP_wrappers=YES //限制主機對VSFTP服務器的訪問,不用改(經過/etc/hosts.deny和/etc/hosts.allow這兩個文件來配置)
增長
guest_enable=YES //設定啓用虛擬用戶功能。
guest_username=ftpuser //指定虛擬用戶的宿主用戶。
virtual_use_local_privs=YES //設定虛擬用戶的權限符合他們的宿主用戶。
user_config_dir=/etc/vsftpd/vconf //設定虛擬用戶我的Vsftp的配置文件存放路徑
第五步:創建日誌文件
#touch /var/log/vsftpd.log //日誌文件
#chown vsftpdadmin.vsftpdadmin /var/log/vsftpd.log //屬於vsftpdadmin這個宿主
第六步:創建虛擬用戶文件
#mkdir /etc/vsftpd/vconf/
#touch /etc/vsftpd/vconf/vir_user
第七步:創建虛擬用戶
#vim /etc/vsftpd/vconf/vir_user
virtualuser //用戶名
12345678 //密碼
注意:第一行用戶名,第二行是上一行用戶名的密碼,其餘人的以此類推
第八步:生成數據庫
#db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db
第九步:設置數據庫文件的訪問權限
#chmod 600 /etc/vsftpd/vconf/vir_user.db
#chmod 600 /etc/vsftpd/vconf/vir_user
第十步:修改/etc/pam.d/vsftpd內容
echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" > /etc/pam.d/vsftpd
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd
第十步:建立用戶的配置文件
注意:用戶配置文件的名字要和建立的「虛擬用戶」名字對應
#touch /etc/vsftpd/vconf/virtualuser
#vim /etc/vsftpd/vconf/virtualuser
輸入:
local_root=/home/virtualuser //虛擬用戶的我的目錄路徑
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=1048576 //本地用戶的最大傳輸速度,單位是Byts/s,我設定的是10M
第十一步:創建虛擬用戶目錄
若是不創建虛擬用戶的我的目錄,那麼全部的虛擬用戶登陸後所在的目錄都是同一個目錄下
# mkdir /home/virtualuser
# chown ftpuser.ftpuser ./virtualuser
# chmod 600 /home/virtualuser
配置就此完成,若是想增長新的用戶,只要按照上面的第七步、第十步進行就能夠了。
遇到的問題 問題
其實這回遇到的問題很少。
1,450:讀取目錄列表失敗
在配置完第一臺vsftp後(上面的配置就是)再用一樣的過程作第二臺,完成後用客戶端和瀏覽器死活沒法登陸報錯:
450:讀取目錄列表失敗
只有在命令提示符和Termin下經過ftp 192.168.88.30後ls沒有問題
對比了以前的配置,每一步都沒錯,難到是PASV問題,因而在vsftpd.conf加上了一句pasv_enable=NO,而後……沒而後了,一切都正常了
二、中文亂碼
這個是老生常談的問題,好象也一直沒有什麼好的解決辦法,網上也有提出改i18n,不過客戶提出不用改,他們公司主要都是英文檔,也我也省事了,不過仍是當個問題記錄吧
三、500 OOPS:cannot change directory:/home/pmfile
新建用戶後登陸報錯,剛開始覺得是selinux的問題,後來一想不對,其餘的賬號都沒事,確定剛纔己關閉了selinux,那麼就是權限問題了,果真是剛纔忘了把權限給虛擬ftp宿主權限了:chown -R ftpuser.ftpuser /home/publicfile
四、530錯誤:Login incorrect.
這是一個讓我覺的搞笑的問題,第二臺vsftp服務我用本身的本上的客戶端(FileZilla)登陸沒問題,而客戶用他的本登陸就不行,用的軟件都同樣,不一樣的是我用的是Ubuntu,他用的是win7,但在win7的命令提示符下他卻也能登陸也能ls,不是權限問題,不是pam問題,這兩塊都着手試過,結果發現是客戶在終端輸入的密碼錯誤,以前我還一再問他到底有沒有輸錯密碼,他也十分確定的說沒有,結果……
五、外網沒法登陸,550錯誤,錯誤: 讀取目錄列表失敗
這個問題非常撓頭,在作完第二臺服務器後讓客戶先從內網登陸,一切都很正常,而從外網登陸時就會出現「550 Permission denied.」「錯誤: 鏈接超時」「錯誤: 讀取目錄列表失敗」,難到是權限?
試來試去什麼PASV、什麼權限更改全作了(這一步是我着實不想作的,要是登陸用戶權限有問題內網也該沒法登陸),最後讓客戶的網管帶我去查了一下他們路由器的配置,我才發現他們的內網映射沒有開放TCP20端口,開放後就OK了
本文出自 「青瞳」 博客,請務必保留此出處http://icedot.blog.51cto.com/61369/772452
==============================================
http://www.centos.bz/2011/03/centos-install-vsftpd-ftp-server/
vsftpd做爲FTP服務器,在Linux系統中是很是經常使用的。下面咱們介紹如何在centos系統上安裝vsftp。
什麼是vsftpd
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特色是小巧輕快,安全易用。
vsftpd 的名字表明」very secure FTP daemon」, 安全是它的開發者 Chris Evans 考慮的首要問題之一。在這個 FTP 服務器設計開發的最開始的時候,高安全性就是一個目標。
安裝vsftpd
一、以管理員(root)身份執行如下命令
二、設置開機啓動vsftpd ftp服務
三、啓動vsftpd服務
管理vsftpd相關命令:
中止vsftpd: service vsftpd stop
重啓vsftpd: service vsftpd restart
配置防火牆
打開/etc/sysconfig/iptables文件
- vi /etc/sysconfig/iptables
在REJECT行以前添加以下代碼
- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
保存和關閉文件,重啓防火牆
配置vsftpd服務器
默認的配置文件是/etc/vsftpd/vsftpd.conf,你能夠用文本編輯器打開。
- vi /etc/vsftpd/vsftpd.conf
添加ftp用戶
下面是添加ftpuser用戶,設置根目錄爲/home/wwwroot/ftpuser,禁止此用戶登陸SSH的權限,並限制其訪問其它目錄。
1、修改/etc/vsftpd/vsftpd.conf
將底下三行
- #chroot_list_enable=YES
- # (default follows)
- #chroot_list_file=/etc/vsftpd.chroot_list
改成
- chroot_list_enable=YES
- # (default follows)
- chroot_list_file=/etc/vsftpd/chroot_list
三、增長用戶ftpuser,指向目錄/home/wwwroot/ftpuser,禁止登陸SSH權限。
- useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser
四、設置用戶口令
五、編輯文件chroot_list:
- vi /etc/vsftpd/chroot_list
內容爲ftp用戶名,每一個用戶佔一行,如:
peter
john
六、從新啓動vsftpd
另外,若是以爲之後管理ftp用戶名嫌麻煩,可使用centos官方發佈的腳本管理。地址以下:
http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users
出現的錯誤
一、500 OOPS: cannot change directory
解決方法:http://www.centos.bz/2011/10/ftp-500-oops-cannot-change-directory/
轉載請註明《文章來源:
http://www.centos.bz/2011/03/centos-install-vsftpd-ftp-server/》
若有疑問,歡迎加入CentOS論壇。
或者QQ羣:177361427(驗證信息:www.centos.bz)。
如須要付費技術支持,請點擊這裏。
http://bbs.chinaunix.net/thread-2271338-1-1.html
vsftpd.ftpusers 與 vsftpd.user_list
vsftpd的配置文件有三個,分別是 /etc/vsftpd/vsftpd.conf /etc/vsftpd.ftpusers /etc/vsftpd.user_list 其中,/etc/vsftpd/vsftpd.conf是主配置文件。/etc/vsftpd.ftpusers中指定了哪些用戶不能訪問FTP服務器。/etc/vsftpd.user_list中指定的用戶默認狀況(即在/etc/vsftpd/vsftpd.conf中設置了userlist_deny=YES)下也不能訪問FTP服務器,當在/etc/vsftpd/vsftpd.conf中設置了userlist_deny=NO時,僅僅容許/etc/vsftpd.user_list中指定的用戶訪問FTP服務器。 |
http://bbs.chinaunix.net/thread-315257-1-1.html
看了很多站上的相關的設置文章, 感受這點說的都不是很明白, 尤爲對初學者 現作一點補充:
若是設置爲 chroot_local_user=YES chroot_list_enable=YES(這行能夠沒有, 也能夠有) chroot_list_file=/etc/vsftpd.chroot_list 那麼, 凡是加在文件vsftpd.chroot_list中的用戶都是不受限止的用戶 即, 能夠瀏覽其主目錄的上級目錄.
因此, 若是不但願某用戶可以瀏覽其主目錄上級目錄中的內容,能夠如上設置, 而後在 文件vsftpd.chroot_list中不添加該用戶便可(此時, 在該文件中的用戶都是能夠瀏覽其主目錄以外的目錄的). 或者, 設置以下 chroot_local_user=NO chroot_list_enable=YES(這行必需要有, 不然文件vsftpd.chroot_list不會起做用) chroot_list_file=/etc/vsftpd.chroot_list 而後把全部不但願有這種瀏覽其主目錄之上的各目錄權限的用戶添加到文件vsftpd.chroot_list(此時, 在該文件中的用戶都是不能夠瀏覽其主目錄以外的目錄的) 中便可(一行一個用戶名). |
http://bbs.chinaunix.net/thread-2186779-1-1.html
anon_root=/var/ftp 修改就能夠了 |
http://biyoung.blogspot.com/2006/11/vsftpd.html
vsftpd用戶權限設置
今天配置vsftp實現三個用戶的不一樣權限:
a.upload用戶,能夠上傳下載,能夠新建文件夾,但不能刪除文件和文件夾,不能重命名原有文件和文件夾;
b.download用戶,只能下載;
c.admin用戶 ,管理員,能夠上傳,能夠下載,能夠新建文件夾,能夠刪除和更改文件和文件夾名。
配置文件
download內容 :
anon_world_readable_only=NO
upload內容:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
admin內容:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES (使能夠續傳上傳的文件)
vsftpd上傳文件權限設置
除本地用戶外的其餘用戶屬性配置函數
anon_umask=022 (最後的權限是rwxrwxrwx-022=rwxr-xr-x)
五、VSFTPD的設置選項
VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是個文本文件。以「#」字符開始的行是註釋行。每一個選項設置爲一行,格式爲「option=value」,注意「=」號兩邊不能留空白符。除了這個主配置文件外,還能夠給特定用戶設定我的配置文件,具體介紹見後。
VSFTPD包中所帶的vsftpd.conf文件配置比較簡單,並且很是偏執狂的(文檔自稱:-))。咱們能夠根據實際狀況對其進行一些設置,以使得VSFTPD更加可用。
5.一、鏈接選項
本部分主要是一些與創建FTP連接相關的選項。
5.1.一、監聽地址與控制端口
listen_address=ip address
此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義了在主機的哪一個IP地址上監聽FTP請求,即在哪一個IP地址上提供FTP服務。對於只有一個IP地址的主機,不須要使用此參數。對於多址主機,不設置此參數,則監聽全部IP地址。默認值爲無。
listen_port=port_value
指定FTP服務器監聽的端口號(控制端口),默認值爲21。此選項在standalone模式下生效。
5.1.二、FTP模式與數據端口
FTP 分爲兩類,PORT FTP和PASV FTP,PORT FTP是通常形式的FTP。這兩種FTP在創建控制鏈接時操做是同樣的,都是由客戶端首先和FTP服務器的控制端口(默認值爲21)創建控制連接,並經過此連接進行傳輸操做指令。它們的區別在於使用數據傳輸端口(ftp-data)的方式。PORT FTP由FTP服務器指定數據傳輸所使用的端口,默認值爲20。PASV FTP由FTP客戶端決定數據傳輸的端口。PASV FTP這種作法,主要是考慮到存在防火牆的環境下,由客戶端與服務器進行溝通(客戶端向服務器發出數據傳輸請求中包含了數據傳輸端口),決定二者之間的數據傳輸端口更爲方便一些。
port_enable=YES|NO
若是你要在數據鏈接時取消PORT模式時,設此選項爲NO。默認值爲YES。
connetc_from_port_20=YES|NO
控制以PORT模式進行數據傳輸時是否使用20端口(ftp-data)。YES使用,NO不使用。默認值爲NO,但RHL自帶的vsftpd.conf文件中此參數設爲YES。
ftp_data_port=port number
設定ftp數據傳輸端口(ftp-data)值。默認值爲20。此參數用於PORT FTP模式。
port_promiscuous=YES|NO
默認值爲NO。爲YES時,取消PORT安全檢查。該檢查確保外出的數據只能鏈接到客戶端上。當心打開此選項。
pasv_enable=YES|NO
YES,容許數據傳輸時使用PASV模式。NO,不容許使用PASV模式。默認值爲YES。
pasv_min_port=port number
pasv_max_port=port number
設定在PASV模式下,創建數據傳輸所可使用port範圍的下界和上界,0 表示任意。默認值爲0。把端口範圍設在比較高的一段範圍內,好比50000-60000,將有助於安全性的提升。
pasv_promiscuous=YES|NO
此選項激活時,將關閉PASV模式的安全檢查。該檢查確保數據鏈接和控制鏈接是來自同一個IP地址。當心打開此選項。此選項惟一合理的用法是存在於由安全隧道方案構成的組織中。默認值爲NO。
pasv_address=
此選項爲一個數字IP地址,做爲PASV命令的響應。默認值爲none,即地址是從呼入的鏈接套接字(incoming connectd socket)中獲取。
5.1.3 ASCII模式
默認狀況下,VSFTPD是禁止使用ASCII傳輸模式。即便FTP客戶端使用asc命令,指明要使用ASCII模式,可是,VSFTPD表面上接受了asc命令,而在實際傳輸文件時,仍是使用二進制方式。下面選項控制VSFTPD是否使用ASCII傳輸模式。
ascii_upload_enable=YES|NO
控制是否容許使用ascii模式上傳文件,YES容許,NO不容許,默認爲NO。
ascii_download_enable=YES|NO
控制是否容許使用ascii模式下載文件,YES容許,NO不容許,默認爲NO。
5.二、性能與負載控制
5.2.一、超時選項
idle_session_timeout=
空閒(發呆)用戶會話的超時時間,如果超出這時間沒有數據的傳送或是指令的輸入,則會強迫斷線。單位爲秒,默認值爲300。
data_connection_timeout=
空閒的數據鏈接的超時時間。默認值爲300 秒。
accept_timeout=numerical value
接受創建聯機的超時設定,單位爲秒。默認值爲60。
connect_timeout=numerical value
響應PORT方式的數據聯機的超時設定,單位爲秒。默認值爲60。以上兩個選項針對客戶端的,將使客戶端空閒1分鐘後自動中斷鏈接,並在中斷1分鐘後自動激活鏈接。
5.2.2 負載控制
max_clients=numerical value
此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義了FTP服務器最大的併發鏈接數,當超過此鏈接數時,服務器拒絕客戶端鏈接。默認值爲0,表示不限最大鏈接數。
�
max_per_ip=numerical value
此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義每一個IP地址最大的併發鏈接數目。超過這個數目將會拒絕鏈接。此選項的設置將影響到象網際快車這類的多進程下載軟件。默認值爲0,表示不限制。
anon_max_rate=value
設定匿名用戶的最大數據傳輸速度value,以Bytes/s爲單位。默認無。
local_max_rate=value
設定用戶的最大數據傳輸速度value,以Bytes/s爲單位。默認無。此選項對全部的用戶都生效。此外,也能夠在用戶我的配置文件中使用此選項,以指定特定用戶可得到的最大數據傳輸速率。
步驟以下:
①在vsftpd.conf中指定用戶我的配置文件所在的目錄,如:
user_config_dir=/etc/vsftpd/userconf
②生成/etc/vsftpd/userconf目錄。
③用戶我的配置文件是在該目錄下,與特定用戶同名的文件,如:
/etc/vsftpd/userconf/xiaowang
④在用戶的我的配置文件中設置local_max_rate參數,如:
local_max_rate=80000
以上步驟設定FTP用戶xiaowang的最大數據傳輸速度爲80KBytes/s。
VSFTPD 對於速度控制的變化範圍大概在80%到120%之間。好比咱們限制最高速度爲100KBytes/s, 但實際的速度可能在80KBytes/s 到120KBytes/s 之間。固然,如果線路帶寬不足時,速率天然會低於此限制。
5.3 用戶選項
VSFTPD的用戶分爲三類:匿名用戶、本地用戶(local user)以及虛擬用戶(guest)。
5.3.一、匿名用戶
anonymous_enable=YES|NO
控制是否容許匿名用戶登陸,YES容許,NO不容許,默認值爲YES。
ftp_username=
匿名用戶所使用的系統用戶名。默認下,此參數在配置文件中不出現,值爲ftp。
no_anon_password=YES|NO
控制匿名用戶登入時是否須要密碼,YES不須要,NO須要。默認值爲NO。
deny_email_enable=YES|NO
此參數默認值爲NO。當值爲YES時,拒絕使用banned_email_file參數指定文件中所列出的e-mail地址進行登陸的匿名用戶。即,當匿名用戶使用banned_email_file文件中所列出的e-mail進行登陸時,被拒絕。顯然,這對於阻擊某些Dos攻擊有效。當此參數生效時,需追加banned_email_file參數
banned_email_file=/etc/vsftpd.banned_emails
指定包含被拒絕的e-mail地址的文件,默認文件爲/etc/vsftpd.banned_emails。
anon_root=
設定匿名用戶的根目錄,即匿名用戶登入後,被定位到此目錄下。主配置文件中默認無此項,默認值爲/var/ftp/。
anon_world_readable_only=YES|NO
控制是否只容許匿名用戶下載可閱讀文檔。YES,只容許匿名用戶下載可閱讀的文件。NO,容許匿名用戶瀏覽整個服務器的文件系統。默認值爲YES。
anon_upload_enable=YES|NO
控制是否容許匿名用戶上傳文件,YES容許,NO不容許,默認是不設值,即爲NO。除了這個參數外,匿名用戶要能上傳文件,還須要兩個條件:一,write_enable參數爲YES;二,在文件系統上,FTP匿名用戶對某個目錄有寫權限。
anon_mkdir_write_enable=YES|NO
控制是否容許匿名用戶建立新目錄,YES容許,NO不容許,默認是不設值,即爲NO。固然在文件系統上,FTP匿名用戶必需對新目錄的上層目錄擁有寫權限。
anon_other_write_enable=YES|NO
控制匿名用戶是否擁有除了上傳和新建目錄以外的其餘權限,如刪除、改名等。YES擁有,NO不擁有,默認值爲NO。
chown_uploads=YES|NO
是否修改匿名用戶所上傳文件的全部權。YES,匿名用戶所上傳的文件的全部權將改成另一個不一樣的用戶全部,用戶由chown_username參數指定。此選項默認值爲NO。
chown_username=whoever
指定擁有匿名用戶上傳文件全部權的用戶。此參數與chown_uploads聯用。不推薦使用root用戶。
5.3.二、本地用戶
在使用FTP服務的用戶中,除了匿名用戶外,還有一類在FTP服務器所屬主機上擁有帳號的用戶。VSFTPD中稱此類用戶爲本地用戶(local users),等同於其餘FTP服務器中的real用戶。
local_enable=YES|NO
控制vsftpd所在的系統的用戶是否能夠登陸vsftpd。默認值爲YES。
local_root=
定義全部本地用戶的根目錄。當本地用戶登入時,將被更換到此目錄下。默認值爲無。
user_config_dir=
定義用戶我的配置文件所在的目錄。用戶的我的配置文件爲該目錄下的同名文件。我的配置文件的格式與vsftpd.conf格式相同。例如定義user_config_dir=/etc/vsftpd/userconf,而且主機上有用戶xiaowang,lisi,那咱們能夠在user_config_dir的目錄新增名爲xiaowang、lisi的兩個文件。當用戶lisi 登入時,VSFTPD則會讀取user_config_dir下lisi這個文件中的設定值,應用於用戶lisi。默認值爲無。
5.3.三、虛擬用戶
guest_enable=YES|NO
如果啓動這項功能,全部的非匿名登入者都視爲guest。默認值爲關閉。
guest_username=
定義VSFTPD的guest用戶在系統中的用戶名。默認值爲ftp。
5.四、安全措施
5.4.一、用戶登陸控制
pam_service_name=vsftpd
指出VSFTPD進行PAM認證時所使用的PAM配置文件名,默認值是vsftpd,默認PAM配置文件是/etc/pam.d/vsftpd。
/etc/vsftpd.ftpusers
VSFTPD禁止列在此文件中的用戶登陸FTP服務器。這個機制是在/etc/pam.d/vsftpd中默認設置的。
userlist_enable=YES|NO
此選項被激活後,VSFTPD將讀取userlist_file參數所指定的文件中的用戶列表。當列表中的用戶登陸FTP服務器時,該用戶在提示輸入密碼以前就被禁止了。即該用戶名輸入後,VSFTPD查到該用戶名在列表,VSFTPD就直接禁止掉該用戶,不會再進行詢問密碼等後續步聚。默認值爲NO。
userlist_file=/etc/vsftpd.user_list
指出userlist_enable選項生效後,被讀取的包含用戶列表的文件。默認值是/etc/vsftpd.user_list。
userlist_deny=YES|NO
決定禁止仍是隻容許由userlist_file指定文件中的用戶登陸FTP服務器。此選項在userlist_enable 選項啓動後才生效。YES,默認值,禁止文件中的用戶登陸,同時也不向這些用戶發出輸入口令的提示。NO,只容許在文件中的用戶登陸FTP服務器。
tcp_wrappers=YES|NO
在VSFTPD中使用TCP_Wrappers遠程訪問控制機制,默認值爲YES。
5.4.二、目錄訪問控制
chroot_list_enable=YES|NO
鎖定某些用戶在自家目錄中。即當這些用戶登陸後,不能夠轉到系統的其餘目錄,只能在自家目錄(及其子目錄)下。具體的用戶在chroot_list_file參數所指定的文件中列出。默認值爲NO。
chroot_list_file=/etc/vsftpd/chroot_list
指出被鎖定在自家目錄中的用戶的列表文件。文件格式爲一行一用戶。一般該文件是/etc/vsftpd/chroot_list。此選項默認不設置。
chroot_local_users=YES|NO
將本地用戶鎖定在自家目錄中。當此項被激活時,chroot_list_enable和chroot_local_users參數的做用將發生變化,chroot_list_file所指定文件中的用戶將不被鎖定在自家目錄。本參數被激活後,可能帶來安全上的衝突,特別是當用戶擁有上傳、shell訪問等權限時。所以,只有在確實瞭解的狀況下,才能夠打開此參數。默認值爲NO。
passwd_chroot_enable
當此選項激活時,與chroot_local_user選項配合,chroot()容器的位置能夠在每一個用戶的基礎上指定。每一個用戶的容器來源於/etc/passwd中每一個用戶的自家目錄字段。默認值爲NO。
5.4.三、文件操做控制
hide_ids=YES|NO
是否隱藏文件的全部者和組信息。YES,當用戶使用"ls -al"之類的指令時,在目錄列表中全部文件的擁有者和組信息都顯示爲ftp。默認值爲NO。
ls_recurse_enable=YES|NO
YES,容許使用"ls -R" 指令。這個選項有一個小的安全風險,由於在一個大型FTP站點的根目錄下使用"ls -R"會消耗大量系統資源。默認值爲NO。
write_enable=YES|NO
控制是否容許使用任何能夠修改文件系統的FTP 的指令,好比STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默認值爲NO,不過自帶的簡單配置文件中打開了該選項。
secure_chroot_dir=
這選項指向一個空目錄,而且ftp用戶對此目錄無寫權限。當vsftpd不須要訪問文件系統時,這個目錄將被做爲一個安全的容器,用戶將被限制在此目錄中。默認目錄爲/usr/share/empty。
5.4.四、新增文件權限設定
anon_umask=
匿名用戶新增文件的umask 數值。默認值爲077。
file_open_mode=
上傳檔案的權限,與chmod 所使用的數值相同。若是但願上傳的文件能夠執行,設此值爲0777。默認值爲0666。
local_umask=
本地用戶新增檔案時的umask 數值。默認值爲077。不過,其餘大多數的FTP服務器都是使用022。若是您的用戶但願的話,能夠修改成022。在自帶的配置文件中此項就設爲了022。
5.五、提示信息
ftpd_banner=login banner string
此參數定義了login banner string(登陸歡迎語字符串)。用戶能夠自行修改。預設值爲無。當ftpd_banner設置後,將取代系統原來的歡迎詞。
banner_file=/directory/vsftpd_banner_file
此項指定一個文本文件,當使用者登入時,會顯示此該文件的內容,一般爲歡迎話語或是說明。默認值爲無。與ftpd_banner相比,banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file選項將取代ftpd_banner選項。
dirmessage_enable=YES|MO
控制是否啓用目錄提示信息功能。YES啓用,NO不啓用,默認值爲YES。此功能啓用後,當用戶進入某一個目錄時,會檢查該目錄下是否有message_file選項所指定的文檔,如果有,則會出現此文檔的內容,一般這個檔案會放置歡迎話語,或是對該目錄的說明。
message_file=
此選項,僅在dirmessage_enable選項激活方生效。默認值爲.message。
5.六、日誌設置
xferlog_enable=YES|NO
控制是否啓用一個日誌文件,用於詳細記錄上傳和下載。該日誌文件由xferlog_file選項指定。默認值爲NO,但簡單配置文件中激活此選項。
xferlog_file=
這個選項設定記錄傳輸日誌的文件名。默認值爲/var/log/vsftpd.log。
xferlog_std_format=YES|NO
控制日誌文件是否使用xferlog的標準格式,如同wu-ftpd同樣。使用xferlog格式,能夠從新使用已經存在的傳輸統計生成器。然而,默認的日誌格式更爲可讀性。默認值爲NO,但自帶的配置文件中激活了此選項。
log_ftp_protocol=YES|NO
當此選項激活後,全部的FTP請求和響應都被記錄到日誌中。提供此選項時,xferlog_std_format不能被激活。這個選項有助於調試。默認值爲NO。
5.七、其餘設置
setproctitle_enable=YES|NO
YES,VSFTPD將在系統進程列表中顯示每一個會話(session)的狀態。也就是說,進程報告將顯示每一個vsftpd會話在作什麼(掛起、下載等),如用ps -ef|grep ftp。出於安全的目的,能夠考慮將此選項關閉。NO,進程報告只顯示一個vsftpd進程在運行。默認值爲NO。
text_userdb_names=YES|No
當使用者登入後使用ls -al 之類指令時,目錄列表的用戶和組信息域,默認是出現擁有者的UID,而不是該檔案擁有者的名稱。如果但願出現擁有者的名稱,則將此功能開啓。默認值爲NO。
user_localtime=YES|NO
默認爲NO。YES,VSFTPD顯示目錄列表時使用你本地時區的時間。默認是顯示GMT時間。一樣,由ftp命令「MDTM」返回的時間值也受此選項影響。
check_shell=YES|NO
此選項僅對不使用PAM方式的VSFTPD生效。當此選項關閉後,當本地用戶登陸時,VSFTPD不會檢查/etc/shells文件以尋找一個有效的用戶shell。默認爲YES。
nopriv_user=
指定一個用戶,當VSFTPD不想要什麼權限時,使用此用戶身份。這用戶最好是一個專用的用戶,而不是用戶nobody。在大多數的機器上,nobody用戶被用於大量重要的事情。默認值爲nobody。
pam_service_name=
指明VSFTPD使用用PAM驗證服務時的PAM配置文件名。默認值爲ftp。
##########################################################
vi /etc/vsftpd.conf
listen_port=28888
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=368282
最近作助教,須要搭建一個ftp服務器。需求以下:須要一個stu、teacher、admin和匿名用戶anon,
其中 anon能夠自由的到特定的目錄裏下載東東;
stu則能夠到特定的目錄裏上傳東東;
而tearcher,則能夠對特定的目錄裏上傳、下載東東;
admin則能夠對stu、teacher的數據進行統一的管理。
另外,作爲系統上已經有的本地用戶則能夠登陸本身的home目錄。
針對上面的需求,ftp須要開通對匿名用戶、本地用戶、及虛擬用戶的支持。而且特別對虛擬用戶中的(stu、teacher、admin)分別授予不一樣的權限。
下面就vsftpd支持三類用戶加以說明:
1.匿名用戶,也就是不須要輸入密碼就可登陸ftp服務器的用戶,這個用戶名一般是ftp或anonymous; 與匿名用戶有關的設置多以 anon_選項開頭。
2.本地用戶,也就是你Linux系統上可登陸到系統的用戶,這些用戶是在系統上實實在在存在的用戶。一般會有本身的home,shell等。與本地用戶有關的設置多以local_開頭或包含local_的選項。
3.虛擬用戶,只對ftp有效的用戶。這些用戶不能夠登陸Linux系統,只能夠登陸ftp服務器。其實就是一個本地用戶映射成多個只對ftp服務器有效的虛擬用戶。虛擬用戶能夠有本身的ftp配置文件,所以一般利用虛擬用戶來對ftp系統的不一樣用戶制定不一樣的權限,以達到安全控制的目的。與虛擬用戶有關的設置以guest_開頭。
若是你只是想用ftp實現對本身的共享,你能夠開啓本地用戶;
若是你想對不少人共享,那你能夠用匿名用戶;
若是你須要針對不一樣的用戶羣給予不一樣的權限,那你就要設置更復雜的虛擬用戶了。
閒話少敘,開始安裝vsftpd服務器。而對於全新安裝的vsftpd,它是默認支持本地用戶登陸的,並且匿名用戶是沒法使用的。因此我先要在安裝以後,開啓匿名登陸。
1. 安裝vsftpd:
代碼:
sudo apt-get install vsftpd
如今你就能夠用你Ubuntu的用戶名和密碼登陸ftp服務器了,登陸目錄是用戶對應的Home目錄。
能夠在終端測試一下,輸入用戶名和密碼,藍色是須要輸入的:
引用:
ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.2)
Name (localhost:crazier):
crazier
331 Please specify the password.
Password:
230 Login successful.
默認的/etc/vsftdp.conf中有效的選項以下:
代碼:
cat /etc/vsftpd.conf | grep -v '^#'
代碼:
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
各選項的意義是:
引用:
listen: vsftpd將以獨立模式運行,由vsftpd本身監聽和處理IPv4端口的鏈接請求
anonymous_enable: 不容許匿名訪問
local_enable: 容許本地用戶訪問,即系統上已經有的用戶能夠直接登陸
dirmessage_enable: 是否激活目錄歡迎信息功能。 當用戶用CMD模式首次訪問服務器上某個目錄時,FTP服務器將顯示歡迎信息。默認狀況下,歡迎信息是經過該目錄下的.message文件得到的。此文件保存自定義的歡迎信息,由用戶本身創建
use_localtime: 是否使用本地時間,默認是使用GMT時間,和中國的標準時間大概相差8個小時
xferlog_enable: 讓系統自動維護上傳和下載的日誌文件,默認狀況該日誌文件爲/var/log/vsftpd.log
connect_from_port_20: 是否採用ftp的默認端口來控制和傳送數據
secure_chroot_dir: 這個選項必須指定一個空的資料夾且任何登入者都不能有寫入的權限,當vsftpd不須要file system 的權限時,就會將使用者限制在此資料夾中。
pam_service_name: 設置PAM外掛模塊提供的認證服務所使用的配置文件名,該文件是在/etc/pam.d/目錄下查詢的。
rsa_cert_file: 指定SSL中RSA認證證書的位置
2.咱們先來開通匿名用戶:
由於vsftpd的匿名用戶的登陸目錄默認是ftp的home目錄,因此咱們先看看Ubuntu系統裏的ftp用戶的Home目錄是什麼?
引用:
cat /etc/passwd | grep ftp
ftp:x:117:125:ftp daemon,,,:
/srv/ftp:/bin/false
能夠看到ftp的home是
/srv/ftp,可是/srv/ftp這個目錄並不我想放文件的地方,我要放在/var/ftp/anon ,因此在這裏須要修改一個ftp的home目錄。
引用:
sudo usermod -d /var/ftp/anon ftp
cat /etc/passwd | grep ftp
ftp:x:117:125:ftp daemon,,,:
/var/ftp/anon:/bin/false
要開啓匿名用戶須要添加下面幾項:
引用:
chroot_local_user=YES #把本地用戶限制在本身的home文件夾中,這樣子登陸以後就不能訪問本身home以外的文件了,這樣子是出於安全上的考慮
anonymous_enable=YES #開啓匿名訪問
anon_root=/var/ftp/anon #指定匿名登陸後的根文件夾,也就是對於匿名用戶,會把/var/ftp/anon映射爲它的根目錄,
執行修改前先備份一下文件:
代碼:
sudo cp /etc/vsftpd.conf{,.bak}
完整的vsftpd.conf文件以下:
引用:
cat /etc/vsftpd.conf | grep -v '^#'
listen=YES
local_enable=YES
chroot_local_user=YES
anonymous_enable=YES
anon_root=/var/ftp/anon
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
pam_service_name=vsftpd
secure_chroot_dir=/var/run/vsftpd/empty
use_localtime=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
到如今爲止,你能夠作一下測試 :
代碼:
ftp localhost
輸入你的Ubuntu用戶名,而後再輸入密碼就能夠登陸到ftp服務器了,默認的是用戶名對應的home目錄裏了。這個是本地用戶登陸。
或者在用戶名裏,你還能夠直接輸入ftp或anonymous,不用輸入密碼就能夠匿名登陸了。
3. 創建本地虛擬用戶
就像上面的分析的,我須要三個用戶stu、teacher、admin,分別賦予不一樣的權限,那咱們就要開始創建虛擬用戶了。咱們要先在系統上建創建一個真實的用戶(guest),以供ftp的虛擬用戶進行映射。可是爲了安全其間,咱們要讓這個新建的用戶並不能登陸Ubuntu,這樣子咱們就能夠把ftp的用戶和ubuntu系統的用戶分隔開來了,即便你ftp的密碼丟了,也不會對你的系統形成太大的影響 。
而創建虛擬用戶主要與下面兩項相關(在vsftpd.conf里加上下面兩句):
代碼:
guest_enable=YES #開啓虛擬用戶
guest_username=guest #把虛擬用戶映射到哪一個本地用戶上,這個是能夠自定義的,我取guest.
建立本地沒法登陸的用戶:
代碼:
sudo useradd guest -d /var/ftp -s /bin/nologin
其中 -s /bin/nologin是爲禁止使用guest登陸ubuntu
接着新建guest的登陸目錄:
代碼:
sudo mkdir /var/ftp/guest
再作一些發票的準備,建立虛擬用戶的文件夾:
代碼:
sudo mkdir -p /var/ftp/anon /var/ftp/admin /var/ftp/teacher /var/ftp/stu
修改目錄權限,讓/var/ftp目錄的屬主是guest,要否則會登陸不上的。
代碼:
sudo chown guest:guest -R /var/ftp
4.創建ftp虛擬用戶及認證文件
4.1新建一些必要的配置文件
在ubuntu中,vsftpd的全部的配置文件都是直接放在/etc目錄下面的,這樣子不方便管理,還有備份的時候也不方便,因此我就再建一個文件夾,專門來放那些配置文件:
代碼:
sudo mkdir /etc/vsftpd
新建虛擬用戶的配置文件:
代碼:
sudo touch /etc/vsftpd/stu /etc/vsftpd/admin /etc/vsftpd/teacher
4. 2 創建用戶數據庫ftpguests
由於咱們要用ftp虛擬用戶登陸ftp服務器,這些ftp虛擬用戶又是映射到前面新建的guest本地用戶的,可是虛擬用戶又不歸Ubuntu系統管理,它們不是用useradd命令生成的。而是須要咱們專門創建一個存放這些虛擬用戶及它們密碼的數據庫ftpguests。這個數據庫的格式是一行放用戶名,一行對應它的密碼,一個數據庫文件中能夠存放多個用戶名及其密碼。
ftpguests文件內容以下
cat ftpguests :
引用:
stu
stu_passwd
teacher
teacher_passwd
admin
admin_passwd
4.3生成用戶數據庫ftpguests.db:
安裝數據庫生成工具db-util:
代碼:
sudo apt-get install db-util
把上一步創建的用戶文件生成數據庫,並放到/etc/vsftpd/文件夾中:
代碼:
sudo db_load -T -t hash -f ftpguests /etc/vsftpd/ftpguests.db
修改用戶數據庫的權限
代碼:
sudo chmod 600 /etc/vsftpd/ftpguests.db
4.4修改pam認證文件:
vsftpd藉助PAM認證工具來幫忙認證了,咱們的本地用戶登陸ftp也是須要PAM來幫忙的。安裝vsftpd的時候,它會有/etc/pam.d/目錄裏生成一個認證的配置文件:
vsftpd ,而以前的vsftpd.conf裏的選項 pam_service_name=vsftpd 指的正是PAM使用/etc/pam.d/下的vsftpd配置文件來認證。
先備份一下 /etc/pam.d/vsftpd
代碼:
sudo cp /etc/pam.d/vsftpd{,bak}
而後在/etc/pam.d/vsftpd的
第一行處添加下面的內容,
代碼:
auth sufficient pam_userdb.so db=/etc/vsftpd/ftpguests
account sufficient pam_userdb.so db=/etc/vsftpd/ftpguests
說明:
上面的內容必定要放在第一行,要否則不能同時支持虛擬用戶和本地用戶的,這一步是關鍵。上面的/etc/vsftpd/ftpguests文件指的就是咱們剛剛生成的用戶數據庫。另外,這裏選擇sufficient而不是required的緣由是,sufficient表示充分條件,可讓vsftpd同時支持虛擬用戶和本地用戶。
添加後的/etc/pam.d/vsftpd的文件是這樣子的:
引用:
# Standard behaviour for ftpd(8).
auth sufficient pam_userdb.so db=/etc/vsftpd/ftpguests
account sufficient pam_userdb.so db=/etc/vsftpd/ftpguests
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
# Standard pam includes
@include common-account
@include common-session
@include common-auth
auth required pam_shells.so
4.5創建每一個虛擬用戶的配置文件
爲每一個虛擬用戶(stu、teacher、admin)創建它們各自的配置文件,以便對不一樣的用戶進行不一樣的權限分配。能夠理解成虛擬用戶的配置文件是對vsftpd.conf的擴展,vsftpd.conf是對全局的控制,而每一個虛擬用戶的配置文件則是方便進行更精細、更個性的控制。
stu用戶的配置文件:只能在本身的home目錄下進行上傳操做,而且不能下載,不能查看其它用戶上傳的內容,也不能修改。
引用:
cat /etc/vsftpd/stu | grep -v '^#'
local_root=/var/ftp/stu
write_enable=YES #能夠進行寫操做,是下面設置的基礎
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES #能夠建立文件夾
download_enable=NO #不能下載
teacher用戶的配置文件:能夠在本身的home目錄裏上傳、下載文件,也可對文件夾重命名,擁有全部權限
引用:
cat /etc/vsftpd/teacher | grep -v '^#'
local_root=/var/ftp/teacher
anon_world_readable_only=NO #對文件夾是否有讀的權限,爲YES時,沒有讀的權限,爲NO時,能夠查看文件夾內有哪些文件
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES #能夠對文件夾進行修改
admin用戶的配置文件:能夠對teacher,stu進行任何操做。它與teacher是不一樣在於local_root指定的文件夾包含了stu和teacher的home目錄
引用:
cat /etc/vsftpd/admin | grep -v '^#'
local_root=/var/ftp
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
4.6全局配置文件/etc/vsftpd.conf:
如今再一次修改vsftpd.conf,該文件的內容爲:
cat /etc/vsftpd.conf | grep -v '^#'
代碼:
listen=YES
anonymous_enable=YES
local_enable=YES
local_root=/home/crazier #把本地用戶的登陸目錄限制在/home/crazier,這個根據你本身的要求進行修改
anon_root=/var/ftp/anon #把匿名用戶限制在/var/ftp/anon目錄裏
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES #爲了安全期間,開啓用戶的監牢限制
guest_enable=YES #開啓vsftpd對虛擬用戶的支持
guest_username=guest #把虛擬用戶映射到本地用戶guest,這個值取決於 (第3步: 創建本地虛擬用戶)中的值
user_config_dir=/etc/vsftpd #指定虛擬用戶的配置文件全部的目錄,確保/etc/vsftpd文件夾裏有(第4.5步:創建每一個虛擬用戶的配置文件)中生成的stu teacher、 admin 文件
pam_service_name=vsftpd #指定PAM使用的配置文件,在/etc/pam.d文件夾裏
secure_chroot_dir=/var/run/vsftpd/empty
use_localtime=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
到如今爲止,已經能夠經過匿名、本地、虛擬用戶訪問ftp服務器了。其中有一些是我本身的理解,有那麼點意思,可是不必定正宗,若是如什麼不對的地方,還但願可以指出來。
PS: 我們 ubuntu罈子裏的帖子還真很差寫,光搞這些個格式花了一天時間。還要很耐心呀,不知道有什麼好辦法沒有。
引用:
關於vsftpd同時使用系統用戶和虛擬用戶驗證
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=658533
鳥哥的 Linux 私房菜 FTP 伺服器
http://linux.vbird.org/linux_server/0410vsftpd.php#theory_who
Vsftpd虛擬用戶設置
http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE
玩轉vsftpd服務器的四大高級配置
http://os.51cto.com/art/201008/221633.htm
Vsftpd
http://wiki.ubuntu.org.cn/Vsftpd
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################
http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE
Vsftpd虛擬用戶設置
首先咱們假定你已經安裝了vsftpd,並在/home/vsftpd 目錄下創建瞭如下3個子目錄
下面,咱們要建3個虛擬用戶,密碼分別是用戶名後加"00"
使得
- 用戶db1 的主目錄爲 dbzh1 ,在該目錄下只有只讀權限
- 用戶db2 的主目錄爲 dbzh2,在該目錄下只有只讀權限
- 用戶db3 的主目錄爲 dbzh3 ,在該目錄下擁有全部權限
[編輯]建立虛擬用戶數據庫
[編輯]建立文本文件loguser.txt
格式以下:
user_id
password
因而,咱們/home/loguser.txt文件的內容爲
cd /home 切換到/home目錄
sudo touch /home/loguser.txt 建立帳戶和密碼文件
sudo gedit /home/loguser.txt
而後將下面的帳戶文件字符粘帖入loguser.txt中,注意一行一行輸入。
注意:奇數行爲帳戶名,偶數行爲密碼。也就是1.3.5.等行爲用戶名,2.4.6行爲密碼
db1
db100
db2
db200
db3
db300
[編輯]生成數據庫
若是你之前沒裝過libdb4.6-util 或者你不清楚裝沒裝,需先執行下面的命令
sudo apt-get install db4.6-util
而後,咱們執行
sudo db4.6_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db
最後設置一下數據庫文件的訪問權限
sudo chmod 600 /etc/vsftpd_login.db
[編輯]配置PAM文件
編輯文件/etc/pam.d/vsftpd.vu 將如下內容增長的原文件前面兩行:
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
- 咱們上一步創建的數據庫 vsftpd_login 在此處被使用
- 咱們創建的虛擬用戶將採用PAM進行驗證,這是經過/etc/vsftpd.conf文件中的 語句pam_service_name=vsftpd.vu來啓用的,稍後你將發現。
[編輯]爲虛擬用戶建立本地系統用戶
新建一個系統用戶vsftpd,用戶家目錄爲/home/vsftpd, 用戶登陸終端設爲/bin/false(即便之不能登陸系統)
sudo useradd vsftpd -d /home/vsftpd -s /bin/false
sudo chown vsftpd:vsftpd /home/vsftpd
/etc/vsftpd.conf
根據須要建立/etc/vsftpd.conf,通常要確保含有如下設置:
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
secure_chroot_dir=/var/run/vsftpd
如今爲止,咱們的3個用戶均可以工做了,但是它們的根目錄如今都是/home/vsftpd,權限也都同樣。 那麼怎麼才能完成咱們預約的目標呢?
[編輯]/etc/vsftpd_user_conf
在上面的配置中,有這麼一行
user_config_dir=/etc/vsftpd_user_conf
如今,咱們要把各個用戶的配置文件放到目錄/etc/vsftpd_user_conf中
sudo mkdir /etc/vsftpd_user_conf
cd /etc/vsftpd_user_conf
sudo touch db1 db2 db3
db1文件中的內容以下
local_root=/home/vsftpd/dbzh1
一樣,db2文件中的內容
local_root=/home/vsftpd/dbzh2
那麼,db3的內容呢? 其實也很簡單
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/dbzh3
這裏要注意不能有空格,否則登陸的時候會提示出錯。
若是有空格,在登陸時,終端會提示:
500 OOPS: bad bool value in config file for: guest_enable Login failed.
或者
500 OOPS: bad bool value in config file for: anon_upload_enable Login failed.
等等之類的錯誤的布爾值提示
由於你的那個YES/NO 布爾值(bool value)後邊加了一個空格,即:
anon_world_readable_only=NO空格
正確的格式應該是:
anon_world_readable_only=NO(無空格)!!!!!!
注意,NO後邊的空格,要用退格鍵將其刪除。
[編輯]能成?
重啓vsftpd咱們就能夠看到效果了^_^
/etc/init.d/vsftpd start|restart
500 OOPS: cannot change directory:
linux打開ftp遇到的問題 500 OOPS: cannot change directory:
google好多都是 執行這個就OK setsebool ftpd_disable_trans 1 service vsftpd restart
可是執行的時候遇到這個問題 Could not change active booleans: Invalid boolean
搜了很久終於解決
setsebool -P ftp_home_dir=1
############################################################
配置管理虛擬用戶:
http://os.51cto.com/art/201002/184610.htm
CentOS vsftpd更新了不少版本更新,我本人認爲CentOS vsftpd很好使的文件系統,在此向你們推薦。現在技術不斷更新,各類使用文件都已經淘汰。我認爲仍是有很不錯的如CentOS vsftpd值得你們來運用。
製做虛擬用戶數據庫文件
1.先創建虛擬用戶名單文件:[root@KcentOS5 ~]# touch /etc/vsftpd/virtusers創建了一個虛擬用戶名單文件,這個文件就是來記錄CentOS vsftpd虛擬用戶的用戶名和口令的數據文件,我這裏給它命名爲virtusers。爲了不文件的混亂,我把這個名單文件就放置在/etc/vsftpd/下。
2.編輯虛擬用戶名單文件:
- [root@KcentOS5 ~]# vi /etc/vsftpd/virtusers
- download
- 1234
- upload
- 5678
- admin
- 9012
CentOS vsftpd編輯這個虛擬用戶名單文件,在其中加入用戶的用戶名和口令信息。格式很簡單:「一行用戶名,一行口令」。
3.生成虛擬用戶數據文件:
[root@KcentOS5 ~]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db設定PAM驗證文件,並指定虛擬用戶數據庫文件進行讀取在/etc/pam.d/vsftpd的文件頭部加入如下信息(在後面加入無效)
- auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
- account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
虛擬用戶的配置
local_root=/var/www/html指定虛擬用戶的具體主路徑。
anonymous_enable=NO設定不容許匿名用戶訪問。
write_enable=YES設定容許寫操做。
local_umask=022設定上傳文件權限掩碼。
anon_upload_enable=NO設定不容許匿名用戶上傳。
anon_mkdir_write_enable=NO設定不容許匿名用戶創建目錄。
idle_session_timeout=600設定空閒鏈接超時時間。
data_connection_timeout=120設定單次連續傳輸最大時間。
max_clients=10設定併發客戶端訪問個數。
max_per_ip=5設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟件。
local_max_rate=50000設定該用戶的最大傳輸速率,單位b/s。
這裏將原CentOS vsftpd.conf配置文件通過簡化後保存做爲虛擬用戶配置文件的模版。這裏將並不須要指定太多的配置內容,主要的框架和限制交由CentOS vsftpd的主配置文件CentOS vsftpd.conf來定義,即虛擬用戶配置文件當中沒有提到的配置項目將參考主配置文件中的設定。
而在這裏做爲虛擬用戶的配置文件模版只須要留一些和用戶流量控制,訪問方式控制的配置項目就能夠了。這裏的關鍵項是local_root這個配置,用來指定這個虛擬用戶的FTP主路徑。
[b][color=Red]這裏有一個最主要的問題,就是目錄的宿主和宿主用戶不是虛擬用戶,咱們設置了目錄後還只能下載,不能上傳和下載,若是想上傳就要使用chown的命令chmod o+w /var/www/html/ o是指其它的用戶,w是寫的權限[/[/color]b]
http://wsvirtual.blog.51cto.com/100332/213931/
1.創建虛擬用戶口令庫
vi /etc/vsftpd/logins.txt
在裏面寫用戶名和口令,奇數行用戶名,偶數行口令,例如:
user01
666666
user02
666666
2.生成vsftpd的認證文件
首先安裝認證軟件
yum install db4
生成認證文件命令: db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
3.更改文件權限
chmod 600 /etc/vsftpd/vsftpd_login.db vsftpd_login.db只對root用戶可讀寫(安全起見)
4.創建虛擬用戶所需的PAM配置文件
vi /etc/pam.d/vsftpd.vu 在裏面寫下面的內容 (新建)
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
保存退出.
vsftpd_login 是認證文件去掉.db
5.創建虛擬用戶及所要訪問的目錄並設置相應權限
groupadd ftpd
useradd -g ftpd -d /www -s /sbin/nologin -M ftpd 宿主目錄home/ftpsite 賬號:virtual
chmod 700 /homegtpstie/ 宿主目錄的權限設爲700
vsftpd服務器中的全部虛擬用戶賬號登錄後都在 /www下
新建虛擬用戶也不必定非得放在/www下,放在其餘目錄也行,只要文件宿主都是ftpd.ftpd就行.
6.設置vsftpd.conf配置文件
vi /etc/vsftpd/vsftpd.conf 最後面加上
guest_enable=YES 激活虛擬用戶
guest_username=ftpd 虛擬用戶在linux裏的用戶名
pam_service_name=vsftpd.vu 判斷虛擬用戶的數據文件
user_config_dir=/etc/vsftpd_user_conf 虛擬用戶指定的配置文件所在地址 (vsftpd_user_conf是文件夾)
virtual_use_local_privs=YES 設置爲 YES 時,虛擬用戶使用與本地用戶相同權限,設置爲 NO 時,虛擬用戶使用與匿名用戶相同權限 (必須開啓)
7.爲不一樣的虛擬用戶設置不一樣的權限
1)爲虛擬用戶設置主配置文件
在vsftpd.conf配置文件中,添加user_config_dir項,並設置保存的目錄
user_config_dir=/etc/vsftpd_user_conf
2)創建配置文件目錄 (上面指定了目錄,如今尚未建呢)
mkdir /etc/vsftpd_user_conf
3)爲每一個不一樣的虛擬用戶創建不一樣的配置文件
在/etc/vsftpd_user_conf目錄中能夠爲每一個虛擬用戶創建單獨的配置文件,配置文件名稱和用戶名相同。
local_root=/data/userspace 設置虛擬用戶登陸後的主目錄
anon_world_readable_only=NO 具備瀏覽FTP目錄和下載權限
anon_upload_enable=YES 具備上傳文件權限
anon_mkdir_write_enable=YES 具備創建和刪除目錄的權利
anon_other_write_enable=YES 具備文件更名和刪除文件的權利
最後重啓vsftpd
設置文件和文件夾上傳後的權限
vi /etc/vsftpd/vsftpd.conf
local_umask=022
file_open_mode=0644
開啓目錄訪問控制
chroot_list_enable=YES 鎖定某些用戶在自家目錄中。即當這些用戶登陸後,不能夠轉到系統的其餘目錄,只能在自家目錄(及其子目錄)下。具體的用戶在chroot_list_file參數所指定的文件中列出。默認值爲NO。
chroot_list_file=/etc/vsftpd/chroot_list
指出被鎖定在自家目錄中的用戶的列表文件。文件格式爲一行一用戶。一般該文件是/etc/vsftpd/chroot_list。此選項默認不設置。
要建立/etc/vsftpd/chroot_list這個文件,而後把要鎖定在自家目錄的用戶名都寫上去,一行一個用戶名.
最後重啓vsftpd
簡述PAM原理
若是你已經對pam有所瞭解,請跳過,我知道的可能還不如你多。你不感興趣也請跳過,由於不看這個也可配置。
用戶 <-> vsftpd <-> PAM模塊 <-> 用戶和密碼數據庫
vsftpd用了一種很聰明同時也是unix/linux規範的方法來認證用戶,就是PAM。你們對於PAM,也許有些陌生,可是一直在用。所謂PAM,英文是:Pluggable Authentication Modules,可拔插認證模 塊(不知道這樣翻譯對不對)。看見plug這個關鍵字,就知道是很靈活的。
如今幾乎全部daemon程序通常都是用PAM來進行認證的,包括telnet/sshd/imapd,甚至你的login,都是用PAM
PAM的最大好處是靈活。它無論你的用戶和密碼用什麼數據格式存儲(數據庫也好,一般用的密碼文件也好),只要有相應的PAM模塊就能夠存儲。好比說,你們不只能夠用vsftpd + PgSQL作用戶登錄 驗證,只要你喜歡你還能夠用MySQL,Oracle,LDAP數據庫存儲用戶數據,只要有相應的PAM就能夠。全部的daemon均可以用一個後臺數據庫來作用戶驗證登錄,包括telnet/sshd等等。
1.系統版本爲centos6.0,直接用yum來安裝vsftpd
[root@localhost ~]#yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp //安裝軟件和vsftpd
2.[root@localhost ~]#chkconfig vsftpd on//開機2345啓動vsftpd服務
3.[root@localhost ~]#cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1//備份一下vsftpd.conf爲vsftpd.conf.1
4.[root@localhost ~]#grep -v "#" /etc/vsftpd/vsftpd.conf.1>/etc/vsftpd/vsftpd.conf//去除#號重定向到/etc/vsftpd/vsftpd.conf文件中。
5.[root@localhost ~]#cat /etc/vsftpd/vsftpd.conf//vsftpd.conf內容以下:
anonymous_enable=NO#設定不容許匿名訪問
local_enable=YES#設定本地用戶能夠訪問。注:如使用虛擬宿主用戶,在該項目設定爲NO的狀況下全部虛擬用戶將沒法訪問。
#chroot_list_enable=YES #使用戶不能離開主目錄我這句是沒加入的加入就登陸不了不知道爲何?
write_enable=YES
local_umask=022//生成掩碼爲022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log#設定vsftpd的服務日誌保存路徑。注意,該文件默認不存在。必需要手動touch出來
xferlog_std_format=YES
ascii_upload_enable=YES #容許使用ASCII模式上傳
ascii_download_enable=YES #設定支持ASCII模式的上傳和下載功能。
listen=YES
guest_enable=YES#設定啓用虛擬用戶功能
guest_username=vritual#指定虛擬用戶的宿主用戶。-RHEL/CentOS中已經有內置的ftp用戶了我這裏是本身建立的vritual
pam_service_name=vsftpd#PAM認證文件名。PAM將根據/etc/pam.d/vsftpd進行認證
user_config_dir=/etc/vsftpd/vuser_conf#設定虛擬用戶我的vsftp的RHEL/CentOS FTP服務文件存放路徑。存放虛擬用戶個性的CentOS FTP服務文件(配置文件名=虛擬用戶名)
virtual_use_local_privs=YES
6.建立vsftpd密碼文件
[root@localhost ~]#vi /etc/vsftpd/vsftpd.login.txt//一行爲用戶名另一行爲密碼。
zhh
123456
user1
user1
user2
user2
user3
user3
user4
user4
user5
user5
7.[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vsftpd.login.txt /etc/vsftpd/vsftpd.login.db//生成vsftpd.login.db文件chmod 700權限。
8.[root@localhost ~]#vi /etc/pam.d/vsftpd//這個文件最前面添加vsftpd.login最好添加在最前面。
#%PAM-1.0
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login//第一句
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login//第二句
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
~
9.[root@localhost ~]#mkdir /etc/vsftpd/vuser_conf/ //建立vuser_conf文件夾
10.[root@localhost ~]#vi /etc/vsftpd/vuser_conf/zhh//建立虛擬用戶個性RHEL/CentOS FTP服務文件
local_root=/home/ftpsite/zhh//虛擬用戶的根目錄(根據實際修改)
write_enable=YES可寫
anon_umask=022掩碼
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
11.[root@localhost ~]#useradd -d /home/ftpsite/ -s /sbin/nologin vritual //創建虛擬帳號
12.[root@localhost ~]#touch /var/log/vsftpd.log
13.[root@localhost ~]# service vsftpd start//啓動vsftpd服務
14.[root@localhost ftp]# ftp localhost//登陸ftp
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): zhh
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir zhh
257 "/home/ftpsite/zhh" created
15.常見問題:
553 Could not create file
通常都是SELinux的問題,設置SELinux的一個值,重啓服務器便可。
setsebool -P ftpd_disable_trans 1
service vsftpd restart
500 OOPS: bad bool value in config file for: write_enable
注意你的CentOS FTP服務文件中保證每一行最後沒有任何空格,通常出錯就是在多餘的空格上。
虛擬用戶上傳後默認權限爲:600,用戶沒法下載文件
在配置文件中添加或修改anon_umask項的值。如anon_umask=022或000
使用命令添加ftp用戶
添加ftp用戶,命令格式:
#adduser -d /目錄路徑 -g ftp -s /sbin/nologin 用戶名
如何把賬號ftp默認的路徑/var/ftp更改到別處?或者是,個人linux全部的目錄都放在/根分區,由於空間緊張,我可否把ftp這個用戶的默認路徑放到別的分區??
對於ftp這個用戶的管理,咱們應該查看/etc/passwd ,而後修改ftp用戶那行;
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
好比咱們想把ftp用戶的家目錄改成,則要把相似上一行改成
ftp:x:14:50:FTP User:/在這裏修改就好了/ftp:/sbin/nologin
而後咱們要創建ftp用戶的新的家目錄。
疑問:
建立chroot list,將ftp用戶加入其中://這個起到什麼做用不清楚因此沒添加。
touch /etc/vsftpd/chroot_list
echo ftp >> /etc/vsftpd/chroot_list
16.最後爲了方便你們本身寫了一個shell給你們加上附件,若是不符合要求能夠本身自行修改參數。
#!/bin/sh
yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp
chkconfig vsftpd on
cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1
cp -rf /root/ftp/vsftpd.conf /etc/vsftpd
cp -rf /root/ftp/vsftpd /etc/pam.d/
cp -rf /root/ftp/vuser_conf /etc/vsftpd
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user1
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user2
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user3
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user4
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user5
db_load -T -t hash -f /root/ftp/vsftpd.login.txt /root/ftp/vsftpd.login.db
mv /root/ftp/vsftpd.login.db /etc/vsftpd/
useradd -d /home/ftpsite vritual
service vsftpd start
ftp localhost
#######################各類錯誤解決###################################
http://www.oschina.net/question/12_8202
CentOS配置vsftpd遇到550錯誤的解決辦法
安裝vsftpd很簡單:yum install vsftpd
啓動vsftpd也很簡單:service vsftpd start
默認狀況下用root是沒法鏈接的,你能夠建立一個非root賬戶登陸,可是登陸是能夠登陸,卻沒有辦法建立或是上傳文件。有人說,能夠把 SELinux關掉,但是這樣未免也有點尺度太大了,實際上是SELinux裏的設置問題,只要修改相應的配置就能夠了。
發現問題的方法:
# getsebool -a | grep ftp
allow_ftpd_anon_write –> off
allow_ftpd_full_access –> off
allow_ftpd_use_cifs –> off
allow_ftpd_use_nfs –> off
ftp_home_dir –> off
httpd_enable_ftp_server –> off
tftp_anon_write –> off
將紅色字體部分的值改爲on就能夠了,設置的方法以下:
# setsebool -P ftp_home_dir 1
而後就能夠上傳文件,作你想作的事情了。
轉自:http://www.agilephp.net/2010/01/solve-error-550-in-centos-and-vsftpd/
http://sonice.blog.51cto.com/994545/218123/
vsftpd正常設置
但登錄後不能建立,也不能刪除提示550錯誤
解決辦法能夠關掉selinux=disable
[root@host]# vi /etc/selinux/config
----------------------------------------------------------------------------------
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
#把這裏改爲disable
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
-------------------------------------------------------------------------------------
若是在想不重啓系統的狀況下關掉SELINUX,能夠輸入命令:
setenforce 0
http://www.oschina.net/question/13403_24332?sort=default&p=2#answers
[root@umboyserver vsftpd]# setsebool allow_ftpd_full_access 1
[root@umboyserver vsftpd]# setsebool allow_ftpd_use_cifs 1
[root@umboyserver vsftpd]# setsebool allow_ftpd_use_nfs 1
[root@umboyserver vsftpd]# setsebool ftp_home_dir 1
[root@umboyserver vsftpd]# setsebool httpd_enable_ftp_server 1
[root@umboyserver vsftpd]# setsebool tftp_anon_write 1
[root@umboyserver vsftpd]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@umboyserver vsftpd]# getsebool -a|grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> on
allow_ftpd_use_cifs --> on
allow_ftpd_use_nfs --> on
ftp_home_dir --> on
httpd_enable_ftp_server --> on
tftp_anon_write --> on
http://blog.linuxnotes.cn/?p=755
配置以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
listen=YES
listen_port=21
pasv_min_port=30000
pasv_max_port=30999
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
anon_world_readable_only=NO
|
[root@test etc]# cat /etc/pam.d/ftp
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
啓動成功後瀏覽目錄,下載都正常,惟獨上傳文件不行。
提示:553 Could not create file
網上大多文章只說關閉SELINUX就能夠解決,但個人問題依舊。最後查到,在虛擬用戶virtual的家目錄新建一個0777權限的目錄,上傳至這個文件夾下面一切正常,也不知道什麼緣由。
參考信息以下:
Following are the common errors you will encounter when setting anonymous vsftp-2.0.5
4) error: need to access to a designated dir for anonymous ftp
Set following:
anon_root=/var/www/html/docs
5) error: 500 OOPS: vsftpd: refusing to run with writable anonymous root
sympton:
[root@localhost ~]# ftp 70.234.256.239
Connected to 70.234.256.239.
220 Welcome to My FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (70.234.256.239:root): anonymous
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable anonymous root
Login failed.
Reason:
Change attribute of ftp directory from
drwxrwxrwx 3 root root 4096 Jun 13 18:42 docs
To
dr-xr-xr-x 3 root root 4096 Jun 13 18:42 docs
6) error: 553 Could not create file.
Sympton:
ftp> put t.txt
local: t.txt remote: t.txt
227 Entering Passive Mode (192,168,1,103,245,163)
553 Could not create file.
Reason:
You need to create a sub dir under ftp dir with 0777 attribute as
drwxrwxrwx 2 ftp ftp 4096 Jun 15 00:40 pub
7) error: anonymously uploaded file has attribute (mask) 0600,
these files could not be downloaded
rw——- 3 root root 4096 Jun 13 18:42 t.txt
Reason:
anon_umask=0133 does not take effect in the code.
In the file 「postlogin.c」, make following changes:
//vsf_sysutil_fchmod(new_file_fd, 0600); //jwei removes
vsf_sysutil_fchmod(new_file_fd, 0777^tunable_anon_umask); //jwei adds
recompile and cp to /usr/local/sbin/vsftpd
error: 425 Security: Bad IP connecting.
ftp>ls
425 Security: Bad IP connecting.
Reason:
Set following:
pasv_promiscuous=YES
http://www.apoyl.com/?p=15
vsftpd有三種訪問方式:匿名用戶,本地用戶和虛擬用戶
我採用的 匿名用戶 環境虛擬機 Centos
錯誤表述: [2010-12-16 15:14:49] 553 Could not create file.
錯誤:> [2010-12-16 15:14:49] 拒絕訪問。
能下載,不能上傳!
服務器的配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
另外還有文件夾權限開成777
也重啓的vsftpd服務器
MD還有出現上面錯誤!
眼睛吹了風疼啊,改天再看了!
日誌信息 »
該日誌於2010-12-16 09:12由 凹凸曼 發表在
Vsftpd,
問題集分類下, 通告目前不可用,你能夠至底部留下評論。
http://hi.baidu.com/%DC%BD%C0%B3%B5%D9/blog/item/d845684739331f3286947376.html
用ftp工具上傳文件的時候,老是出現553 Could not create file這樣的錯誤
修改/etc/vsftpd.conf
write_enable=YES
你的ftp用戶都使用同一個主目錄嗎?
假設是/home/ftp
這個目錄的權限應該是770,owner是root,group是ftp
chmod 770 /home/ftp
chown root:ftp /home/ftp
配置說明 vi /etc/vsftpd.conf
#接受匿名用戶
anonymous_enable=YES
#匿名用戶login時不詢問口令
no_anon_password=YES
#匿名用戶主目錄
anon_root=(none)
#接受本地用戶
local_enable=YES
#本地用戶主目錄
local_root=(none)
#若是匿名用戶須要密碼,那麼使用banned_email_file裏面的電子郵件地址的用戶不能登陸
deny_email_enable=YES
#僅在沒有pam驗證版本時有用,是否檢查用戶有一個有效的shell來登陸
check_shell=YES
#若啓用此選項,userlist_deny選項才被啓動
userlist_enable=YES
#若爲YES,則userlist_file中的用戶將不能登陸,爲NO則只有userlist_file的用戶能夠登陸
userlist_deny=NO
#若是和chroot_local_user一塊兒開啓,那麼用戶鎖定的目錄來自/etc/passwd每一個用戶指定的目錄(這個不是很清楚,很哪位熟悉的指點一下)
passwd_chroot_enable=NO
#定義匿名登入的使用者名稱。默認值爲ftp。
ftp_username=FTP
#################用戶權限控制###############
#能夠上傳(全局控制).
write_enable=YES
#本地用戶上傳文件的umask
local_umask=022
#上傳文件的權限配合umask使用
#file_open_mode=0666
#匿名用戶能夠上傳
anon_upload_enable=NO
#匿名用戶能夠建目錄
anon_mkdir_write_enable=NO
匿名用戶其它的寫權利(更改權限?)
anon_other_write_enable=NO
若是設爲YES,匿名登入者會被容許下載可閱讀的檔案。默認值爲YES。
anon_world_readable_only=YES
#若是開啓,那麼全部非匿名登錄的用戶名都會被切換成guest_username指定的用戶名
#guest_enable=NO
全部匿名上傳的文件的所屬用戶將會被更改爲chown_username
chown_uploads=YES
匿名上傳文件所屬用戶名
chown_username=lightwiter
#若是啓動這項功能,則全部列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_enable=YES
#容許使用"async ABOR"命令,通常不用,容易出問題
async_abor_enable=YES
管控是否可用ASCII 模式上傳。默認值爲NO。
ascii_upload_enable=YES
#管控是否可用ASCII 模式下載。默認值爲NO。
ascii_download_enable=YES
#這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的權限,當vsftpd 不須要file system 的權限時,就會將使用者限制在此數據夾中。默認值爲/usr/share/empty
secure_chroot_dir=/usr/share/empty
###################超時設置##################
#空閒鏈接超時
idle_session_timeout=600
#數據傳輸超時
data_connection_timeout=120
#PAVS請求超時
ACCEPT_TIMEOUT=60
#PROT模式鏈接超時
connect_timeout=60
################服務器功能選項###############
#開啓日記功能
xferlog_enable=YES
#使用標準格式
xferlog_std_format=YES
#當xferlog_std_format關閉且本選項開啓時,記錄全部ftp請求和回覆,當調試比較有用.
#log_ftp_protocol=NO
#容許使用pasv模式
pasv_enable=YES
#關閉安全檢查,當心呀.
#pasv_promiscuous+NO
#容許使用port模式
#port_enable=YES
#關閉安全檢查
#prot_promiscuous
#開啓tcp_wrappers支持
tcp_wrappers=YES
#定義PAM 所使用的名稱,預設爲vsftpd。
pam_service_name=vsftpd
#當服務器運行於最底層時使用的用戶名
nopriv_user=nobody
#使vsftpd在pasv命令回覆時跳轉到指定的IP地址.(服務器聯接跳轉?)
pasv_address=(none)
#################服務器性能選項##############
#是否能使用ls -R命令以防止浪費大量的服務器資源
#ls_recurse_enable=YES
#是否使用單進程模式
#one_process_model
#綁定到listen_port指定的端口,既然都綁定了也就是每時都開着的,就是那個什麼standalone模式
listen=YES
#當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。如果但願出現擁有者的名稱,則將此功能開啓。
text_userdb_names=NO
#顯示目錄清單時是用本地時間仍是GMT時間,能夠經過mdtm命令來達到同樣的效果
use_localtime=NO
#測試平臺優化
#use_sendfile=YES
################信息類設置################
#login時顯示歡迎信息.若是設置了banner_file則此設置無效
ftpd_banner=歡迎來到湖南三辰Fake-Ta FTP 網站.
#容許爲目錄配置顯示信息,顯示每一個目錄下面的message_file文件的內容
dirmessage_enable=YES
#顯示會話狀態信息,關!
#setproctitle_enable=YES
############## 文件定義 ##################
#定義不能更改用戶主目錄的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定義限制/容許用戶登陸的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定義登陸信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用戶登錄時做爲密碼的電子郵件地址
banned_email_file=/etc/vsftpd.banned_emails
#日誌文件位置
xferlog_file=/var/log/vsftpd.log
#目錄信息文件
message_file=.message
############## 目錄定義 #################
#定義用戶配置文件的目錄
user_config_dir=/etc/vsftpd/userconf
#定義本地用戶登錄的根目錄,注意定義根目錄能夠是相對路徑也能夠是絕對路徑.相對路徑是針對用戶家目錄來講的.
local_root=webdisk #此項設置每一個用戶登錄後其根目錄爲/home/username/webdisk
#匿名用戶登錄後的根目錄
anon_root=/var/ftp
#############用戶鏈接選項#################
#可接受的最大client數目
max_clients=100
#每一個ip的最大client數目
max_per_ip=5
#使用標準的20端口來鏈接ftp
connect_from_port_20=YES
#綁定到某個IP,其它IP不能訪問
listen_address=192.168.0.2
#綁定到某個端口
#listen_port=2121
#數據傳輸端口
#ftp_data_port=2020
#pasv鏈接模式時可使用port 範圍的上界,0 表示任意。默認值爲0。
pasv_max_port=0
#pasv鏈接模式時可使用port 範圍的下界,0 表示任意。默認值爲0。
pasv_min_port=0
##############數據傳輸選項#################
#匿名用戶的傳輸比率(b/s)
anon_max_rate=51200
#本地用戶的傳輸比率(b/s)
local_max_rate=5120000
########################################
別外,若是要對每一個用戶進行單獨的控制,只須要在user_config_dir中創建username文件,內容爲數據傳輸和用戶權利裏面設置我的的合適的選項,用戶自定義文件一樣適合用pam支持的虛擬用戶
附: FTP 數字代碼的意義
110 從新啓動標記應答。
120 服務在多久時間內ready。
125 數據鏈路埠開啓,準備傳送。
150 文件狀態正常,開啓數據鏈接端口。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制鏈接埠關閉,能夠註銷。
225 數據連結開啓,但無傳輸動做。
226 關閉數據鏈接端口,請求的文件操做成功。
227 進入passive mode。
230 使用者登入。
250 請求的文件操做完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,須要密碼。
332 登入時須要帳號信息。
350 請求的操做須要進一部的命令。
421 沒法提供服務,關閉控制連結。
425 沒法開啓數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操做未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁盤空間不足。
500 格式錯誤,沒法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件須要帳戶登入。
550 未執行請求的操做。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確。
個人vsftpd 配置(待寫)
今天使用 本地用戶 出現一樣的問題
下面配置內容摘自:http://blog.chinaunix.net/u3/108023/showart_2156262.html
FTP用戶通常是不能登陸系統的,這也是爲了安全。在系統中,沒有權限登陸系統的用戶通常也被稱之爲虛擬用戶;虛擬用戶也是要寫進/etc
/passwd中;這只是一種虛擬用戶的方法,但說實在的並非真正的虛擬用戶,只是把他登陸SHELL的權限去掉了,因此他沒有能力登陸系統;
若是咱們想把beinan這個用戶目錄定位在/opt/beinan這個目錄中,而且不能登陸系統;咱們應該以下操做
[root@localhost ~]# adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan
[root@localhost ~]# passwd beinan
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
其實這仍是不夠的,還要改一下配置文件vsFTPd.conf ,以確保本地虛擬用戶能有讀寫權限;
local_enable=YES
write_enable=YES
local_umask=022