想搭建vsftpd服务先熟悉一下下面的内容
A: vsftp 的三种访问方式
1.匿名登陆
使用用户名 ftp或anonymous登陆
登陆的ftp的目录为/var/ftp 目录
2.本地用户登陆
使用系统用户帐号和口令登陆ftp服务器
登陆ftp服务后的目录为用户的宿主目录 /home/用户名,可以转换到系统中的其它目录
3.虚拟用户登陆
使用独立的文件保存虚拟账号,安全性比较好可一替代本地用户
B: 搭建vsftp服务的时候最好先把iptable 和 SELINUX 关掉不然会出现不能访问的情况,
C:每次修改vsftp的配置文件 vsftpd.conf 必须重启vsftpd服务才能生效!
D:学习一下vsftpd服务的文件结构和主配置文件vsftpd.conf 的常用的配置参数.可以参考鸟哥的vsftpd 服务器基础. http://vbird.dic.ksu.edu.tw/linux_server/0410vsftpd_2.php
下面就开始安装vsftpd服务了.
一 安装vsftpd服务
yum install vsftpd
安装以后直接启动vsftp服务 命令:service vsftpd start
在vsftpd.conf 默认设置下,匿名用户和本地用户都可以登陆vsftpd服务器的!只是这两种用户登陆后的根目录不一样,匿名用户在/etc/ftp目录下面,本地用户会登陆到自己的家目录/home/用户名 下面. 但是本地用户可以切换到其它的目录,不怎么安全啊,我们可以在vsftpd.conf文件中限制本地用户不能离开自己的家目录,具体的方法还是 看鸟哥的 vsftpd 服务器基础. http://vbird.dic.ksu.edu.tw/linux_server/0410vsftpd_2.php 讲的真的很详细啊! 特别是vsftpd.conf 配置文件参数的讲解按照 与服务器环境较相关的设定值; 与本地用户相关的设定值; 与匿名相关的设定值; 与系统安全相关的设定值.这几部分分开学习很容易明白!
注意! 给匿名用户和本地用户上传权限的时候 对应的上传到目录的其它用户得有写的权限. 但是/var/ftp 目录的其它用户不能有写权限,如果设置有写权限将无法访问.说不明白看实例: 在/var/ftp 目录下有几个目录!如下
[root@clear ftp]# ll 总用量 16
drwxr-xr-x 3 root root 4096 3月 26 18:42 down
drwxr-xr-x 2 root root 4096 3月 26 18:08 new
drwxr-xr-x 2 root root 4096 3月 1 18:16 pub
drwxr-xrwx 3 root root 4096 3月 26 20:04 up
只有up这个目录 其它用户有写的权限! 如果在vsftpd.conf文件中设置了匿名用户有上传权限,那么用户能在up目录里上传和下载,在其它三个目录里只能下载不能上传!
如果ftp这个目录其它用户有写的权限,如下.那么ftp服务器将无法登陆!
drwxr-xrwx 6 root root 4096 3月 26 18:08 /var/ftp/
按照鸟哥的资料配置匿名访问和本地用户访问以及常用参数的设置都应该没问题! 我主要记录一下虚拟用户登陆!
vsftpd虚拟用户帐号的设置!
1.建立虚拟用户口令库文件
#vim logings.txt # 库文件名可以随意起,
用户名 #内容奇数行是用户名
密码 #偶数行是密码
zhang3
123456
2.生成vsftpd的认证文件(用户名密码数据库文件)
#db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
#chmod 600 /etc/vsftpd/vsftpd_login.db
3.建立虚拟用户所需的PAM配置文件!
#vim /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login.db
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login.db
64位系统的pam_userdb.so文件在/lib64/security/下面!!!!!
4.建立虚拟用户访问的目录平配置相应的权限.
建立所有FTP虚拟用户使用的系统用户帐号,并设置该帐号宿主目录的权限
useradd -d /home/ftpsite virtual(用户) #不给virtual账户添加密码!!
chmod 700 /home/ftpsite (宿主目录) #所有虚拟用户登陆后都到这个目录!
5.设置vsftpd.conf配置文件.
在配置文件中添加虚拟用户的配置内容
guest_enable=YES #启用虚拟用户
guest_username=virtual #虚拟用户使用的系统帐号
pam_service_name=vsftpd.vu #认证文件
user_config_dir=/etc/vsftpd/vsftpd_user_conf #限制虚拟用户权限的目录
6.给不同的虚拟用户设定不通的权限
vsftpd.conf 配置文件里面的这一行参数指定了限制虚拟用户权限的目录在哪里!! user_config_dir=/etc/vsftpd/vsftpd_user_conf
vsftpd_user_conf 目录里面的文件名必须和logings.txt文件里面的虚拟用户名一样! 用各自的文件限制各自的权限! 内容如下
[root@clear vsftpd_user_conf]# cat zhang3
anon_world_readable_only=NO #权限不仅是只读,用户可以浏览下载
anon_other_write_enable=YES #可以删除.修改
anon_mkdir_write_enable=YES #可以创建文件和目录
anon_upload_enable=YES #可以上传
注意:vsftpd.conf配置文件里面的anonymous_enable=YES local_enable=YES guest_enable=YES 这三项同时开启时! 匿名用户登陆后在/var/ftp目录下;虚拟用户登陆后在/home/ftpsite目录下; 本地用户是无法登陆的因为参数 pam_service_name=vsftpd.vu 改变了!!
7. 使用虚拟用户登陆,必须在vsftpd.conf配置文件中开启 "local_enable=YES" 选项,否者无法使用虚拟帐号登陆!
报错:500 OOPS: vsftpd: both local and anonymous access disabled!
配置文件如下:
[root@clear vuftp]# cat /etc/vsftpd/vsftpd.conf | grep -v '^#'
anonymous_enable=NO
local_enable=YES #注意使用虚拟用户登陆这个选项必须YES.即必须开启本地用户登陆.
write_enable=YES
local_umask=022
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
guest_enable=YES #开启虚拟帐号访问
guest_username=vuftp #使用虚拟帐号时用本地帐号vuftp来顶替!
pam_service_name=vsftpd.vu #认证文件
user_config_dir=/etc/vsftpd/vsftpd_user_conf #存放虚拟用户限制各自权限的配置文件
tcp_wrappers=YES # 支持tcpwrappers的防火墙机制.
8.重新启动vsftpd服务程序.
service vsftpd restart
参考http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE