/etc/vsftpd/vsftpd.conf文件详解,分好类,方便你们查找与学习node
#################匿名权限控制###############web
anonymous_enable=YES #是否启用匿名用户
no_anon_password=YES #匿名用户login时不询问口令shell
下面这四个主要语句控制这文件和文件夹的上传、下载、建立、删除和重命名。
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权限才能被下载。若想让匿名用户能上传和删除权限,必需设置vim
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 #限制用户的下载权限session
chown_uploads=YES #全部匿名上传的文件的所属用户将会被更改为chown_username
chown_username=whoever #匿名上传文件所属用户名app
chroot_list_enable=YES #若是启动这项功能,则全部列在chroot_list_file之中的使用者不能更改根目录
chroot_list_file=/etc/vsftpd/chroot_list #指定限制的用户文件less
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搭配能实现如下几种效果:
一、当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,能够切换到其余目录;未在文件中列出的用户,不能切换到其余目录。
二、当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其余目录;未在文件中列出的用户,能够切换到其余目录。
三、当chroot_list_enable=NO,chroot_local_user=YES时,全部的用户均不能切换到其余目录。
四、当chroot_list_enable=NO,chroot_local_user=NO时,全部的用户都可以切换到其余目录。
下面是个实例,但愿对你们有用:
一、只能上传。不能下载、删除、重命名。
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
二、只能下载。不能上传、删除、重命名。write_enable=NO
三、只能上传、删除、重命名。不能下载。download_enable=NO
四、只能下载、删除、重命名。不能上传。
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)。
###################访问控制设置###################
两种控制方式:一种控制主机访问,另外一种控制用户访问。
一、控制主机访问:
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
二、控制用户访问:
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】
一、新建一分区,10G空间,ext3 文件系统,挂在到 /ftp下,做为 ftp服务器数据存放地方。
二、四个部门:dep1,dep2, dep3, dep4,分别对应目录 /ftp/dep1,/ftp/dep2,/ftp/dep3,/ftp/dep4。另外设定一个公共目录 /ftp/public。
三、五个用户:admin,user1,user2,user3,user4。其中:user 1/2/3/4分别对应部门dep 1/2/3/4,他们只能访问本身所属部门的目录和public目录。如:user1只能访问dep1和public目录,不能访问其它目录。admin 为管理员用户,能够访问 ftp 服务器上的任何目录。
四、用户访问权限限制:user1/2/3/4在所能访问的目录,具备上传文件、下载文件的功能,可是不可以删除文件、更改文件权限等功能。admin管理员用户对全部目录具备文件上传、下载、删除、权限更改等功能。
五、对每一个部门定制一个 quota,设置该帐户的文件配额为1000个;磁盘配额为2G。
六、匿名用户不能访问。
第1、增长一块硬盘,而后分区,把分区挂载状况写入/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
第2、创建用户组和用户和相应的文件夹并更改权限,达到题目要求
# 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
第3、建立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设置套用至其余用户或群组。)
第4、编辑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
第5、创建用户的独立文件
# 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