环境 vmware+solaris9+vsftpd 2.0.3
1.从哪里下载vsftp的安装包
2.如何编译vsftp安装包
前两步就不赘述了,坛子里有好多帖里都有,search一下就能找到。
3.编译完成的文件需要如何安装到系统中去?
需要将编译完成的哪些文件拷贝到系统的哪些目录下
编译完后将产生vsftp文件,其他的配置文件,帮助文件(man)应该是编译前已经存在的了
。应此需要拷贝的文件有:
vsftpd
vsftpd.conf.5
vsftpd.8
vsftpd.conf
拷贝路径为:
vsftpd /usr/local/sbin/
vsftpd.conf.5 /usr/local/man/man5/
vsftpd.8 /usr/local/man/man8/
vsftpd.conf /etc/
(ps 安装文档中说可以用make install,但是我运行时,总是不成功)
4.运行vsftpd的最小设置:
4.1 需要系统中有一个nobody用户,如果没有自己创建。
4.2 需要系统中有一个ftp用户(作为vsftpd的匿名用户),要修改宿主目录为其他用户所有,
并去掉改目录og的可写属性,例如,ftp的宿主目录是/var/ftp/,修改宿主目录属性:
chown root:root /var/ftp
chmod og-w /var/ftp
4.3 需要创建/usr/share/empty/目录,这是vsftpd要求的默认配置,我也不知道做什么用的,:)
5.运行方式的选择:
5.1 standalone 方式:
独立运行模式,不需要inetd作为"中间人"的方式:
在/etc/vsftpd.conf 最后添加一行:
listen=YES (注意,vsftpd.conf中的所有"="两边不能有空格。)
5.2 inetd 方式:
把/etc/inetd.conf 中的ftp stream.... 中in.ftpd 改成vsftpd,最后是启动参数vsftpd /etc/vsftpd.conf(替换掉 in.ftpd -a)就可以了
设置/etc/vsftpd.conf中的listen=NO(如果不改的话,第一次ftp会失败,ctrl+c中止后,再ftp时,就可以用了,我试了两次,是这个结果)
在5.1后,vsftpd最小配置已经完成,就可以使用/usr/local/sbin/vsftp & 直接运行vsftpd,尝试用
ftp用户来登录,感受一把,呵呵。
6.增加自启动功能:
将/etc/inetd.conf中的 ftp stream ..... in.ftpd 用#注释掉
/etc/services 中的ftp 21/tcp 不要注释,否则无法连接到服务器上。
vi /etc/rc3.d/S83vsftpd
#!/sbin/sh
case "$1" in
start)
/usr/local/bin/vsftpd &
;;
stop)
pkill vsftpd
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
这个应该是standalone的自启动脚本,inted方式则不用。
写好脚本后,将脚本增加执行权限:u+x,如果愿意可以把用户和组都改为和系统默认一致:root:sys
7.vsftp功能详细配置:
先假设一下需求:
7.1 需要能匿名登录vsftp server,只允许下载公开的内容,不允许匿名用户上传和和其他操作。
根据需求,在vsftpd.conf中加入
anonymous_enable=YES
anon_world_readable_only=YES
non_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
其实这些采用默认值就可以了,也就是说,对于匿名用户,采用默认的设置已经可以实现7.1的需求了。
只要在/var/ftp/放入给匿名用户下载的文件就可以了。
以下时匿名用户和本地用户配置文件的主要参数值。
加入你想配置匿名ftp,把如下的参数存成vsftpd.conf,放到/etc下,不用安装包提供的那个示例配置文件(vsftpd.conf)
匿名ftp的以上控制分别为:
用户控制
anonymous_enable=YES 启用匿名用户
no_anon_password=YES 需要密码
anon_root=/var/ftp 匿名用户的主目录(默认为/var/ftp)
local_enable=NO 禁用本地用户
guest_enable=NO 禁用gust用户
ftp_username=ftp 匿名用户的用户名(默认还有anonymous可使用)
权限控制
write_enable=NO 匿名用户不可写
local_umask=022 上传文件的umask
file_open_mode=0666 上传文件的总权限,与umask共同决定了上传文件的实际权限
anon_upload_enable=NO 匿名用户不可以上传
anon_mkdir_write_enable=NO 匿名用户不可以建目录等写操作
anon_other_write_enable=NO 匿名用户不可以做其他的写操作
anon_world_readable_only=YES 匿名用户可以读文件
#chown_uploads=YES 修改上传的文件的属主
#chown_username=ftpadmin 修改上传的文件的属主为XXX
ascii_upload_enable=NO 不使用ascii上传文件
ascii_download_enable=NO 不使用ascii下载文件
secure_chroot_dir=/usr/share/empty 默认值
超时控制
idle_session_timeout=600 空闲超时600秒
data_connection_timeout=120 传输超时120秒
accept_timeout=60 pasv模式等待时间60秒
connect_timeout=60 port模式等待时间60秒
服务控制
xferlog_enable=YES 启动日志功能
xferlog_std_format=YES 使用标准日志格式
xferlog_file=/var/log/vsftpd.log 日志默认的位置
pasv_enable=YES 启用被动模式
#port_enable=YES 启用主动模式
tcp_wrappers=YES 启用tcp_wrappers功能
nopriv_user=nobody 最低权限用户
listen=YES 使用standalone 模式(推荐的)
显示信息
ftpd_banner=welcome to ftp. 登录时的欢迎信息
dirmessage_enable=YES 启动切换目录时提示目录信息的功能
message_file=.message 目录提示信息的内容文件
连接选项
max_clients=100 最大连接数
max_per_ip=5 每个ip最大连接数
connect_from_port_20=YES 启用20端口传输数据
#listen_address=192.168.0.2 限制只有此ip地址可以访问
listen_port=21 监听的端口号
ftp_data_port=20 数据传输端口号
pasv_max_port=0 被动模式的端口号的上限(0为不限)
pasv_min_port=0 被动模式的端口号的下限(0为不限)
数据传输速度
anon_max_rate=51200 匿名用户最大传输率
local_max_rate=5120000 本地用户最大传输率
************************************************************************
加入你想配置本地用户ftp,把如下的参数存成vsftpd.conf,放到/etc下,不用安装包提供的那个示例配置文件(vsftpd.conf)
本地用户的各部分功能设置为:(注意,本地用户模式编译不要选择pam模块)
用户控制
anonymous_enable=NO 禁用匿名用户
no_anon_password=YES 需要密码
anon_root=/var/ftp 匿名用户的默认主目录
local_enable=NO 禁用本地用户
local_root=webdisk 本地用户的主目录(相对路径是相对于用户的家目录,绝对路径是所有用户都只能登录到这个目录下比如:/localftp)
guest_enable=NO 禁用gust用户
ftp_username=ftp 匿名用户的用户名(默认还有anonymous可使用)
权限控制
write_enable=YES 本地用户可写
local_umask=022 上传文件的umask
file_open_mode=0666 使用文件的方式
anon_upload_enable=NO 匿名用户不可以上传
anon_mkdir_write_enable=NO 匿名用户不可以建目录等写操作
anon_other_write_enable=NO 匿名用户不可以做其他的写操作
anon_world_readable_only=YES 匿名用户可以读文件
#chown_uploads=YES 修改上传的文件的属主
#chown_username=ftpadmin 修改上传的文件的属主为XXX
ascii_upload_enable=NO 不使用ascii上传文件
ascii_download_enable=NO 不使用ascii下载文件
secure_chroot_dir=/usr/share/empty 默认值
超时控制
idle_session_timeout=600 空闲超时600秒
data_connection_timeout=120 传输超时120秒
accept_timeout=60 pasv模式等待时间60秒
connect_timeout=60 port模式等待时间60秒
服务控制
xferlog_enable=YES 启动日志功能
xferlog_std_format=YES 使用标准日志格式
xferlog_file=/var/log/vsftpd.log 日志默认的位置
pasv_enable=YES 启用被动模式
#port_enable=YES 启用主动模式
#注意此处pasv和port只能写一个,不能一个YES,另一个NO,要想让另一个不起作用,只能用#注释掉,否则会出错。
tcp_wrappers=YES 启用tcp_wrappers功能
nopriv_user=nobody 最低权限用户
listen=YES 使用standalone 模式(推荐的)
显示信息
ftpd_banner=welcome to ftp. 登录时的欢迎信息
dirmessage_enable=YES 启动切换目录时提示目录信息的功能
message_file=.message 目录提示信息的内容文件
文件权限设置
chroot_list_enable=YES 启动用户目录限制功能
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list 此文件中的用户不能改变到其他外层目录中。
userlist_enable=YES 启动用户限制功能
userlist_deny=YES userlist文件中的用户禁止登录,NO的话则只有userlist中用户可以登录
userlist_file=/etc/vsftpd/vsftpd.user_list 禁止登录用户列表文件名和位置(可自定义)
user_config_dir=/etc/vsftpd/userconf/ 对个别用户特殊设置的配置文件的目录(在此目录下建立对应“用户名”的文件,文件里写
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES 等权限信息,此用户将有这里所写的权限)
连接选项
max_clients=100 最大连接数
max_per_ip=5 每个ip最大连接数
connect_from_port_20=YES 启用20端口传输数据
#listen_address=192.168.0.2 指定监听的ip地址,如果你有多个ip的话
listen_port=21 监听的端口号
ftp_data_port=20 数据传输端口号
pasv_max_port=40000 被动模式的端口号的上限(0为不限)
pasv_min_port=30000 被动模式的端口号的下限(0为不限)
数据传输速度
anon_max_rate=51200 匿名用户最大传输率
local_max_rate=5120000 本地用户最大传输率
(具体ip限制可以在/etc/hosts.allow,/etc/hosts.deny中设置
还可以对每个用户进行磁盘限额,这里就不做了)
********************实 例******************************************
采用本地用户实现ftp功能,虚拟用户的设置太复杂了,又涉及到pam和db,这两个东东都没搞过,影响vsftp的学习,再说localuser基本能满足需要了
假设要实现如下功能:
系统中存在如下用户:
拒绝登录的用户: denyuser1
不能chroot的用户:unchrootuser
不允许上传的用户:deny_upload
普通用户: normaluser
(用户名设的过长了,不过还能用)
普通用户可以ftp登录到各自的HOME目录中,可以转到其他目录,允许上传下载,
不允许上传的用户,需要单独的配置文件来限制其不能上传;(/etc/vsftpd/deny_upload)
不能chroot的用户,只能登录限定的目录中。(/etc/vsftpd/unchroot)
拒绝登录的用户在拒绝登录列表中(/etc/vsftpd/denyuser)
权限设置部分:
write_enable=YES
anon_mkdir_write_enable=YES 匿名用户不可以建目录等写操作
anon_other_write_enable=YES 匿名用户不可以做其他的写操作
anon_world_readable_only=YES 匿名用户可以读文件
userlist_enable=YES 启动用户限制功能
userlist_deny=YES userlist文件中的用户禁止登录,NO的话则只有userlist中用户可以登录
userlist_file=/etc/vsftpd/denyuser 禁止登录用户列表文件名和位置(在denyuser文件中加入一行denyuser1)
chroot_list_enable=YES 启动用户目录限制功能
chroot_list_file=/etc/vsftpd/unchroot 此文件中的用户不能改变到其他外层目录中。(加入一行unchrootuser)
user_config_dir=/etc/vsftpd/userconf/ 对个别用户特殊设置的配置文件的目录(在此目录下建立deny_upload的文件,文件里写
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO 我觉得只要把write_enable设成NO,下边的不用管就行了,不过考虑到安全还是都改成NO了)
然后就是建立相应的用户,修改配置文件,启动vsftpd,测试一把了。
阅读(876) | 评论(0) | 转发(0) |