天天看點

vsftpd.conf Details

/etc/vsftpd/vsftpd.conf檔案詳解,分好類,友善大家查找與學習

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

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  #限制使用者的下載下傳權限

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_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 boobooke

# usradd  -G dep1,boobooke user1

# usradd  -G dep2,boobooke user2

# usradd  -G dep3,boobooke user3

# usradd  -G dep4,boobooke user4

# usradd  -G dep1,dep2,dep3,dep4,boobooke 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:boobooke /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 boobooke  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_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

第六、測試