#################匿名權(quán)限控制###############
anonymous_enable=YES #是否啟用匿名用戶
no_anon_password=YES #匿名用戶login時(shí)不詢問口令
下面這四個(gè)主要語句控制這文件和文件夾的上傳、下載眉睹、創(chuàng)建、刪除和重命名志衍。
anon_upload_enable=(yes/no)无切;??#控制匿名用戶對(duì)文件(非目錄)上傳權(quán)限。
anon_world_readable_only=(yes/no);?#控制匿名用戶對(duì)文件的下載權(quán)限
anon_mkdir_write_enable=(yes/no)收擦;?#控制匿名用戶對(duì)文件夾的創(chuàng)建權(quán)限
anon_other_write_enable=(yes/no);?#控制匿名用戶對(duì)文件和文件夾的刪除和重命名
注:匿名用戶下載是使用的是nobody這個(gè)用戶谍倦,所以相應(yīng)的O這個(gè)位置要有R權(quán)限才能被下載塞赂。若想讓匿名用戶能上傳和刪除權(quán)限,必需設(shè)置
write_enable=YES?#全局設(shè)置昼蛀,是否容許寫入(無論是匿名用戶還是本地用戶减途,若要啟用上傳權(quán)限的話酣藻,就要開啟他)
anon_root=(none)?#匿名用戶主目錄
anon_max_rate=(0)?#匿名用戶速度限制
anon_umask=(077)?#匿名用戶上傳文件時(shí)有掩碼(若想讓匿名用戶上傳的文件能直接被匿名下載,就這設(shè)置這里為073)
chown_uploads=YES?#所有匿名上傳的文件的所屬用戶將會(huì)被更改成chown_username
chown_username=whoever?#匿名上傳文件所屬用戶名
#################本地用戶權(quán)限控制###############
write_enable=YES?#可以上傳(全局控制) 刪除鳍置,重命名
local_umask=022??#本地用戶上傳文件的umask
userlist_enable=YES?#限制了這里的用戶不能訪問
local_root??#設(shè)置一個(gè)本地用戶登錄后進(jìn)入到的目錄
user_config_dir??#設(shè)置用戶的單獨(dú)配置文件辽剧,用哪個(gè)帳戶登陸就用哪個(gè)帳戶命名
download_enable??#限制用戶的下載權(quán)限
chown_uploads=YES?#所有匿名上傳的文件的所屬用戶將會(huì)被更改成chown_username
chown_username=whoever?#匿名上傳文件所屬用戶名
chroot_list_enable=YES #如果啟動(dòng)這項(xiàng)功能,則所有列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_file=/etc/vsftpd/chroot_list #指定限制的用戶文件
user_config_dir=?#后面跟存放配置文件的目錄税产。用來實(shí)現(xiàn)不同用戶不同權(quán)限怕轿。
#在vsftpd.conf文件中加入這一句,
#在相應(yīng)的目錄里面辟拷,為每個(gè)用戶創(chuàng)建自己的配置文件撞羽,用來實(shí)現(xiàn)不同的權(quán)限
可以通過以下三條配置文件來控制用戶切換目錄。
chroot_list_enable=YES/NO???#設(shè)置是否啟用chroot_list_file配置項(xiàng)指定的用戶列表文件衫冻。
#如果啟動(dòng)這項(xiàng)功能诀紊,則所有列在chroot_list_file之中的使用者不能更改根目錄 .默認(rèn)值為yes。
chroot_list_file=/etc/vsftpd/chroot_list?#指出被鎖定在自家目錄中的用戶的列表文件隅俘。
chroot_list_enable=YES
通過與chroot_local_user=YES/NO搭配能實(shí)現(xiàn)以下幾種效果:
1邻奠、當(dāng)chroot_list_enable=YES,chroot_local_user=YES時(shí)为居,在/etc/vsftpd.chroot_list文件中列出的用戶碌宴,可以切換到其他目錄;未在文件中列出的用戶蒙畴,不能切換到其他目錄贰镣。
2、當(dāng)chroot_list_enable=YES膳凝,chroot_local_user=NO時(shí)碑隆,在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其他目錄蹬音;未在文件中列出的用戶干跛,可以切換到其他目錄。
3祟绊、當(dāng)chroot_list_enable=NO楼入,chroot_local_user=YES時(shí),所有的用戶均不能切換到其他目錄牧抽。
4嘉熊、當(dāng)chroot_list_enable=NO,chroot_local_user=NO時(shí)扬舒,所有的用戶均可以切換到其他目錄阐肤。
下面是個(gè)實(shí)例,希望對(duì)大家有用:
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
對(duì)于參數(shù)的詳細(xì)的解釋
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 顯示當(dāng)前工作目錄
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 返回文件的更新時(shí)間
# MKD - make a remote directory 新建文件夾
# NLST - name list of remote directory
# PASS - send password
# PASV - enter passive mode
# PORT - open a data port 打開一個(gè)傳輸端口
# PWD - print working directory 顯示當(dāng)前工作目錄
# 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
###################虛擬用戶設(shè)置###################
虛擬用戶使用PAM認(rèn)證方式舒裤。
pam_service_name=vsftpd??#設(shè)置PAM使用的名稱,默認(rèn)值為/etc/pam.d/vsftpd觉吭。
check_shell=YES ??#(注意:僅在沒有pam驗(yàn)證版本時(shí)有用,是否檢查用戶有一個(gè)有效的shell來登錄 )
guest_enable= YES/NO??#啟用虛擬用戶腾供。默認(rèn)值為NO。
guest_username=ftp??#這里用來映射虛擬用戶鲜滩。默認(rèn)值為ftp伴鳖。
virtual_use_local_privs=YES/NO?#當(dāng)該參數(shù)激活(YES)時(shí),虛擬用戶使用與本地用戶相同的權(quán)限徙硅。
#當(dāng)此參數(shù)關(guān)閉(NO)時(shí)榜聂,虛擬用戶使用與匿名用戶相同的權(quán)限。默認(rèn)情況下此參數(shù)是關(guān)閉的(NO)嗓蘑。
###################訪問控制設(shè)置###################
兩種控制方式:一種控制主機(jī)訪問须肆,另一種控制用戶訪問。
1桩皿、控制主機(jī)訪問:
tcp_wrappers=YES/NO
設(shè)置vsftpd是否與tcp wrapper相結(jié)合來進(jìn)行主機(jī)的訪問控制豌汇。默認(rèn)值為YES。如果啟用泄隔,則vsftpd服務(wù)器會(huì)檢查/etc/hosts.allow 和/etc/hosts.deny 中的設(shè)置拒贱,來決定請(qǐng)求連接的主機(jī),是否允許訪問該FTP服務(wù)器。這兩個(gè)文件可以起到簡(jiǎn)易的防火墻功能逻澳。
比如:若要僅允許192.168.10.1—192.168.10.254的用戶可以連接FTP服務(wù)器闸天,
則在
/etc/hosts.allow
/etc/hosts.deny
文件中添加以下內(nèi)容:
其格式如下:
限制的服務(wù):ip(網(wǎng)段)
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??#用于保存不允許進(jìn)行FTP登錄的本地用戶帳號(hào)斜做。就是vsftp用戶的黑名單
vsftpd.user_list
(1)設(shè)置禁止vsftpd.user_list文件中的用戶登錄:要在主配置文件vsftpd.conf中修改如下兩項(xiàng)苞氮,
userlist_enable=yes
userlist_deny=yes
說明:配置完以后,除了vsftpd.ftpusers文件和vsftpd.user_list文件中記錄的ftp用戶不能登錄vsftp服務(wù)以外陨享,其他的ftp用戶都可以登錄葱淳。
(2)設(shè)置只允許vsftpd.user_list文件中的用戶登錄;同樣的道理要把主配置文件vsftpd.conf 中的語句修改如下兩項(xiàng):
userlist_enable=yes
userlist_deny=no
說明:配置完以后,只允許vsftpd.user_list文件中記錄的ftp用戶能登錄vsftp服務(wù)抛姑,其他的ftp用戶都不可以登錄赞厕。
###################超時(shí)設(shè)置##################
idle_session_timeout=600?#空閑連接超時(shí)
data_connection_timeout=120?#數(shù)據(jù)傳輸超時(shí)
ACCEPT_TIMEOUT=60??#PAVS請(qǐng)求超時(shí)
connect_timeout=60??#PROT模式連接超時(shí)
################服務(wù)器功能選項(xiàng)###############
xferlog_enable=YES ??#開啟日記功能
xferlog_std_format=YES ?#使用標(biāo)準(zhǔn)格式
log_ftp_protocol=NO ??#當(dāng)xferlog_std_format關(guān)閉且本選項(xiàng)開啟時(shí),記錄所有ftp請(qǐng)求和回復(fù),當(dāng)調(diào)試比較有用.
pasv_enable=YES ??#允許使用pasv模式
pasv_promiscuous+NO ??#關(guān)閉安全檢查,小心呀.
port_enable=YES ??#允許使用port模式
prot_promiscuous ??#關(guān)閉安全檢查
tcp_wrappers=YES ??#開啟tcp_wrappers支持
pam_service_name=vsftpd ?#定義PAM 所使用的名稱,預(yù)設(shè)為vsftpd定硝。
nopriv_user=nobody ??#當(dāng)服務(wù)器運(yùn)行于最底層時(shí)使用的用戶名
pasv_address=(none) ??#使vsftpd在pasv命令回復(fù)時(shí)跳轉(zhuǎn)到指定的IP地址.(服務(wù)器聯(lián)接跳轉(zhuǎn)?)
#################服務(wù)器性能選項(xiàng)##############
ls_recurse_enable=YES??#是否能使用ls -R命令以防止浪費(fèi)大量的服務(wù)器資源
one_process_model??#是否使用單進(jìn)程模式
listen=YES???綁定到listen_port指定的端口,既然都綁定了也就是每時(shí)都開著的,就是那個(gè)什么standalone模式
text_userdb_names=NO ?#當(dāng)使用者登入后使用ls -al 之類的指令查詢?cè)摍n案的管理權(quán)時(shí)皿桑,預(yù)設(shè)會(huì)出現(xiàn)擁有者的UID,而不是該檔案擁有者的名?????#稱蔬啡。若是希望出現(xiàn)擁有者的名稱诲侮,則將此功能開啟。
use_localtime=NO ??#顯示目錄清單時(shí)是用本地時(shí)間還是GMT時(shí)間,可以通過mdtm命令來達(dá)到一樣的效果
#use_sendfile=YES ??#測(cè)試平臺(tái)優(yōu)化
################信息類設(shè)置################
ftpd_banner=welcome to FTP . #login時(shí)顯示歡迎信息.如果設(shè)置了banner_file則此設(shè)置無效
dirmessage_enable=YES ?#允許為目錄配置顯示信息,顯示每個(gè)目錄下面的message_file文件的內(nèi)容
setproctitle_enable=YES ?#顯示會(huì)話狀態(tài)信息,關(guān)!
############## 文件定義 ##################
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??#禁止使用的匿名用戶登陸時(shí)作為密碼的電子郵件地址
xferlog_file=/var/log/vsftpd.log???#日志文件位置
message_file=.message?????#目錄信息文件
############## 目錄定義 #################
user_config_dir=/etc/vsftpd/userconf #定義用戶配置文件的目錄
local_root=webdisk? ??#此項(xiàng)設(shè)置每個(gè)用戶登陸后其根目錄為/home/username/webdisk
#定義本地用戶登陸的根目錄,注意定義根目錄可以是相對(duì)路徑也可以是絕對(duì)路徑.相對(duì)路徑是針對(duì)用戶家目錄??????#來說的.
anon_root=/var/ftp ???#匿名用戶登陸后的根目錄
#############用戶連接選項(xiàng)#################
max_clients=100 ??#可接受的最大client數(shù)目
max_per_ip=5 ??#每個(gè)ip的最大client數(shù)目
connect_from_port_20=YES ?#使用標(biāo)準(zhǔn)的20端口來連接ftp
listen_address=192.168.0.2 ?#綁定到某個(gè)IP,其它IP不能訪問
listen_port=2121 ??#綁定到某個(gè)端口
ftp_data_port=2020 ??#數(shù)據(jù)傳輸端口
pasv_max_port=0 ??#pasv連接模式時(shí)可以使用port 范圍的上界箱蟆,0 表示任意沟绪。默認(rèn)值為0。
pasv_min_port=0 ??#pasv連接模式時(shí)可以使用port 范圍的下界空猜,0 表示任意绽慈。默認(rèn)值為0。
##############數(shù)據(jù)傳輸選項(xiàng)#################
anon_max_rate=51200??#匿名用戶的傳輸比率(b/s)
local_max_rate=5120000??#本地用戶的傳輸比率(b/s)
##############安全選項(xiàng)#################
Idle_session_timeout=600?#(用戶會(huì)話空閑后10分鐘)
Data_connection_timeout=120?#(將數(shù)據(jù)連接空閑2分鐘斷)
Accept_timeout=60??#(將客戶端空閑1分鐘后斷)
Connect_timeout=60??#(中斷1分鐘后又重新連接)
Local_max_rate=50000??#(本地用戶傳輸率50K)
Anon_max_rate=30000??# (匿名用戶傳輸率30K)
Pasv_min_port=50000??# (將客戶端的數(shù)據(jù)連接端口改在
Pasv_max_port=60000??#50000—60000之間)
Max_clients=200???#(FTP的最大連接數(shù))
Max_per_ip=4???#(每IP的最大連接數(shù))
Listen_port=5555??#(從5555端口進(jìn)行數(shù)據(jù)連接)
以上如果有什么不全或錯(cuò)誤的地方辈毯,請(qǐng)大家與我聯(lián)系坝疼,我及時(shí)改進(jìn),謝謝
【案例1】建立基于虛擬用戶的FTP服務(wù)器谆沃,并根據(jù)以下要求配置FTP服務(wù)器钝凶。
(1)配置FTP匿名用戶的主目錄為/var/ftp/anon。下載帶寬限制為100kB/s
(2)建立一個(gè)名為abc唁影,口令為xyz的FTP賬戶耕陷。下載帶寬限制為500kB/s。
(3)設(shè)置FTP服務(wù)器同時(shí)登錄到FTP服務(wù)器的最大鏈接數(shù)為100据沈;每個(gè)IP最大鏈接數(shù)為3啃炸;用戶空閑時(shí)間超過限值為5分鐘。
mkdir /var/fpt/anon
useradd abc
passwd abc
vim /etc/vsftpd/vsftpd.conf
主要內(nèi)容如下
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用戶
下面是用虛擬用戶來實(shí)現(xiàn)
vim /etc/vsftpd/vuser
內(nèi)容如下
tom
123
生成數(shù)據(jù)庫(kù)文件
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db
vim /etc/pam.d/vsftpd
注釋掉原來的內(nèi)容
然后加入
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
大家可以自行測(cè)試卓舵。
到此南用,案例一完成
【案例2】
1、新建一分區(qū),10G空間裹虫,ext3 文件系統(tǒng)肿嘲,掛在到 /ftp下,作為 ftp服務(wù)器數(shù)據(jù)存放地方筑公。
2雳窟、四個(gè)部門:dep1,dep2匣屡, dep3封救, dep4,分別對(duì)應(yīng)目錄 /ftp/dep1捣作,/ftp/dep2誉结,/ftp/dep3,/ftp/dep4券躁。另外設(shè)定一個(gè)公共目錄 /ftp/public惩坑。
3、五個(gè)用戶:admin也拜,user1以舒,user2,user3慢哈,user4蔓钟。其中:user 1/2/3/4分別對(duì)應(yīng)部門dep 1/2/3/4,他們只能訪問自己所屬部門的目錄和public目錄卵贱。如:user1只能訪問dep1和public目錄滥沫,不能訪問其它目錄。admin為管理員用戶艰赞,可以訪問 ftp 服務(wù)器上的任何目錄佣谐。
4肚吏、用戶訪問權(quán)限限制:user1/2/3/4在所能訪問的目錄方妖,具有上傳文件、下載文件的功能罚攀,但是不能夠刪除文件党觅、更改文件權(quán)限等功能。admin管理員用戶對(duì)所有目錄具有文件上傳斋泄、下載杯瞻、刪除、權(quán)限更改等功能炫掐。
5魁莉、對(duì)每個(gè)部門定制一個(gè) quota,設(shè)置該賬戶的文件配額為1000個(gè);磁盤配額為2G旗唁。
6畦浓、匿名用戶不能訪問。
第一检疫、增加一塊硬盤讶请,然后分區(qū),把分區(qū)掛載情況寫入/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
第二屎媳、建立用戶組和用戶和相應(yīng)的文件夾并更改權(quán)限夺溢,達(dá)到題目要求
# 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
最終結(jié)果如下
-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
第三、創(chuàng)建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設(shè)置套用至其他用戶或群組风响。)
第四、編輯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
第五晒来、建立用戶的獨(dú)立文件
# 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