本文共 5703 字,大约阅读时间需要 19 分钟。
程序下载地址:
安装之前的准备 确认用户nobody和目录/usr/share/empty是否存在,如果不存在需要新建这个用户和目录。 [root@localhost root]# useradd nobody [root@localhost root]# mkdir /usr/share/empty 如果要允许匿名访问,还需要创建ftp用户,并将其主目录设置为/var/ftp。在RedHat Linux 9.0中这些都已默认设置好了,只需要创建一个/var/ftp目录即可。 为了安全,目录/var/ftp不应该属于用户ftp,也不应该有写权限。设置如下: [root@localhost root]# chown root.root /var/ftp [root@localhost root]# chmod 755 /var/ftp 开始安装 [root@localhost root]# tar -xzvf vsftpd-2.0.3.tar.gz [root@localhost root]# cd vsftpd-2.0.3 [root@localhost vsftpd-2.0.3]# make [root@localhost vsftpd-2.0.3]# make install 安装后续工作 由于采用源代码方式安装,很多必要的配置文件没有复制到系统中,需要手动复制。 [root@localhost vsftpd-2.0.3]# cp vsftpd.conf /etc [root@localhost vsftpd-2.0.3]# cp RedHat/vsftpd.pam /etc/pam.d/ftp 多数使用vsftpd的用户在用源代码安装后都会遇到这样的问题:匿名用户可以登录,而本地用户无论怎样设置都无法登录,原因就在于vsftpd采用了PAM验证的方式,需要复制一个验证文件本地用户才能访问。 配置vsftpd启动模式(Standalone) [root@localhost root]# vi /etc/xinetd.d/vsftpd disable = yes 或者: [root@localhost root]# ntsysv [ ] vsftpd [root@localhost root]# vi /etc/vsftpd.conf listen=YES [root@localhost root]# vi /etc/rc.local /usr/local/sbin/vsftpd & 配置vsftpd.conf 1.允许本地用户登录并允许其上传文件 local_enable=YES write_enable=YES 2.将本地用户锁定在主目录中,不允许切换到上一级目录中 chroot_local_user=YES 3.允许指定用户通过FTP登录服务器 userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd.user_list 4.禁止用户通过FTP修改文件或文件夹的权限(默认为YES) chmod_enable=NO 5.设置本地用户上传的文件或文件夹的umask值(默认值为077) local_umask=022 umask的值设为022表示,上传的如果是文件将权限改为644,如果是文件夹将权限改为755。在上传网页时,如果设置为077,就会出现用户没有权限(Permission denied)访问网页的问题,所以建议将umask的值设为022。 6.限制总连接数 max_clients=100 7.限制每个IP最大连接数 max_per_ip=3 8.添加一个只能从ftp登录服务器,而不能从本地登录的用户 以下创建一个用户ftpuser,不允许从本地登录,并创建该用户的密码。 [root@localhost root]# useradd –g ftp –s /sbin/nologin ftpuser [root@localhost root]# passwd ftpuser Changing password for user ftpuser. New password: Retype new password: passwd: all authentication tokens updated successfully. 9.创建vsftpd.user_list文件 [root@localhost root]# vi /etc/vsftpd.user_list 添加用户:ftp、ftpuser 逻辑选项anonymous_enable | 是否允许匿名ftp | yes |
anon_upload_enable | 匿名账号上传权限,必须对目录有写入权 | no |
anon_mkdir_write_enable | 匿名账号可创建目录,并在此目录中上传文件,必须对目录有写入权 | no |
anon_other_write_enable | 匿名帐号其他权限,例如删除或是更名 | no |
anon_world_readable_only | 匿名账号浏览权限,允许下载可阅读的档案 | yes |
ascii_upload_enable | 是否启用ASCII上传方式 | no |
ascii_download_enable | 是否启用ASCII下载方式 | no |
async_abor_enable | 是否允许使用async ABOR命令,一般不用,容易出现问题 | no |
check_shell | 是否检查用户有一个有效的shell来登陆,在没有pam验证版本时用到 | yes |
chroot_list_enable | 锁定某些用户在自家目录中。具体用户在chroot_list_file参数指定的文件中 | no |
chroot_local_user | 将本地用户锁定在自家目录。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录 | no |
chown_uploads | 改变匿名上传文件的所有者为chown_username设定的用户名称 | no |
connect_from_port_20 | 使用标准的端口20进行数据连接 | no |
deny_email_enable | 如果匿名用户需要密码,拒绝banned_email_file设定的文件内的电子邮件地址做为密码登陆 | no |
dirmessage_enable | 是否显示目录说明文件,需要在各目录中手工创建.message文件 | no |
guest_enable | 将所有非匿名登陆用户名切换成guest_username设定的用户名 | no |
hide_ids | 用ftp取代文件属主和组信息 | no |
listen | 独立的vsftpd服务器,选择NO,vsftpd包含在xinetd之中 | no |
local_enble | 本地帐户能够登陆 | no |
log_ftp_protocol | 当xferlog_std_format关闭且本选项开启时,记录所有ftp请求和回复 | no |
ls_recurse_enable | 能否使用ls -R命令,设为YES可能会浪费大量服务器资源 | no |
no_anon_password | 匿名用户登陆是否询问密码 | no |
one_process_model | 是否使用单进程模式 | no |
passwd_chroot_enable | 如果与chroot_local_user一起开启,chroot()容器的位置可以在每个用户的基础上指定。每个用户的容器来源于/etc/passwd中每个用户的自家目录字段 | no |
pasv_promiscuous | 关闭PASV安全检查 | no |
port_promiscuous | 关闭PORT安全检查 | no |
port_enable | 允许使用PORT模式 | yes |
pasv_enable | 服务器端启用PASV模式 | yes |
setproctitle_enable | 是否以独立的进程来体现每一个联机 | no |
tcp_wrappers | 是否与vsftpd与tcp wrapper结合,可以在/etc/hosts.allow与/etc/hosts.deny中定义可联机或是拒绝的来源地址 | yes |
text_userdb_names | 当使用ls -al之类的指令查询文件的管理权时,预设会出现拥有者的UID,而不是文件拥有者的名称,若是希望出现拥有者的名称,则将此功能开启 | no |
tunable_port_promiscuous | 关闭PORT安全检查 | no |
userlist_enable | 设为YES,将从userlist_file选项给出的文件中装载一个含有用户名的清单,然后再读取userlist_deny的值来确定vsftpd.user_list文件中的用户是否允许访问FTP服务器 | no |
userlist_deny | 设为YES,userlist_file指定文件中的账号将无法登陆,设为NO,只有userlist_file指定文件中的账号才能登入,这个选项只有在userlist_enable=YES时才会被检验 | yes |
use_localtime | 显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到同样效果 | |
use_sendfile | 测试平台优化 | |
write_enable | 本地用户写的权限,即是否允许删除和修改文件 | no |
xferlog_enable | 开启日志,上传与下载的信息将被完整纪录在xferlog_file定义的文件中 | no |
xferlog_std_format | 使用标准的日志格式 | yes |
accept_timeout | 接受建立联机逾时设定,单位为秒 | 60 |
anon_max_rate | 匿名用户档案传输速度,单位为Bytes/s | 0(不限制) |
anon_umask | 匿名用户新建档案时的umask数值 | 077 |
connect_timeout | 响应PORT方式数据联机逾时设定,单位为秒 | 60 |
data_connection_timeout | 建立数据联机逾时设定,单位为秒 | 300 |
file_open_mode | 上传文件的权限,与chmod 所使用的数值相同 | 0666 |
ftp_data_port | 数据传输端口 | 20 |
idle_session_timeout | 用户会话逾时设定,单位为秒 | 300 |
listen_address | 监听地址 | none(所有地址) |
listen_port | 监听端口 | 21 |
local_max_rate | 本地用户档案传输速度,单位为Bytes/s | 0(不限制) |
local_umask | 本地用户上传文件的umask数值 | 077 |
max_clients | 如果使用standalone模式,定义最大连接数 | 0(不限制) |
max_per_ip | 如果使用standalone模式,定义每个IP地址可以联机的数目 | 0(不限制) |
psav_address | 在pasv命令回复时跳转到指定的IP地址(the address is taken from the incoming connected socket) | none |
pasv_max_port | PASV模式可使用的最大端口 | 0(任意端口) |
pasv_min_port | PASV模式可使用的最小端口 | 0(任意端口) |
anon_root | 匿名用户主目录 | none |
banned_email_file | /etc/vsftpd.banned_emails | |
banner_file | 欢迎信息,基于文件 | none |
banner_fai | /路径/文件名连接失败时显示文件中的内容 | |
chown_username | 匿名上传文件所属用户名 | root |
chroot_list_file | 被锁定在自家目录中的用户的列表文件 | /etc/vsftpd.chroot_list |
ftpd_banner | 欢迎信息,基于字符串默认(default vsftpd banner is displayed) | none |
ftp_username | 定义匿名登陆的用户名称 | ftp |
guest_username | 用户名 | ftp |
local_root | 本地用户主目录,例如,local_root=webdisk,本地用户登陆后其根目录为/home/username/webdisk | none |
message_file | 目录信息文件名 | .message |
nopriv_user | 服务器运行于最底层时使用的用户名 | nobody |
pam_service_name | ftp | |
secure_chroot_dir | 这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不需要file system的权限时,就会将使用者限制在此数据夹中 | /usr/share/empty |
userlist_file | /etc/vsftpd.user_list | |
user_config_dir | 用户配置文件目录。例如,user_config_dir=/etc/vsftpd/userconf,建立账号test1、test2,在/etc/vsftpd/userconf下新建文件test1、test2。test1 登陆,系统将读取/etc/vsftpd/userconf/test1文件内的设定;test2登陆,系统将读取/etc/vsftpd/userconf/test2文件内的设定 | none |
xferlog_file | 日志文件位置 | /var/log/vsftpd.log |
转载地址:http://jssli.baihongyu.com/