ftp安装配置运行(转写)
来源:互联网 发布:视频vip解析接口源码 编辑:程序博客网 时间:2024/05/16 11:10
最开始,我在网上下载了vsftpd的源码进行编译,make的时候发现除了一大堆的问题。网上看看,发现是几个包没有安装,这是因为依赖包(libpam0g-dev libcap-dev libwrap0-dev libssl-dev )没有安装。安装好了之后就可以make了。当然我没有选这一条路,具体行不行不知道,但是估计是可以的。
我的虚拟机是CentOs ,我用了另外一个方法安装vsftpd。yum install vsftpd。
我的按照步骤的原文地址是:http://os.51cto.com/art/201001/178281.htm
就像文章所说的那样,
[root@ftp sbin]# yum install vsftpd
[root@ftp sbin]# service vsftpd status
vsftpd is stopped
[root@ftp sbin]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
上面的都是这样,也就是说我安装成功了。
这时候,在CentOs里面的/var目录下有一个ftp目录,这个目录里面默认的是有一个文件夹pub。这个就是我们登陆之后的进入的空间。ftp的配置文件在/etc/vsftpd这个目录下面。最重要的配置文件肯定是vsftpd.conf。里面有很多设置,可以供我们进行一些管理。比较详细的一个讲解这个文件的地址:http://www.ansen.org/vsftpd-configuration-detailed.html。
里面写的很详细,我这里借用一下。以便自己看看。
最近在试着在CentOS上面搭建vsftp,这是在网络上面找的比较全的vsftp配置文件解说,我自己看了后,基本上能独立完成它的搭建了,呵呵
vsftpd作为一个主打安全的FTP服务器,有很多的选项设置。下面介绍了vsftpd的配置文件列表,而所有的配置都是基于vsftpd.conf这个配置文件的。本文将提供完整的vsftpd.conf的中文说明。学习本文的内容将有助于你初步了解vsftpd的配置文件,但针对具体情况还需要制定具体的配置方法。
vsftpd的配置文件
/etc/vsftpd/vsftpd.conf
主配置文件
/usr/sbin/vsftpd
Vsftpd的主程序
/etc/rc.d/init.d/vsftpd
启动脚本
/etc/pam.d/vsftpd
PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)
/etc/vsftpd/ftpusers
禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)
/etc/vsftpd/user_list
禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下)
/var/ftp
匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录
/var/ftp/pub
匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)
/etc/logrotate.d/vsftpd.log
Vsftpd的日志文件
vsftpd的主配置文件/etc/vsftpd/vsftpd.conf说明(修改前先备份)
和Linux系统中的大多数配置文件一样,vsftpd的配置文件中以#开始注释。
# 是否允许匿名登录FTP服务器,默认设置为YES允许
# 用户可使用用户名ftp或anonymous进行ftp登录,口令为用户的E-mail地址。
# 如不允许匿名访问则设置为NO
anonymous_enable=YES
# 是否允许本地用户(即linux系统中的用户帐号)登录FTP服务器,默认设置为YES允许
# 本地用户登录后会进入用户主目录,而匿名用户登录后进入匿名用户的下载目录/var/ftp/pub
# 若只允许匿名用户访问,前面加上#注释掉即可阻止本地用户访问FTP服务器
local_enable=YES
# 是否允许本地用户对FTP服务器文件具有写权限,默认设置为YES允许
write_enable=YES
# 掩码,本地用户默认掩码为077
# 你可以设置本地用户的文件掩码为缺省022,也可根据个人喜好将其设置为其他值
#local_umask=022
# 是否允许匿名用户上传文件,须将全局的write_enable=YES。默认为YES
#anon_upload_enable=YES
# 是否允许匿名用户创建新文件夹
#anon_mkdir_write_enable=YES
# 是否激活目录欢迎信息功能
# 当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息
# 默认情况下,欢迎信息是通过该目录下的.message文件获得的
# 此文件保存自定义的欢迎信息,由用户自己建立
#dirmessage_enable=YES
# 是否让系统自动维护上传和下载的日志文件
# 默认情况该日志文件为/var/log/vsftpd.log,也可以通过下面的xferlog_file选项对其进行设定
# 默认值为NO
xferlog_enable=YES
# Make sure PORT transfer connections originate from port 20 (ftp-data).
# 是否设定FTP服务器将启用FTP数据端口的连接请求
# ftp-data数据传输,21为连接控制端口
connect_from_port_20=YES
# 设定是否允许改变上传文件的属主,与下面一个设定项配合使用
# 注意,不推荐使用root用户上传文件
#chown_uploads=YES
# 设置想要改变的上传文件的属主,如果需要,则输入一个系统用户名
# 可以把上传的文件都改成root属主。whoever:任何人
#chown_username=whoever
# 设定系统维护记录FTP服务器上传和下载情况的日志文件
# /var/log/vsftpd.log是默认的,也可以另设其它
#xferlog_file=/var/log/vsftpd.log
# 是否以标准xferlog的格式书写传输日志文件
# 默认为/var/log/xferlog,也可以通过xferlog_file选项对其进行设定
# 默认值为NO
#xferlog_std_format=YES
# 以下是附加配置,添加相应的选项将启用相应的设置
# 是否生成两个相似的日志文件
# 默认在/var/log/xferlog和/var/log/vsftpd.log目录下
# 前者是wu_ftpd类型的传输日志,可以利用标准日志工具对其进行分析;后者是vsftpd类型的日志
#dual_log_enable
# 是否将原本输出到/var/log/vsftpd.log中的日志,输出到系统日志
#syslog_enable
# 设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为600秒
# 即当数据传输结束后,用户连接FTP服务器的时间不应超过600秒。可以根据实际情况对该值进行修改
#idle_session_timeout=600
# 设置数据连接超时时间,该语句表示数据连接超时时间为120秒,可根据实际情况对其个修改
#data_connection_timeout=120
# 运行vsftpd需要的非特权系统用户,缺省是nobody
#nopriv_user=ftpsecure
# 是否识别异步ABOR请求。
# 如果FTP client会下达“async ABOR”这个指令时,这个设定才需要启用
# 而一般此设定并不安全,所以通常将其取消
#async_abor_enable=YES
# 是否以ASCII方式传输数据。默认情况下,服务器会忽略ASCII方式的请求。
# 启用此选项将允许服务器以ASCII方式传输数据
# 不过,这样可能会导致由"SIZE /big/file"方式引起的DoS攻击
#ascii_upload_enable=YES
#ascii_download_enable=YES
# 登录FTP服务器时显示的欢迎信息
# 如有需要,可在更改目录欢迎信息的目录下创建名为.message的文件,并写入欢迎信息保存后
#ftpd_banner=Welcome to blah FTP service.
# 黑名单设置。如果很讨厌某些email address,就可以使用此设定来取消他的登录权限
# 可以将某些特殊的email address抵挡住。
#deny_email_enable=YES
# 当上面的deny_email_enable=YES时,可以利用这个设定项来规定哪些邮件地址不可登录vsftpd服务器
# 此文件需用户自己创建,一行一个email address即可
#banned_email_file=/etc/vsftpd/banned_emails
# 用户登录FTP服务器后是否具有访问自己目录以外的其他文件的权限
# 设置为YES时,用户被锁定在自己的home目录中,vsftpd将在下面chroot_list_file选项值的位置寻找chroot_list文件
# 必须与下面的设置项配合
#chroot_list_enable=YES
# 被列入此文件的用户,在登录后将不能切换到自己目录以外的其他目录
# 从而有利于FTP服务器的安全管理和隐私保护。此文件需自己建立
#chroot_list_file=/etc/vsftpd/chroot_list
# 是否允许递归查询。默认为关闭,以防止远程用户造成过量的I/O
#ls_recurse_enable=YES
# 是否允许监听。
# 如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求
listen=YES
# 设定是否支持IPV6。如要同时监听IPv4和IPv6端口,
# 则必须运行两套vsftpd,采用两套配置文件
# 同时确保其中有一个监听选项是被注释掉的
#listen_ipv6=YES
# 设置PAM外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd文件
# 此文件中file=/etc/vsftpd/ftpusers字段,说明了PAM模块能抵挡的帐号内容来自文件/etc/vsftpd/ftpusers中
#pam_service_name=vsftpd
# 是否允许ftpusers文件中的用户登录FTP服务器,默认为NO
# 若此项设为YES,则user_list文件中的用户允许登录FTP服务器
# 而如果同时设置了userlist_deny=YES,则user_list文件中的用户将不允许登录FTP服务器,甚至连输入密码提示信息都没有
#userlist_enable=YES/NO
# 设置是否阻扯user_list文件中的用户登录FTP服务器,默认为YES
#userlist_deny=YES/NO
# 是否使用tcp_wrappers作为主机访问控制方式。
# tcp_wrappers可以实现linux系统中网络服务的基于主机地址的访问控制
# 在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp_wrappers的访问控制
# 前者设置允许访问记录,后者设置拒绝访问记录。
# 如想限制某些主机对FTP服务器192.168.57.2的匿名访问,编缉/etc/hosts.allow文件,如在下面增加两行命令:
# vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY
# 表明限制IP为192.168.57.1/192.168.57.9主机访问IP为192.168.57.2的FTP服务器
# 此时FTP服务器虽可以PING通,但无法连接
tcp_wrappers=YES
下面的内容将对一些限制和权限控制的选项进行更进一步的说明。
除了上述那些基本设定,我们还可以在vsftpd.conf文件中添加更多的安全选项。其中几个常用的如下:
限制最大连接数和传输速率
在FTP服务器的管理中,无论对本地用户还是匿名用户,对于FTP服务器资源的使用都需要进行控控制,避免由于负担过大造成FTP服务器运行异常,可以添加以下配置项对FTP客户机使用FTP服务器资源进行控制:
- max_client设置项 用于设置FTP服务器所允许的最大客户端连接数,值为0时表示不限制。例如max_client=100表示FTP服务器的所有客户端最大连接数不超过100个。
- max_per_ip设置项 用于设置对于同一IP地址允许的最大客户端连接数,值为0时表示不限制。例如max_per_ip=5表示同一IP地址的FTP客户机与FTP服务器建立的最大连接数不超过5个。
- local_max_rate设置项 用于设置本地用户的最大传输速率,单位为B/s,值为0时表示不限制。例如local_max_rate=500000表示FTP服务器的本地用户最大传输速率设置为500KB/s.
- anon_max_rate设置项 用于设置匿名用户的最大传输速率,单位为B/s,值为0表示不限制。例如ano_max_rate=200000,表示FTP服务器的匿名用户最大传输速率设置为200KB/s.
指定用户的权限设置
vsftpd.user_list文件需要与vsftpd.conf文件中的配置项结合来实现对于vsftpd.user_list文件中指定用户账号的访问控制:
(1)设置禁止登录的用户账号
当vsftpd.conf配置文件中包括以下设置时,vsftpd.user_list文件中的用户账号被禁止进行FTP登录:
userlist_enable=YES
userlist_deny=YES
userlist_enable设置项设置使用vsftpd.user_list文件,userlist_deny设置为YES表示vsftpd.user_list文件用于设置禁止的用户账号。
(2)设置只允许登录的用户账号
当vsftpd.conf配置文件中包括以下设置时,只有vsftpd.user_list文件中的用户账号能够进行FTP登录:
userlist_enable=YES
userlist_deny=NO
userlist_enable设置项设置使用vsftpd.user_list文件,userlist _deny设置为NO表示vsftpd.usre_list文件用于设置只允许登录的用户账号,文件中未包括的用户账号被禁止FTP登录。
userlist_deny和userlist_enable选项限制用户登录FTP服务器(使用userlist_deny选项和user_list文件一起能有效阻止root,apache,www等系统用户登录FTP服务器,从而保证FTP服务器的分级安全性)。以下是两个选项的具体表现形式和两种搭配使用方式的效果:
Userlist_enable=YES
Ftpusers中用户允许访问
User_list中用户允许访问
Userlist_enable=NO
Ftpusers中用户禁止访问
User_list中用户允许访问
Userlist_deny=YES
Ftpusers中用户禁止访问(登录时可以看到密码输入提示,但仍无法访问)
user_list 中用户禁止访问
Userlist_deny=NO
ftpusers中用户禁止访问
user_list中用户允许访问
Userlist_enable=YES 并且
Userlist_deny=YES
Ftpusers中用户禁止访问
User_list中用户禁止访问(登录时不会出现密码提示,直接被服务器拒绝)
Userlist_enable=YES 并且
Userlist_deny=NO
Ftpusers中用户禁止访问
User_list中用户允许访问
修改默认端口
默认FTP服务器端口号是21,出于安全目的,有时需修改默认端口号,修改/etc/vsftpd/vsftpd.conf,添加语句(例):
listen_port=4449
语句指定了修改后FTP服务器的端口号,应尽量大于4000。修改后访问
#ftp 192.168.57.2 4449
注意这里需加上正确的端口号了,否则不能正常连接。
设置用户组
有关FTP用户和用户组的重要性,我们在之前介绍vsftpd的时候便已经提到过。这里主要是简单的说明用户组的技术实现,至于具体如何应用,还是具体需求具体对待。
#mkdir -p /home/try 递归创建新目录
#groupadd try 新建组
#useradd -g try -d /home/try try1 新建用户try1并指定家目录和属组
#useradd -g try -d /home/try try2 新建用户try2并指定家目录和属组
#useradd -g try -d /home/try try3 新建用户try3并指定家目录和属组
#passwd try1 为新用户设密码
#passwd try2 为新用户设密码
#passwd try3 为新用户设密码
#chown try1 /home/try 设置目录属主为用户try1
#chown .try /home/try 设置目录属组为组try
#chmod 750 /home/try 设置目录访问权限try1为读,写,执行;try2,try3为读,执行
由于本地用户登录FTP服务器后进入自己主目录,而try1,try2 try3对主目录/home/try分配的权限不同,所以通过FTP访问的权限也不同,try1访问权限为:上传,下载,建目录;try2,try3访问权限为下载,浏览,不能建目录和上传。实现了群组中用户不同访问级别,加强了对FTP服务器的分级安全管理。
连接超时
配置空闲的用户会话的中断时间:如下配置将在用户会话空闲5分钟后被中断,以释放服务器的资源
Idle_session_timeout=300
配置空闲的数据连接的中断时间:如下配置将在数据空闲连接1分钟后被中断,同样也是为了释放服务器的资源
Data_connection_timeout=60
配置客户端空闲时的自动中断和激活连接的时间:如下配置将使客户端空闲1分钟后自动中断连接,并在30秒后自动激活连接
Accept_timeout=60Connect_timeout=30
接下来,我们将对vsftpd的日志进行介绍。
常见的vsftpd日志解决方案
在vsftpd.conf中有如下内容定义了日志的记录方式:
# 表明FTP服务器记录上传下载的情况xferlog_enable=YES # 表明将记录的上传下载情况写在xferlog_file所指定的文件中,即xferlog_file选项指定的文件中xferlog_std_format=YES xferlog_file=/var/log/xferlog # 启用双份日志。在用xferlog文件记录服务器上传下载情况的同时,# vsftpd_log_file所指定的文件,即/var/log/vsftpd.log也将用来记录服务器的传输情况dual_log_enable=YESvsftpd_log_file=/var/log/vsftpd.log
vsftpd的两个日志文件分析如下:
/var/log/xferlog
记录内容举例
Thu Sep 6 09:07:48 2007 7 192.168.57.1 4323279
/home/student/phpMyadmin-2
.11.0-all-languages.
tar
.gz b -i r student
ftp
0 * c
/var/log/vsftpd.log
记录内容举例
Tue Sep 11 14:59:03 2007 [pid 3460] CONNECT: Client
"127.0.0.1"
Tue Sep 11 14:59:24 2007 [pid 3459] [
ftp
] OK LOGIN;Client
"127.0.0.1"
,anon password ”?"
/var/log/xferlog日志文件中数据的分析和参数说明
记录数据
参数名称
参数说明
Thu Sep 6 09:07:48 2007
当前时间
当前服务器本地时间,格式为:
DDD MMM dd hh:mm:ss YYY
7
传输时间
传送文件所用时间,单位为秒
192.168.57.1
远程主机名称/IP
远程主机名称/IP
4323279
文件大小
传送文件的大小,单位为byte
/home/student/phpMyadmin-
2.11.0-all-languages.tar.gz
文件名
传输文件名,包括路径
b
传输类型
传输方式的类型,包括两种:
a以ASCII传输 b以二进制文件传输
–
特殊处理标志
特殊处理的标志位,可能的值包括:
_ 不做任何特殊处理
C 文件是压缩格式
U 文件是非压缩格式
T 文件是tar格式
i
传输方向
文件传输方向,包括两种:
o 从FTP服务器向客户端传输
i 从客户端向FTP服务器传输
r
访问模式
用户访问模式,包括:
a 匿名用户
g 来宾用户
r 真实用户,即系统中的用户
student
用户名
用户名称
ftp
服务名
所使用的服务名称,一般为FTP
0
认证方式
认证方式,包括:
0 无
1 RFC931认证
*
认证用户id
认证用户的id,如果使用*,则表示无法获得该id
c
完成状态
传输的状态:
c 表示传输已完成
i 表示传输示完成
最后,介绍常见的FTP命令,以及FTP数字代码的意义。
常见FTP命令及其功能
FTP命令功能
FTP命令
功能
ls
显示服务器上的目录ls [remote-dir][local-file]
显示远程目录remote-dir,并存入本地文件local-file
get remote-file [local-file]
从服务器下载指定文件到客户端mget remote-files
下载多个远程文件(mget命令允许用通配符下载多个文件)
put local-file [remote-file]
从客户端上传指定文件到服务器mput local-file
将多个文件上传至远程主机(mput命令允许用通配符上传多个文件)
open
连接FTP服务器mdelete [remote-file]
删除远程主机文件
close
中断与远程服务器的ftp会话(与open对应)mkdir dir-name
在远程主机中创建目录
open host[port]
建立指定的ftp服务器连接,可指定连接端口newer file-name
如果远程主机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件
cd directory
改变服务器的工作目录rename [from][to]
更改远程主机的文件名
lcd directory
在客户端上(本地)改变工作目录pwd
显示远程主机的当前工作目录
bye
退出FTP命令状态quit
同bye,退出ftp会话
ascii
设置文件传输方式为ASCII模式reget remote-file [local-file]
类似于get,但若local-file存在,则从上次传输中断处续传
binary
设置文件传输方式为二进制模式rhelp [cmd-name]
请求获得远程主机的帮助
![cmd [args]]
在本地主机中交互shell后退回到ftp环境,如:!ls *.ziprstatus [file-name]
若未指定文件名,则显示远程主机的状态,否则显示文件状态
accout [password]
提供登录远程系统成功后访问系统资源所需的密码hash
每传输1024字节,显示一个hash符号(#)
append local-file [remote-file]
将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名restart marker
从指定的标志marker处,重新开始get或put,如restart 130
bye
退出ftp会话过程rmdir dir-name
删除远程主机目录
case
在使用mget命令时,将远程主机文件名中的大写转为小写字母size file-name
显示远程主机文件大小,如:
size idle 7200
cd remote-dir
进入远程主机目录status
显示当前ftp状态
cdup
进入远程主机目录的父目录system
显示远程主机的操作系统
delete remote-file
删除远程主机文件user user-name [password][account]
向远程主机表明自己的身份,需要密码时,必须输入密码,如:user anonymous my@email
dir [remote-dir][local-file]
显示远程主机目录,并将结果存入本地文件help [cmd]
显示ftp内部命令cmd的帮助信息,如help get
FTP数字代码的意义
110 重新启动标记应答。120 服务在多久时间内ready。125 数据链路端口开启,准备传送。150 文件状态正常,开启数据连接端口。200 命令执行成功。202 命令执行失败。211 系统状态或是系统求助响应。212 目录的状态。213 文件的状态。214 求助的讯息。215 名称系统类型。220 新的联机服务ready。221 服务的控制连接端口关闭,可以注销。225 数据连结开启,但无传输动作。226 关闭数据连接端口,请求的文件操作成功。227 进入passive mode。230 使用者登入。250 请求的文件操作完成。257 显示目前的路径名称。331 用户名称正确,需要密码。332 登入时需要账号信息。350 请求的操作需要进一部的命令。421 无法提供服务,关闭控制连结。425 无法开启数据链路。426 关闭联机,终止传输。450 请求的操作未执行。451 命令终止:有本地的错误。452 未执行命令:磁盘空间不足。500 格式错误,无法识别命令。501 参数语法错误。502 命令执行失败。503 命令顺序错误。504 命令所接的参数不正确。530 未登入。 532 储存文件需要账户登入。550 未执行请求的操作。551 请求的命令终止,类型未知。552 请求的文件终止,储存位溢出。 553 未执行请求的的命令,名称不正确。
转自:http://os.51cto.com/art/201008/221842.htm
配置完服务器,我在windows下面进行test。
在cmd之后,输入ftp localhost
进入,然后输入用户名,我们输入anonymous,密码的话我们可以随意输入。
进入,就可以进入我们的ftp那个目录了。然后可以进行一些我们可以进行的操作,比如pub里面有一个文件j。
get j
我可以下载这个文件。在C:\Documents and Settings\Administrator下面可以看见这个文件。
我们可以上传如果有能力的话。命令是put k。
然后还有一些mkdir等等。如果有权限前提是。
另外如果看不惯命令行,也可以在浏览器里输入ftp://192.168.1.107。我们就可以以界面的形式打开文件夹。然后我们可以直接在文件里面copy。等等。
在实施过程中遇见一个问题,本地用户无法登陆ftp服务器。
首先在/etc/vsftpd下面有一个文件ftpusers.在这个文件中的用户都是不能登陆到ftp服务器的。借用另外一个文档里面的话:
这里定义了采用pam的方式进行身份验证,它是根据/etc/vsftpd.ftpusers文件进行验证的,凡是在这个文件里面列出的用户无法登陆ftp
以上可以知道,有一些用户是不能登陆的,我们可以设置。
本地用户无法登陆服务器还有可能是由于系统中没有vsftpd的pam文件导致的。这个文件在/etc/pam.d下面。我这个下面的名字是vsftpd。于是在vsftpd.conf里面必须加上一句
pam_service_name = vsftpd。
这样,不在/etc/vsftpd.ftpusers里面的用户就可以登陆了。
在虚拟机上建立ftp服务器后,可以在虚拟机上进行登录,anonymous登录,然后下载文件,下载的文件的位置就在你打开的目录下面。比如你在/root下面进行的下载,下载的文件就在/root下。在/home下下载,就在/home下。
在进行设置上传功能的时候,很多需要注意的。我们必须搞清楚ftp允许和系统允许。下面shi我的配置,可以在pub下面新建的upload文件夹进行上传,删除,新建。具体步骤如下:
#允许匿名用户登录FTP
anonymous_enable=YES
#打开匿名用户的上传权限
anon_upload_enable=YES
#打开匿名用户创建目录的权限
anon_mkdir_write_enable=YES
#打开匿名用户删除和重命名的权限(如需要,需自己添加)
anon_other_write_enable=YES
#匿名用户的掩码(如需要,需自己添加,含义:如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644)
anon_umask=022
然后在pub目录下新建一个upload,然后chmod 777 upload。设置文件夹权限,一般至此,便实现vsftpd匿名用户的上传下载了。如果还不行,就是下面的问题。我的就是下面的问题。
3、selinux的配置
SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,是 Linux上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
最简单的办法,关闭selinux
方法1:修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
方法2:用命令setenforce 0,无需重启。(setenforce的格式:setenforce [ Enforcing | Permissive | 1 | 0 ])
方法3:在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux。
使用getenforce查看当前selinux是否正在运行。
不关闭selinux,就要设置selinux的ftp权限。
1、使用getsebool -a | grep ftp查看ftp相关设置状态,我们要将allow_ftpd_anon_write设为on。
2、使用setsebool -P 进行设置。例:setsebool -P allow_ftpd_anon_write=on。
或使用togglesebool进行bool值取反,例如togglesebool allow_ftpd_anon_write。
3、修改selinux安全上下文,先介绍两个命令:
命令1、ls -Z ps -Z id -Z # 分别可以看到文件,进程和用户的SELinux属性
命令2、#chcon 改变SELinux安全上下文
chcon -u [user] 对象
-r [role]
-t [type]
-R 递归
--reference 源文件 目标文件 # 复制安全上下文
使用方法:
步骤1、ls -Zd /var/ftp/upload/ 通常会看到:
drwxr-xr-x ftp root system_u:object_r:public_content_t /var/ftp/upload/
步骤2、chcon -R -t public_content_rw_t /var/ftp/upload/
步骤3、ls -Zd /var/ftp/upload/ 如果看到如下信息就OK了:
drwxr-xr-x ftp root system_u:object_r:public_content_rw_t /var/ftp/upload/
最后还是重启下selinux和vsftpd吧,不重启其实也没关系。重新登录到ftp上,应该就能解决问题了。
另,selinux的图形界面 可由system-config-selinux命令进入。
就这些内容了,希望对大家有帮助。
我按照上面的方法一进行,然后可以得到。然后方法二也行。我只是试了这两个。
关于ftp文件上传有两种模式,一是bin(二进制),一是asc(文本)。这两种之间的区别如下:(来自百度)
FTP可用多种格式传输文件,通常由系统决定,大多数系统(包括UNIX系统)只有两种模式:文本模式和二进制模式。文本传输器使用ASCII字符,并由回车键和换行符分开,而二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式。
一般来说: 如果你用错误的模式传输你的图片,你将会无法看到图片,看到的会是乱码。如果你用错误模式上传CGI脚本,那么就将无法运行你的脚本,会看到类似Server 500Error的出错信息。
所以你必须使用正确的模式,图片和执行文件必须用BINARY模式,CGI脚本和普通HTML文件用ASCII模式上传.
ASCII 和BINARY模式区别:
用HTML 和文本编写的文件必须用ASCII模式上传,用BINARY模式上传会破坏文件,导致文件执行出错。
BINARY模式用来传送可执行文件,压缩文件,和图片文件。
如果你用ASCII模式传,会显示一堆乱码,你必须重新用BINARY模式传。
对于第二种情况,是因为有很多ftp服务器和客户端软件能自动识别文件类型,并采取相应的传输方式。
ftp是应用层协议,和具体操作系统无关 .
ASCII 模式和BINARY模式的区别是回车换行的处理,binary模式不对数据进行任何处理,asci模式将回车换行转换为本机的回车字符,比如Unix下是\n,Windows下是\r\n,Mac下是\r
ascii模式下会转换文件
不能说是不同系统对回车换行解释不同
而是不同的系统有不同的行结束符
unix系统下行结束符是一个字节,即十六进制的0A
而ms的系统是两个字节,即十六进制的0D0A
所以当你用ascii方式从unix的ftp server下载文件时(不管是二进制或者文本文件),每检测到一个
字节是0A,就会自动插入一个0D,所以如果你的文件是二进制文件比如可执行文件、压缩包什么的,就肯
定不能用了。如果你的文件就是unix下的文本文件,你用ascii模式是正确的,要是误用了binary模式,
你在windows上看这个文件是没有换行的,里面是一个个的黑方块。
一般来说,我们最好都用binary方式,这样可以保证不出错。如果有文本格式转换的问题,即unix格式
的文本和dos格式的文本之间的转换,有很多工具可以做的,不要在ftp传输的时候冒险,尤其是你如果对
这些东西不是非常清楚的话。
可以使用MIME,把所有的字符,转换成0~128之间的字符,然后传送,在接受方再将接收到的字符MIME反向转换。通常我们发送邮件,就是使用这样的字符转换方式
------------------------------------------------------------------
补充:文本模式和二进制模式传文本文件的具体区别可以通过在linux下使用cat -A 文件名看到两者的区别,当然前提是在windows下上传的文本为dos格式,这个可以用高级的文本编辑器看如ultraedit等。两者的区别是二进制模式上传的文本比文本模式多一个^M符号,这个就是windows下dos格式的/r回车符号,也就是上面提到的十六进制的0D,在vi下使用全局替换:%s/^M//g[^M使用Ctrl+V+M而不是直接输入^M]去掉所有的回车符或者使用dos2unix file进行转换,这样保存后或者生成后的文件就和文本模式上传的文件一样了。。。
- ftp安装配置运行(转写)
- linux下安装配置vsftpd(ftp)
- 安装配置ftp服务器(centOs操作系统)
- FTP安装配置
- Centos ftp安装配置
- Ftp安装和配置
- ftp安装与配置
- fedora 安装配置ftp
- centos安装配置ftp
- ubuntu安装配置FTP
- ubuntu安装配置FTP
- centos7 安装配置ftp
- ubuntu ftp安装 配置
- linux ftp安装配置
- Ubuntu安装配置ftp
- ubuntu安装配置FTP
- 安装和配置ftp
- linux安装ftp配置
- asp 请求两三句
- C100-30 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
- 湖南师范大学第四届大学生计算机程序设计竞赛 记录下水果的三题。。。
- IP头、TCP头、UDP头
- 堆和栈的区别
- ftp安装配置运行(转写)
- 经典设计网站
- 哲理小故事
- jdbc调用存储过程和函数
- [笔记]Ray Tracing with Cones
- 【教程】教你写一个简单的微信小黄鸡
- 寓言
- 《1988,我想和这个世界谈谈》读后感
- ALTERA的FPGA命名规则