[[150070]]
在使用Linux时,户登难免要进行各种文件的安装远程传输,比如:网站的配置代码,共享资源等,拟用而这其中用的户登最多的传输方法大概就是FTP了。Linux下可用FTP服务端是安装非常多的,vsftp,配置 proftp, uw-ftp等,其中vsftp流行度比较广,拟用冲着这个,本人在自己的CentOS上也就选择了vsftp,而且,vsftp支持PAM(pluggable authentication modules)下虚拟用户设置,这正是Mitchell Chu比较喜欢的一种方式,接下来就请vsftp君上场。
Vsftp使用的用户中,支持三种用户模式,分别是:实体用户,匿名用户和虚拟用户(guest
, 亦称访客身份)。实体用户(Real User)是指用户本身存在于系统中的用户,他们存在于/etc/passwd和/etc/shadow文件中。匿名用户(Anonymous)是指客户 端无需提供任何用户身份,ftp为访问者提供一个名为anonymous的特殊用户以供其使用。虚拟用户(Virtual User)个人理解是一种介于实体用户和匿名用户之间的用户。原因是:虚拟用户虽然在系统的实体用户文件中不存在,但是会在系统的其他地方进行记录(本文是Berkeley DB),以供vsftp用来对ftp访问者进行必要的鉴权,而鉴权完毕之后,该用户操作文件之时,将是使用vsftp的运行用户ftp进行的。由于实体用户需要的是系统真实帐户,开放这种权限无疑会增加系统的风险,而虚拟用户使用的是和实体用户不同的用户验证体系,并且,在系统中并不实际存在虚拟用户到实体用户的映射关系,因此降低了FTP给系统带来的风险性,在实际生产环境中,虚拟用户可以更加灵活的进行独立管理,比如:虚拟主机需要给用户提供FTP帐 户。有这么些好处之后,让我们看看是如何配置吧!
预备式
Berkeley DB
数据库:用来存储虚拟用户的登录信息。
pam_userdb.so
:用来验证虚拟用户。
db4_utils
:用来转换虚拟用户到DB数据的工具。
安装需要的包
CentOS中好像是默认自带vsftp的,因此,无需安装,如果你不确认,可以用which
看下:
- which vsftpd
- # 如果安装好了的话,应该是有类似下面的输出:
- # /usr/sbin/vsftpd
- # 如果没安装,则类似下面的输出
- # /usr/bin/which: no xd in (/home/limituser...
没有安装的话,请安装:
- yum install vsftpd
- # 或者: yum -y install vsftpd
当然,清空下yum
的缓存亦可:
- pushd /etc/yum.repos.d/
- rm -rf *
- wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo
- yum clean all
- yum -y install vsftpd ## 这句还是重点.
为了简单,我们可以一次性安装所有需要的包:
- yum install db4-utils db4 vsftpd
- ## Mitchell Chu提醒:有的就不用再安装了,请自行增减
创建虚拟用户
虚拟用户我们使用Berkeley DB数据库来存储。***步是创建纯文本来添加用户和密码,用户名和密码各占一行。比如我们要创建:useasp
的用户名,密码是blog.useasp.net
,并且创建一个admin
密码是adminpasswd
的用户,那么,纯文本将类似如下:
- pushd /etc/vsftpd
- cat >vusers.txt
- useasp
- blog.useasp.net
- admin
- adminpasswd
创建好vusers.txt
后,我们需要的第二步是将纯文本转换为db文件,这时候需要使用到db_load
了:
- db_load -T -t hash -f vusers.txt vsftpd-virtual-users.db
为了安全起见,记得设置仅root
可读写(当前是root
):
- chmod 600 vsftpd-virtual-users.db
再清理掉原来的纯文本文件:
- rm vusers.txt
此时,我们已经将需要登录FTP的用户已经准备好了,接下来就需要去配置vsftpd,让vsftpd能够正确的识别并支持已经设置好虚拟用户了。
VSFTPD虚拟用户的配置
找到vsftpd.conf
配置文件,添加或修改下面这些配置选项:
- # 禁止匿名登录
- anonymous_enable=NO
- anon_upload_enable=YES
- anon_other_write_enable=YES
- # 启用本地用户
- local_enable=YES
- # 虚拟用户使用本地用户权限
- virtual_use_local_privs=YES
- # 可写
- write_enable=YES
- # PAM配置
- pam_service_name=vsftpd
- # 启用虚拟用户
- guest_enable=YES
- # 用户后缀: 配合下面local_root使用,将会用登录的用户名替换掉$USER
- user_sub_token=$USER
- # 根目录
- local_root=/var/ftp/$USER
- # 启用chroot,登录后会被定位到指定根目录
- chroot_local_user=YES
- # 将所有的用户和组显示为ftp
- hide_ids=YES
vsftpd的配置文件是在/etc/vsftpd/vsftpd.conf
,原有配置项可以保留默认值,如果需要日志,vsftpd有两个日志可供使用,一个是标准xferlog格式的,一个是vsftpd格式的,可读性后者更好,当然,你也可以两个日志都启用,要启用可以设置:xferlog_enable
, xferlog_std_format
, xferlog_file
, vsftpd_log_file
等参数以获得需要的日志效果。
#p#
虚拟用户的PAM配置
要针对虚拟用户启用PAM,我们还需要对PAM尽心配置,在上面的vsftpd配置文件中,我们使用pam_service_name
来配置了PAM将使用的配置文件,这个文件安装后是默认存在的,如果你觉得有必要保留原来的配置,可以先行备份一份,而后配置文件内容改为如下:
- #%PAM-1.0
- auth required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users
- account required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users
- #session required pam_loginuid.so
要启用session
可以将上面的#注释掉,如果是在32位系统下,网上有一个配置方法是下面这种:
- #%PAM-1.0
- auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users
- account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users
由于本人对Linux下的PAM并不是很了解,并不太了解required
和sufficient
的区别,这里不好做过多的论断,有了解的可以指点一下,谢谢!
PAM配置里面,是指明账户保存的所在位置,我们配置文件里面的路径即是前面使用db_load
创建的Berkeley DB的文件路径。
创建FTP目录
前面vsftpd已经配置了ftp的目录,我们需要先行创建FTP根目录,和用户需要的目录,因为一旦这些用户登录,将会被vsftpd重新定位到指定的home目录下的,vsftpd中我们配置的是/var/ftp
,因此我们需要确认此目录是否存在,不存在我们就需要创建,而后,在此目录下创建虚拟用户的根目录,目录名称就是用户名称。
- mkdir -p /var/ftp/{ useasp,admin}
- chown -R ftp:ftp /var/ftp
为了保证能够顺利读取到文件,我们将根目录下的所有文件都变成ftp这个用户所有——ftp账户系统已经默认设置好了,vsftpd就是使用这个账户来操作的。
重启FTP服务,测试FTP
按上面的流程配置完后,我们就可以重新启动vsftpd服务,让新的配置生效——如果你没有办法使用此命令,请参看后面的省却麻烦一节,将vsftpd设置成为开机启动服务:
- service vsftpd restart
重启之后,理论上来说,应该就能使用FTP客户端访问FTP服务器了,如果需要测试,你也可以直接在本机访问测试下:
- ftp 127.0.0.1
此时应该能够得到正常返回,类似如下:
- Connected to 127.0.0.1 (127.0.0.1).
- 220-Welcome to Mitchell Personal Web Server(MPWS)
- 220-Please use user name and password to login...
- 220-if you have any question, please contact MitchellChu<
(责任编辑:焦点)
MSCI新增12个中国指数 境内外资金加大MSCI指数基金的布局
651家上市公司拟派发“红包”超4700亿 部分“大手笔分红”存隐忧
再添电力新动能!国内最大在建火电项目首台百万千瓦机组投产发电
PLATT NERA(01949.HK)发布公告:年度收益减少2.4%
中国内地共有198家游戏企业上市 目前仍有10余家游戏企业排队上市
同仁堂科技(01666.HK)全年归母净利上升11.95% 每股收益为人民币0.37元