首页 > Linux操作系统 > Linux操作系统 > vsftp vuser虚拟用户
虚拟用户:为了保证系统的安全性,现对系统中vsftpd服务进行调整,主要为禁止OS本地账户直接登录,采用虚拟账户;
在vsftpd服务器中支持3类用户,分别是匿名用户,本地用户,和虚拟账户。用途及区别如下。
1)、匿名用户:名为anonymous 或ftp 的FTP 用户,匿名FTP 用户登录后将FTP 服务器中的/var/ftp 作为FTP 根目录。匿名用户通常用于提供公共文件的下载,如架设公共软件下载的FTP 服务器,所有人都可以使用匿名用户进行软件下载。
2)、本地用户:账号是系统用户账号(/etc/passwd),使用FTP 本地用户账号登录FTP 服务器后,登录目录为本地用户的宿主目录。本地FTP用户账号通常和Web 服务器一起提供虚拟主机服务,作为网页虚拟主机更新网页的途径。
3)、 虚拟用户:账号是为了保证FTP 服务器的安全性,由vsftpd 服务器提供的非系统用户账号,相对于FTP的本地用户来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源。虚拟用户FTP 登录后将把指定的目录作为FTP 根目录。虚拟用户与本地用户具有类似的功能,由于虚拟用户账号具有较高的安全性,可以替代本地用户账号使用。
安装使用手册如下:
1.安装软体
yum install vsftpd
2.设置开机启动
systemctl enable vsftpd
3.vsftp 安装完成后,默认配置文件如下:
|
/etc/vsftpd/vsftpd.conf |
VSFTP 主配置文件 |
|
/etc/rc.d/init.d/vsftp |
VSFTP 启动脚本,独立 (S tand alone) 服务模式 |
|
/etc/pam.d/vsftpd |
PAM 认证文件(此文件中 file=/etc/vsftpd/ftpusers > 指的是阻止该文件中用户访问 |
|
/etc/vsftp/ftpusers |
禁止使用vsftp的ftp用户列表 |
|
/etc/vsftp/user_list |
禁止或者允许使用vsftp的ftp用户列表(根据主配置文件来定) |
|
/var/ftp |
匿名登陆用户主目录 |
|
/var/log/xferlog |
vsftp 日志文件 |
4.创建虚拟用户口令库
4.1 建立虚拟用户的口令文件,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令
4.2 修改主配置文件
mv vsftpd.conf vsftpd.conf.bak
grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
vi /etc/vsftpd/vsftpd.conf 内容如下:

anonymous_enable=NO # (是否允许匿名登录FTP 服务器,默认设置为YES 允许,即用户可使用用户名ftp 或anonymous 进行ftp 登录,口令为空。如不允许匿名访问设置为NO)
local_enable=YES # (是否允许本地用户登录FTP服务器,默认设置为YES允许,本地用户登录后会进入指定的用户主目录,而匿名用户登录后进入匿名用户的下载目录/var/ftp/pub;设置虚拟账户必须设会YES)
write_enable=YES #(决定是否允许一些FTP命令去更改文件系统。包括上传文件,删除文件,新增目录,删除目录)
local_umask=022 #(设置本地用户的文件掩码为缺省022,得到上传文件的初始权限)
file_open_mode=0775 #(对于上传的文件设定权限。默认为0666,如果你想被上传的文件可被执行,umask要改成0777,与local_umask配合使用))
anon_umask=002
dirmessage_enable=YES
connect_from_port_20=YES
xferlog_enable=YES # (默认值为NO如果启用此选项,系统将会维护记录服务器上传和下载情况的日志文件,默认情况该日志文件 为/var/log/vsftpd.log,也可以通过下面的xferlog_file 选项对其进行设定)
xferlog_std_format=no
log_ftp_protocol=yes
reverse_lookup_enable=NO
dual_log_enable=YES
xferlog_file=/ftplog/log/xferlog #(设定系统维护记录FTP 服务器上传和下载情况的日志文件,/var/log/vsftpd.log是默认的,也可以另设其它)
vsftpd_log_file=/ftplog/log/vsftpd.log
#
listen=NO #(如果设置为YES,则 vsftpd 将以独立模式运行,由vsftpd 自己监听和处理连接请求)
listen_ipv6=YES #(设定是否支持IPV6)
#
userlist_enable=YES #(此选项默认值为NO,则不启用user_list文件;若此项设为YES ,则启用user_list 文件,而如果同时设置了 userlist_deny=YES ,则 user_list 文件中的用户将不允许登录FTP 服务器,甚至连输入密码提示信息都没有,直接被FTP 服务器拒绝,如果userlist_deny=NO,将则只允许user_list文件中的用户登陆FTP服务器)
tcp_wrappers=YES #(表明服务器使用tcp_wrappers作为主机访问控制方式)
guest_enable=YES # (如果启用,所有的非匿名用户登录时将被视为游客,其名字将被映射为guest_username里所指定的名字。采用虚拟用户必须设置该选项)
guest_username=ftpvuser #(设置当游客进入后,其将会被映射的名字。这里设置为“ftpvuser”,即虚拟用户登陆ftp后被映射的本地用户名)
pam_service_name=vsftpd.vu #( 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/目录下 )
user_config_dir=/etc/vsftpd/vuser_dir #(使用虚拟用户配置文件的目录)
allow_writeable_chroot=YES #开启限制在用户的家目录中。
>
#
#ftpd_banner=Welcome to V3 CIM DFS service. ##欢迎信息
#
#banned_email_file=/etc/vsftpd/banned_emails
max_clients=1000 #同时最多连接客户端数
anon_max_rate=15728640 #设置匿名用户每条连接最大上传或下载速率单位Bytes
local_max_rate=15728640 # 设置本地用户每条连接最大上传或下载速率单位Bytes
max_per_ip=1000 #每个IP限制登陆的客户端数
4.3 建立虚拟用户的口令文件,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令。
vi /etc/vsftpd/ ftpvuser

4.4 生成虚拟用户的口令库,(db_load)
db_load -T -t hash -f ftpvuser ftpvuser.db
其中,“ -f ” 命令选项设置的是虚拟用户的口令文件,即上面新建的 ftpvuser ,最终生成口令库文件 ftpvuser.db
并修改其属性,
chmod 600 ftpvuser.db
4.5 修改认证文件
vi /etc/pam.d/vsftpd .vu

vi /etc/pam.d/vsftp

5. 创建本地用户组及用户,创建目录及配置权限
groupadd -g 8000 ftpgrp
useradd -g ftpgrp -s /sbin/nologin -u 8000 ftpvuser
chown -R ftpvuser:ftpgrp /ftproot/
chown root:ftpgrp /ftplog/*/
chmod 755 /ftplog/*/
6.管控单独用户权限
从上面的配置中可以看到,我把“ write_enable” 和“ download_enable” 参数都设置为 NO ,那 ftp 用户该如何进行文件的传输呢?其实,这里为了管控权限,在主配置文件中都设置为“ NO” ,然后再对每个 ftp 用户进行单独的控制,分别对应单独的配置文件,从而保证权限分配的合理性及安全性。
其中 user_config_dir 参数指定了定义用户配置文件的目录,在这里只需要在 user_config_dir 中建立以 ftp 用户名命名的文件,内容为数据传输和用户权限。里面设置个人的合适的选项,就可以保证不同的虚拟用户获得不同的权限。
6.1 新建 user_config目录,路径为 /etc/vsftpd/vuser_dir
touch qmadmin
vi qmadmin

7. 重启服务 , 完成。
service vsftpd restart
另外:
将允许的命令写在cmds_allowed=后面。命令之间用,分隔,整条参数没有空格,且全是大写。
比如:
cmds_allowed=ABOR,CDUP,CWD,DELE,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,TYPE,USER,,ACCT*,APPE,CDUP,HELP,MODE,NOOP,REIN*,STAT,STOU,STRU,SYST
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST
参数详解:
ABOR – abort a file transfer
CWD – change working directory
DELE – delete a remote file
LIST – list remote files
MDTM – return the modification time of a file
MKD – make a remote directory
NLST – name list of remote directory
PASS – send password
PASV – enter passive mode
PORT – open a data port
PWD – print working directory
QUIT – terminate the connection
RETR – retrieve a remote file
RMD – remove a remote directory
RNFR – rename from
RNTO – rename to
SITE – site-specific commands
SIZE – return the size of a file
STOR – store a file on the remote host
TYPE – set transfer type
USER – send username
less common commands:
ACCT* – send account information
APPE – append to a remote file
CDUP – CWD to the parent of the current directory
HELP – return help on using the server
MODE – set transfer mode
NOOP – do nothing
REIN* – reinitialize the connection
STAT – return server status
STOU – store a file uniquely
STRU – set file transfer structure
SYST – return system type
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29551564/viewspace-2932209/ ,如需转载,请注明出处,否则将追究法律责任。