热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

CentOS安装vsftpd以及设置匿名用户,本地用户和虚拟用户的方法

1.vsftpd的安装1.1首先确定下有没安装过。执行命令。rpm-qvsftpd假如已经安装了那么会显示你已经安装的版本。比如我执行命令后显示vsftpd-2.0.5-21.el51.2没有安装那么执行yuminstallvsftpd#安装vsftpd要是你想卸载当前的版本,那么yumuninstal
1.vsftpd的安装
1.1 首先确定下有没安装过。执行命令。
rpm -q vsftpd假如已经安装了那么会显示你已经安装的版本。比如我执行命令后显示
vsftpd-2.0.5-21.el51.2 没有安装那么执行
yum install vsftpd #安装vsftpd要是你想卸载当前的版本,那么
yum uninstall vsftpd #卸载vsftpd
运行vsftpd方法。
service vsftpd start #vsftpd已经安装为服务了。可以直接通过这种方式运行。
service vsftpd stop #通知运行vsftpd
service vsftpd restart #重新运行vsftpd ,当你更改了一些设置后要用重新运行,设置才会生效。
chkconfig vsftpd on #把vsftpd加入到开机启动里。
chkconfig --list #查看下vsftpd是否加入。如果2-5都为ON则表示加入到开机启动中了。

2.设置vsftpd
默认设置的文件放在/etc/vsftpd/vsfpd.conf
要是找不到可以用find命令
find /-name "vsftpd.conf"
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #首先备份一下设置文件.
3.vsftpd支持三种用户访问方式。
第一种是匿名访问模式。
第二种是本地用户模式。
第三种是虚拟用户模式。

3.1 匿名访问模式
vi /etc/vsftpd/vsftpd.conf #打开配置文件,并且更改为如下设置。
anonymous_enable=YES #是否允许匿名访问。
write_enable=YES #允许所有用户写入。
anon_upload_enable=YES #是否允许匿名用户上传文件
anon_mkdir_write_enable=YES #是否允许匿名用户建立文件夹
保存。然后重启vsftpd .
service vsftpd restart
测试登录:
ftp
open 127.0.0.1
如果出现连接拒绝。可能是防火墙或者selinux阻止
vi /etc/sysconfig/iptables #打开防火墙配置文件
#在最后面加上下面这行
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21-j ACCEPT # 允许开放端口21,这个端口是FTP的默认端口。
service iptables restart # 重启防火墙使设置生效。
这样应该就可以登录上了。然后验证是否可以上传下载文件。以及建立文件夹。要是不行的话
setsebool ftpd_disable_trans 1#关闭selinux 的ftp设置。
chmod 755 /opt/var/ftp #设置文件夹权限
service vsftpd restart #重启
登录后的目录是匿名用户的目录/opt/var/ftp

3.2 本地用户模式
vi /etc/vsftpd/vsftpd.conf #打开设置文件
local_enable=YES #允许本地用户登录,要使用虚拟用户那么这项也必须开启。
chroot_local_user=YES #使用户登录后锁定在主目录下。
#在最后增加下面这行
user_config_dir=/etc/vsftpd/vconf #每个本地用户的配置文件。在这里面可以设置用户登录后的文件夹。以及特定的权限。
#保存退出。
#接下来增加ftp用户
useradd -g www -d /opt/var/ftp -s /sbin/nologin -M ftp_user #这种方式下添加用户,使得只有FTP登录的权限.不能登录系统.
###############关于useradd 命令#####################
1.作用
useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是终极用户。
2.格式
useradd [-d home][-s shell][-c comment][-m [-k template]][-f inactive][-e expire ][-p passwd][-r] name
3.主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。 
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。

4.说明
useradd可用来建立用户账号,他和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,
实际上是保存在/etc/passwd文本文件中。

5.应用实例
建立一个新用户账户,并设置ID:
#useradd caojh -u 544
需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特别用户,一般0到499之间的值留给bin、mail这样的
系统账号。
####################################################
#建立本地用户的FTP设置文件。
touch /etc/vsftpd/vconf/ftp_user #在user_config_dir设置的目录下新建一个与要登录的用户同名的用户文件。
vi /etc/vsftpd/vconf/ftp_user #编辑配置
#按需要增加下面几个设置
local_root=/data/www #设置本地用户登录后的主目录。
#保存后重启vsftpd
service vsftpd restart

3.3 虚拟用户模式。
3.3.1 添加虚拟用户口令文件
vi /etc/vsftpd/vftpuser.txt #新建存放虚拟用户密码帐号原始文件
格式为:一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。
hahahahh #用户名
abc123abc123 #密码
bbababbaba #用户名
aaaaaa # 密码
3.3.2 生成虚拟用户口令认证文件
将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。
rpm -qa |grep db4-utils要是没有安装则
rpm ?ivh db4-utils-4.3.29-9.fc6.i386.rpm然后使用db_load命令将刚才的用户密码文件生成虚拟用户口令认证文件。
db_load ?T ?t hash ?f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db3.3.3 编辑vsftpd的PAM认证文件使它使用我们刚才新建的认证文件
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
#保存。
3.3.4 配置vsftpd.conf
vi /etc/vsftpd/vsftpd.conf #编辑vsftpd主配置文件
guest_enable=YES #开启虚拟用户
guest_username=ftp_user #FTP虚拟用户对应的系统用户,就是刚才最先新建的那个帐号
pam_service_name=vsftpd #可选。PAM认证文件,这个要是没有就加上。
保存后重启vsftpd
sercvice vsftpd restart
4.一些相关的配置选项介绍
dirlist_enable=NO #是否允许所有用户可以浏览(列出文件列表)
dirmessage_enable=YES #当用户切换了目录时,是否通知该用户。
xferlog_enable=YES #是否启用日志。与下面这个合用
xferlog_file=/var/log/xferlog #指定日志的文件名。
#注意:使用日志的时候,可能会造成错误。尝试用命令
#rm /var/log/xferlog
local_root=/path #本地用户登陆服务器后直接进入的目录local_umask=022 #本地用户上传档案权限的 umask值
###############################
我们知道使用本地用户登录ftp后进入的是用户的主目录,locla_root这个参数 允许我们登录服务器后直接进入其它的目录。
Linux系统中的任何文件都是有权限值的,上传的文件也不例外,这个默认的权限值就由 local_umask参数指定。
其计算方法为:默认建立文件的权限+local_umask =0666默认建立目录的权限+local_umask =0777
由此我们可以看出,上传的文件无论如何都不可能有执行权限的。
###############################
local_max_rate= #本地用户传输速率单位为 bps
chmod_enable=NO #是否允许本地用户改变ftp 服务器上档案的权限
Listen_port=5555 #使用端口5555作为FTP端口。记得防火墙要打开这个端口。
ftpd_banner=Welcome to FTP SERVER #成功登录信息
idle_session_timeout=600 #可以设定默认的空闲超时时间,用户超过这段时间不动作将被服务器踢出。
data_connection_timeout=120 #设定默认的数据连接超时时间。
ascii_upload_enable=YES;ascii_download_enable=YES #默认情况下服务器会假装接受ASCⅡ模式请求但实际上是忽略这样的请求,
#启用上述的两个选项可以让服务器真正实现ASCⅡ模式的传输。这些ASCⅡ模式的设置选项分成上传和下载两个,
#这样我们就可以允许ASCⅡ模式的上传(可以防止上传脚本等恶意文件而导致崩溃),而不会遭受拒绝服务攻击的危险。
nopriv_user=ftpsecure #指定一个安全用户账号,让FTP服务器用作完全隔离和没有特权的独立用户。这是vsftpd系统推荐选项。
userlist_enable=NO #是否启用 userlist 功能模块
userlist_deny=NO #是否拒绝 userlist 文件中用户登陆 ftp 服务
userlist_file=/path/to/file #指定的 userlist 文件名
chown_uploads=YES #如果启用此项,则匿名用户上传文件的属主用户将改为别的用户账户,这里建议
#不要指定root账号为匿名上传文件的属主用户!
chown_username=whoever #当启用chown_uploads=YES时,所指定的属主用户账号,要用合适的用户账号来代替。
chroot_list_enable=YES #可以用一个列表限定哪些本地用户只能在自己目录下活动,
#如果chroot_local_user=YES,那么这个列表里指定的用户是不受限制的。
chroot_list_file=/etc/vsftpd.chroot_list #则指定该列表(chroot_local_user)的保存路径(默认是/etc/vsftpd.chroot_list)。
pasv_enable=YES #启用被动模式
pasv_min_port=30000#指定被动模式下的最小端口 pasv_max_port=30999 #指定被动模式下的最大端口,防火墙要允许通过
virtual_use_local_privs=YES #虚拟用户和本地用户有相同的权限;
max_clients=0#最大允许的同时在线用户数量,0表示无限制
max_per_ip=0#每个IP允许的用户数。
accept_timeout=#以pasv数据连接模式的时候,数据连接的超时;
connect_timeout=#以port模式连接数据连接时的超时时间
data_connection_timeout=300#数据连接后数据连接等待的空闲时间超时,超过时间后,数据连接将断开连接
idle_session_timeout=180#客户端隔多长时间不与服务器有交互ftp 命令,将自动断开 ftp 服务连接。
port_enable=YES #是否启用 port 模式
connect_from_port_20=YES #port 模式下是否默认使用固定的 20 端口,默认的好像是21端口。
ftp_data_port=21 #指定 port 模式的端口号
port_promiscuous=NO #是否使用安全的 port 模式,除非你确保服务器是与真正的客户端进行连接,否则不要将此参数值改

推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
author-avatar
周同学天天爬十楼7634
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有