vsftpd配置文件詳解

VSFTPD全攻略(/etc/vsftpd/vsftpd.conf文件詳解)

版權所有:http://blog.itpub.net/10201716/viewspace-742712/


#################匿名權限控制###############

anonymous_enable=YES   #是否啓用匿名用戶
no_anon_password=YES   #匿名用戶login時不詢問口令

下面這四個主要語句控制這文件和文件夾的上傳、下載、創建、刪除和重命名。
anon_upload_enable=(yes/no);  #控制匿名用戶對文件(非目錄)上傳權限。
anon_world_readable_only=(yes/no); #控制匿名用戶對文件的下載權限
anon_mkdir_write_enable=(yes/no); #控制匿名用戶對文件夾的創建權限
anon_other_write_enable=(yes/no); #控制匿名用戶對文件和文件夾的刪除和重命名

注:匿名用戶下載是使用的是nobody這個用戶,所以相應的O這個位置要有R權限才能被下載。若想讓匿名用戶能上傳和刪除權限,必需設置

write_enable=YES #全局設置,是否容許寫入(無論是匿名用戶還是本地用戶,若要啓用上傳權限的話,就要開啓他)
anon_root=(none) #匿名用戶主目錄
anon_max_rate=(0) #匿名用戶速度限制
anon_umask=(077) #匿名用戶上傳文件時有掩碼(若想讓匿名用戶上傳的文件能直接被匿名下載,就這設置這裏爲073)
chown_uploads=YES #所有匿名上傳的文件的所屬用戶將會被更改成chown_username
chown_username=whoever #匿名上傳文件所屬用戶名


#################本地用戶權限控制###############

write_enable=YES #可以上傳(全局控制) 刪除,重命名
local_umask=022  #本地用戶上傳文件的umask
userlist_enable=YES #限制了這裏的用戶不能訪問
local_root  #設置一個本地用戶登錄後進入到的目錄
user_config_dir  #設置用戶的單獨配置文件,用哪個帳戶登陸就用哪個帳戶命名
download_enable  #限制用戶的下載權限

chown_uploads=YES #所有匿名上傳的文件的所屬用戶將會被更改成chown_username
chown_username=whoever #匿名上傳文件所屬用戶名

chroot_list_enable=YES #如果啓動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_file=/etc/vsftpd/chroot_list #指定限制的用戶文件

user_config_dir= #後面跟存放配置文件的目錄。用來實現不同用戶不同權限。
   #在vsftpd.conf文件中加入這一句,
   #在相應的目錄裏面,爲每個用戶創建自己的配置文件,用來實現不同的權限


可以通過以下三條配置文件來控制用戶切換目錄。
chroot_list_enable=YES/NO   #設置是否啓用chroot_list_file配置項指定的用戶列表文件。
      #如果啓動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄 .默認值爲yes。

chroot_list_file=/etc/vsftpd/chroot_list #指出被鎖定在自家目錄中的用戶的列表文件。

chroot_list_enable=YES
通過與chroot_local_user=YES/NO搭配能實現以下幾種效果:
1、當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list文件中列出的用戶,可以切換到其他目錄;未在文件中列出的用戶,不能切換到其他目錄。
2、當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其他目錄;未在文件中列出的用戶,可以切換到其他目錄。
3、當chroot_list_enable=NO,chroot_local_user=YES時,所有的用戶均不能切換到其他目錄。
4、當chroot_list_enable=NO,chroot_local_user=NO時,所有的用戶均可以切換到其他目錄。


下面是個實例,希望對大家有用:

1、只能上傳。不能下載、刪除、重命名。
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST

對於參數的詳細的解釋
cmds_allowed=ABOR,ACCT,APPE,CWD,CDUP,DELE,HELP,LIST,MODE,MDTM,MKD,NOOP,NLST,PASS,PASV,PORT,PWD,QUIT,REIN,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,STAT,STOU,STRU,SYST,TYPE,USER

CWD - change working directory 更改目錄
DELE - delete a remote file 刪除文件
LIST - list remote files 列目錄
MKD - make a remote directory 新建文件夾
NLST - name list of remote directory
PWD - print working directory 顯示當前工作目錄
RETR - retrieve a remote file 下載文件
RMD - remove a remote directory 刪除目錄
RNFR - rename from 重命名
RNTO - rename to 重命名
STOR - store a file on the remote host 上傳文件


# ABOR - abort a file transfer 取消文件傳輸

# CWD - change working directory 更改目錄
# DELE - delete a remote file 刪除文件
# LIST - list remote files 列目錄
# MDTM - return the modification time of a file 返回文件的更新時間
# MKD - make a remote directory 新建文件夾
# NLST - name list of remote directory
# PASS - send password
# PASV - enter passive mode
# PORT - open a data port 打開一個傳輸端口
# PWD - print working directory 顯示當前工作目錄
# QUIT - terminate the connection 退出
# RETR - retrieve a remote file 下載文件
# RMD - remove a remote directory
# RNFR - rename from
# RNTO - rename to
# SITE - site-specific commands
# SIZE - return the size of a file 返回文件大小
# STOR - store a file on the remote host 上傳文件
# TYPE - set transfer type
# USER - send username

# less common commands:

# ACCT* - send account information

# APPE - append to a remote file
# CDUP - CWD to the parent of the current directory
# HELP - return help on using the server
# MODE - set transfer mode
# NOOP - do nothing
# REIN* - reinitialize the connection
# STAT - return server status
# STOU - store a file uniquely
# STRU - set file transfer structure
# SYST - return system type

2、只能下載。不能上傳、刪除、重命名。write_enable=NO
3、只能上傳、刪除、重命名。不能下載。download_enable=NO

4、只能下載、刪除、重命名。不能上傳。
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,RNFR,RNTO,RETR,DELE,SIZE,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST


###################虛擬用戶設置###################

虛擬用戶使用PAM認證方式。
pam_service_name=vsftpd  #設置PAM使用的名稱,默認值爲/etc/pam.d/vsftpd。

check_shell=YES   #(注意:僅在沒有pam驗證版本時有用,是否檢查用戶有一個有效的shell來登錄 )
guest_enable= YES/NO  #啓用虛擬用戶。默認值爲NO。
guest_username=ftp  #這裏用來映射虛擬用戶。默認值爲ftp。
virtual_use_local_privs=YES/NO #當該參數激活(YES)時,虛擬用戶使用與本地用戶相同的權限。
    #當此參數關閉(NO)時,虛擬用戶使用與匿名用戶相同的權限。默認情況下此參數是關閉的(NO)。


###################訪問控制設置###################

兩種控制方式:一種控制主機訪問,另一種控制用戶訪問。

1、控制主機訪問:
tcp_wrappers=YES/NO

設置vsftpd是否與tcp wrapper相結合來進行主機的訪問控制。默認值爲YES。如果啓用,則vsftpd服務器會檢查/etc/hosts.allow 和/etc/hosts.deny 中的設置,來決定請求連接的主機,是否允許訪問該FTP服務器。這兩個文件可以起到簡易的防火牆功能。

比如:若要僅允許192.168.10.1—192.168.10.254的用戶可以連接FTP服務器,

則在
/etc/hosts.allow
/etc/hosts.deny
文件中添加以下內容:


其格式如下:

限制的服務:ip(網段)
vsftpd:192.168.1.
vsftpd:192.168.1.12
vsftpd:192.168.1.0/255.255.255.0這裏不能寫成192.168.1.0/24

2、控制用戶訪問:

vsftpd.ftpusers  #用於保存不允許進行FTP登錄的本地用戶帳號。就是vsftp用戶的黑名單

vsftpd.user_list

(1)設置禁止vsftpd.user_list文件中的用戶登錄:要在主配置文件vsftpd.conf中修改如下兩項,
userlist_enable=yes
userlist_deny=yes
說明:配置完以後,除了vsftpd.ftpusers文件和vsftpd.user_list文件中記錄的ftp用戶不能登錄vsftp服務以外,其他的ftp用戶都可以登錄。

(2)設置只允許vsftpd.user_list文件中的用戶登錄;同樣的道理要把主配置文件vsftpd.conf 中的語句修改如下兩項: 
userlist_enable=yes
userlist_deny=no
 說明:配置完以後,只允許vsftpd.user_list文件中記錄的ftp用戶能登錄vsftp服務,其他的ftp用戶都不可以登錄。

 

###################超時設置##################

idle_session_timeout=600 #空閒連接超時
data_connection_timeout=120 #數據傳輸超時
ACCEPT_TIMEOUT=60  #PAVS請求超時
connect_timeout=60  #PROT模式連接超時


################服務器功能選項###############

xferlog_enable=YES    #開啓日記功能
xferlog_std_format=YES   #使用標準格式
log_ftp_protocol=NO    #當xferlog_std_format關閉且本選項開啓時,記錄所有ftp請求和回覆,當調試比較有用.
pasv_enable=YES    #允許使用pasv模式
pasv_promiscuous+NO    #關閉安全檢查,小心呀.
port_enable=YES    #允許使用port模式
prot_promiscuous    #關閉安全檢查
tcp_wrappers=YES    #開啓tcp_wrappers支持
pam_service_name=vsftpd   #定義PAM 所使用的名稱,預設爲vsftpd。
nopriv_user=nobody    #當服務器運行於最底層時使用的用戶名
pasv_address=(none)    #使vsftpd在pasv命令回覆時跳轉到指定的IP地址.(服務器聯接跳轉?)

 

#################服務器性能選項##############
ls_recurse_enable=YES  #是否能使用ls -R命令以防止浪費大量的服務器資源
one_process_model  #是否使用單進程模式
listen=YES   綁定到listen_port指定的端口,既然都綁定了也就是每時都開着的,就是那個什麼standalone模式
text_userdb_names=NO   #當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名     #稱。若是希望出現擁有者的名稱,則將此功能開啓。

use_localtime=NO    #顯示目錄清單時是用本地時間還是GMT時間,可以通過mdtm命令來達到一樣的效果

#use_sendfile=YES    #測試平臺優化

 

################信息類設置################

ftpd_banner=welcome to FTP .  #login時顯示歡迎信息.如果設置了banner_file則此設置無效
dirmessage_enable=YES   #允許爲目錄配置顯示信息,顯示每個目錄下面的message_file文件的內容
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     #匿名用戶登陸後的根目錄

 

#############用戶連接選項#################


max_clients=100    #可接受的最大client數目
max_per_ip=5    #每個ip的最大client數目
connect_from_port_20=YES   #使用標準的20端口來連接ftp
listen_address=192.168.0.2   #綁定到某個IP,其它IP不能訪問
listen_port=2121    #綁定到某個端口
ftp_data_port=2020    #數據傳輸端口
pasv_max_port=0    #pasv連接模式時可以使用port 範圍的上界,0 表示任意。默認值爲0。
pasv_min_port=0    #pasv連接模式時可以使用port 範圍的下界,0 表示任意。默認值爲0。


##############數據傳輸選項#################

anon_max_rate=51200  #匿名用戶的傳輸比率(b/s)
local_max_rate=5120000  #本地用戶的傳輸比率(b/s)


##############安全選項#################

Idle_session_timeout=600 #(用戶會話空閒後10分鐘)
Data_connection_timeout=120 #(將數據連接空閒2分鐘斷)
Accept_timeout=60  #(將客戶端空閒1分鐘後斷)
Connect_timeout=60  #(中斷1分鐘後又重新連接)
Local_max_rate=50000  #(本地用戶傳輸率50K)
Anon_max_rate=30000  # (匿名用戶傳輸率30K)

Pasv_min_port=50000  # (將客戶端的數據連接端口改在
Pasv_max_port=60000  #50000—60000之間)

Max_clients=200   #(FTP的最大連接數)
Max_per_ip=4   #(每IP的最大連接數)
Listen_port=5555  #(從5555端口進行數據連接)

 

以上如果有什麼不全或錯誤的地方,請大家與我聯繫,我及時改進,謝謝


【案例1】建立基於虛擬用戶的FTP服務器,並根據以下要求配置FTP服務器。

(1)配置FTP匿名用戶的主目錄爲/var/ftp/anon。下載帶寬限制爲100kB/s

(2)建立一個名爲abc,口令爲xyz的FTP賬戶。下載帶寬限制爲500kB/s。

(3)設置FTP服務器同時登錄到FTP服務器的最大鏈接數爲100;每個IP最大鏈接數爲3;用戶空閒時間超過限值爲5分鐘。

mkdir /var/fpt/anon

useradd abc
passwd abc

vim /etc/vsftpd/vsftpd.conf

主要內容如下

anonymous_enable=YES
anon_root=/var/ftp/anon
anon_max_rate=100

# Uncomment this to allow local users to log in.
local_enable=YES
local_max_rate=500
max_clients=100
max_per_ip=3
connect_timeout=300

以上是本地的LOCAL用戶

下面是用虛擬用戶來實現

vim /etc/vsftpd/vuser

內容如下

tom
123

生成數據庫文件
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db

vim /etc/pam.d/vsftpd


註釋掉原來的內容

然後加入

auth        required    pam_userdb.so   db=/etc/vsftpd/vuser
account     required    pam_userdb.so   db=/etc/vsftpd/vuser

最後編輯VSFTPD.CONF加入下面兩句

guest_enable=YES
guest_username=abc

 

大家可以自行測試。

到此,案例一完成


【案例2】
1、新建一分區,10G空間,ext3 文件系統,掛在到 /ftp下,作爲 ftp服務器數據存放地方。

2、四個部門:dep1,dep2, dep3, dep4,分別對應目錄 /ftp/dep1,/ftp/dep2,/ftp/dep3,/ftp/dep4。另外設定一個公共目錄 /ftp/public。

3、五個用戶:admin,user1,user2,user3,user4。其中:user 1/2/3/4分別對應部門dep 1/2/3/4,他們只能訪問自己所屬部門的目錄和public目錄。如:user1只能訪問dep1和public目錄,不能訪問其它目錄。admin爲管理員用戶,可以訪問 ftp 服務器上的任何目錄。

4、用戶訪問權限限制:user1/2/3/4在所能訪問的目錄,具有上傳文件、下載文件的功能,但是不能夠刪除文件、更改文件權限等功能。admin管理員用戶對所有目錄具有文件上傳、下載、刪除、權限更改等功能。

5、對每個部門定製一個 quota,設置該賬戶的文件配額爲1000個;磁盤配額爲2G。

6、匿名用戶不能訪問。


第一、增加一塊硬盤,然後分區,把分區掛載情況寫入/etc/fstab

# fdisk /dev/hdb

# mkfs.ext3 /dev/hdb1
# mkidr /ftp
# mount /dev/hdb1 /ftp -o usrquota,grpquota

# vim /etc/fstab
加入下面一句

/dev/hdb1               /ftp                    ext3    defaults,usrquota,grpquota      0 0


第二、建立用戶組和用戶和相應的文件夾並更改權限,達到題目要求

# groupadd dep1

# groupadd dep2
# groupadd dep3
# groupadd dep4
# groupadd **e

# usradd  -G dep1,**e user1

# usradd  -G dep2,**e user2
# usradd  -G dep3,**e user3
# usradd  -G dep4,**e user4
# usradd  -G dep1,dep2,dep3,dep4,**e admin

# passwd user1

# passwd user2
# passwd user3
# passwd user4
# passwd admin

# mkdir /ftp/dep1

# mkdir /ftp/dep2
# mkdir /ftp/dep3
# mkdir /ftp/dep4
# mkdir /ftp/public

# chmod uesr1:dep1 /ftp/dep1

# chmod uesr2:dep2 /ftp/dep2
# chmod uesr3:dep3 /ftp/dep3
# chmod uesr4:dep4 /ftp/dep4
# chmod admin:**e /ftp/public

# chmod 770 /ftp/dep1

# chmod 770 /ftp/dep2
# chmod 770 /ftp/dep3
# chmod 770 /ftp/dep4
# chmod 770 /ftp/pubic


最終結果如下

-rw——- 1 root  root      8192 Jul 26 11:46 aquota.group
-rw——- 1 root  root      7168 Jul 26 11:46 aquota.user
drwxrwx— 2 user1 dep1      4096 Jul 25 20:47 dep1
drwxrwx— 2 user2 dep2      4096 Jul 25 20:47 dep2
drwxrwx— 2 user3 dep3      4096 Jul 25 20:47 dep3
drwxrwx— 2 user4 dep4      4096 Jul 25 20:47 dep4
drwx—— 2 root  root     16384 Jul 25 20:44 lost+found
drwxrwx— 2 admin **e  4096 Jul 25 20:48 public

第三、創建quota,配置磁盤配額

#mount /dev/hdb1 /ftp -o usrquota,grpquota

# quotacheck -cuvg /dev/sdb1
# quotaon -a
# edquota -g dep1

Disk quotas for group dep1 (gid 503):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/hdb1                         0    1024000    2048000          0      500     1000

# edquota -g -p dep1 dep2 dep3 dep4(-u -g將源用戶組和羣組的quota設置套用至其他用戶或羣組。)


第四、編輯VSFTPD.CONF

# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

加入
local_root=/ftp
user_config_dir=/etc/vsftpd/ftp_config_dir 


開啓chroot

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


第五、建立用戶的獨立文件

# mkdir /etc/vsftpd/ftp_config_dir

# vim /etc/vsftpd/ftp_config_dir/user1

cmds_allowed=ABOR,ACCT,APPE,CWD,CDUP,HELP,LIST,MODE,MDTM,NOOP,NLST,PASS,PASV,PORT,PWD,QUIT,REIN,RETR,SITE,SIZE,STOR,STAT,STOU,STRU,SYST,TYPE,USER


# cp /etc/vsftpd/ftp_config_dir/user1 /etc/vsftpd/ftp_config_dir/user2

cp /etc/vsftpd/ftp_config_dir/user1 /etc/vsftpd/ftp_config_dir/user3

cp /etc/vsftpd/ftp_config_dir/user1 /etc/vsftpd/ftp_config_dir/user4

第六、測試

 

 

 

 

 

 

 

添加一個新用戶 test

#useradd -d /home -s /sbin/nologin test

修改配置文件 vsftpd.conf

#vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

user_config_dir=/etc/vsftpd/user_conf

修改chroot_list文件,添加可以登錄的用戶 test

#vi /etc/vsftpd/chroot_list

創建用戶配置文件

#vi /etc/vsftpd/user_conf/test

local_root=/data/www

其他

1)打開日誌功能

xferlog_file=/var/log/vsftpd.log

2)定製歡迎信息

dirmessage_enable=YES

message_file=.message

3)限制連接數

max_clients=100

max_per_ip=5

4)限制傳輸速度

anon_max_rate=81920

local_max_rate=81920

5)綁定IP

listen_address=192.168.168.203
文章源自:烈火網,原文:http://www.veryhuo.com/a/view/14224.html

 

 

匿名用戶
anonymous_enable=NO

anon_mkdir_write_enable=YES

anon_upload_enable=YES

本地用戶能否登陸

local_enable=YES

是否可寫

write_enable=YES

VSFTPD獨立運行 (用vsftpd /etc/vsftpd.conf &)以及下載速度的限制

listen=YES
max_clients=600
max_per_ip=5
tcp_wrappers=YES
connect_from_port_20=YES

anon_max_rate=51200  (56k)

local_max_rate=512000 (560k)

如何更改路徑

anon_root=/var/ftp/pub

local_root=/var/ftp

如何隨意增加一個用戶目錄

通過useradd -d /path/dir -M name 以及chmod ? /path/dir 可以達到

如何對磁盤限額

用quota對/etc/fstab進行限制,然後對特定用戶進行限制
如何把用戶限制在家目錄中呢?
  我們要自己建一個文件,在/etc目錄中
  #touch /etc/vsftpd.chroot_list
  以beinan這個用戶爲例
  在vsftpd.chroot_list這個文件中,把beinan添上去就行。
  然後改/etc/vsftpd/vsftpd.conf文件,找如下的兩行
  #chroot_list_enable=YES
  #chroot_list_file=/etc/vsftpd.chroot_list
  把前面的#號去掉,也就是這樣的
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd.chroot_list
  如果沒有這樣的兩行,就可以自己添加上去也是一樣的。
  設置好後,重新vsFTPD服務器。
打開vsFTP服務器的日誌功能:
  把下面xferlog_file前面的#號對掉,也就是把vsftp的log功能打開,這樣我們就能在/var/log目錄下查看vsftpd.log。這是vsFTP的日誌功能,這對於我們來說是極爲重要的。

  #xferlog_file=/var/log/vsftpd.log
  補充三:如何讓綁定IP到vsFTP?也就是說,如何讓用戶只能通過某個IP來訪問FTP。其實這個功能很有意思。如果綁定的是內網的IP,外部是沒有辦法訪問的。如果綁定的是對外服務的IP,內網也只能通過對外服務的IP來訪問FTP

  在/etc/vsftpd/vsftpd.conf中加一行,以我的局域網爲例,請看第一帖中的操作環境,這樣外網就不能訪問我的FTP了,內網也可能通過192.168.0.2來訪問FTP

listen_address=192.168.0.2
  加完後,要重啓vsFTP服務器

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