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??#限制用戶的下載權限

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=100000

# Uncomment this to allow local users to log in.

local_enable=YES

local_max_rate=500000

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

# chown uesr1:dep1 /ftp/dep1

# chown uesr2:dep2 /ftp/dep2

# chown uesr3:dep3 /ftp/dep3

# chown uesr4:dep4 /ftp/dep4

# chown 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_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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容