since.2006  

如果vps是个人使用,完全可以没必要装ftp,上传文件可以用winscp搞定。但有时候要帮朋友放个小站而又不希望开放太多的权限时ftp就派上用场了,这次选中的ftp服务器是vsftp,支持虚拟用户,可以限制虚拟用户访问目录,这两个功能正是俺需要的。

登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。

  • 匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。
  • 本地用户登录:使用系统用户登录,在/etc/passwd中。
  • 虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。

虚拟用户登录+本地数据文件正好实现俺要的需求。

安装vsftp:

[root@TokyoHot ~]# yum install vsftpd

添加虚拟用户:

[root@TokyoHot ~]# vi /etc/vsftpd/vftpuser.txt

内容:

kaede       # 用户名
123456     # kaede的密码
SolaAoi      # 用户名
456789     # SolaAoi的密码

将vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件:
如果没有安装db4-utils要先安装一把:

[root@TokyoHot ~]# yum install db4-utils

转换成系统识别的口令认证文件:

[root@TokyoHot ~]# db_load –T –t hash –f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db

编辑vsftpd的PAM认证文件:

[root@TokyoHot ~]# vi /etc/pam.d/vsftpd

将里面其他的都注释掉,添加下面这两行:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser

配置vsftpd.conf(设置虚拟用户配置项):

[root@TokyoHot ~]# vi /etc/vsftpd/vsftpd.conf

内容:

anonymous_enable=NO #禁用匿名用户
guest_enable=YES #开启虚拟用户
guest_username=ftp #FTP虚拟用户对应的系统用户
pam_service_name=vsftpd #PAM认证文件
anon_world_readable_only=NO #开放虚拟用户下载权限
anon_upload_enable=YES #开放虚拟用户上传权限
anon_mkdir_write_enable=YES #开放虚拟用户创建目录的权限
anon_other_write_enable=YES #开放虚拟用户删除和重命名的权限
user_config_dir=/etc/vsftpd/vsftpd_user_conf #具体每个虚拟用户的配置信息存放目录
anon_umask=022 #新建的目录 权限是755,文件的权限是 644

上面配置中的guest_username=ftp,其中ftp是系统中已经存在的用户名,centos默认已经创建了这个用户。

配置具体某个虚拟用户的信息(文件名和用户名一致):

[root@TokyoHot ~]# vi /etc/vsftpd/vsftpd_user_conf/kaede

内容:

local_root=/srv/www #限制kaede的访问目录只能是/srv/www目录

配置完成,重启下ftp服务器测试。

 

Posted by hee at 21:11 PM | Permalink | 评论(0)