linux怎么配置ftp服务器

linux怎么配置ftp服务器,第1张

一 FTP 说明
linux 系统下常用的FTP 是vsftp, 即Very Security File Transfer Protocol 还有一个是proftp(Profession ftp)。 我们这里也是简单的说明下vsftp的配置。
vsftp提供3种远程的登录方式:
(1)匿名登录方式
就是不需要用户名,密码。就能登录到服务器电脑里面
(2)本地用户方式
需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。
(3)虚拟用户方式
同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)
二 Vsftp的安装配置
21 安装
vsftp 的安装包,可以在安装里找到。 用yum 安装过程也很简单。
安装命令:yum install vsftpd
22 相关命令
221 启动与关闭
[root@singledb ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@singledb ~]# service vsftpd stop
Shutting down vsftpd: [ OK ]
[root@singledb ~]# service vsftpd restart
Shutting down vsftpd: [FAILED]
Starting vsftpd for vsftpd: [ OK ]
[root@singledb ~]# /etc/initd/vsftpd start
Starting vsftpd for vsftpd: [FAILED]
[root@singledb ~]# /etc/initd/vsftpd stop
Shutting down vsftpd: [ OK ]
[root@singledb ~]# /etc/initd/vsftpd restart
Shutting down vsftpd: [FAILED]
Starting vsftpd for vsftpd: [ OK ]
[root@singledb ~]# /etc/initd/vsftpd status
vsftpd (pid 3931) is running
[root@singledb ~]#
222 其他命令
--查看vsftpd 启动状态
[root@singledb ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@singledb ~]# chkconfig vsftpd on
[root@singledb ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
这里看到,默认情况下从2到5设置为on了。2到5是多用户级别。 这个对应的是linux不同的运行级别。
我们也可以加level 选项来指定:
[root@singledb ~]# chkconfig --level 0 vsftpd on
[root@singledb ~]# chkconfig --list vsftpd
vsftpd 0:on 1:off 2:on 3:on 4:on 5:on 6:off
我们看到0已经设置为on了。
我们可以使用man chkconfig 来查看帮助:
--level levels
Specifies the run levels an operation should pertain to It is given as a string of numbers from 0 to 7 For example, --level 35 specifies runlevels 3 and 5
传统的init 定义了7个运行级(run level),每一个级别都代表系统应该补充运行的某些特定服务:
(1)0级是完全关闭系统的级别
(2)1级或者S级代表单用户模式
(3)2-5 级 是多用户级别
(4)6级 是 重新引导的级别
(1)查看防火墙
我一般都是把系统的防火墙关闭了。 因为开了会有很多限制。
[root@singledb ~]# /etc/initd/iptables status
Table: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all -- 1921681220/24 !1921681220/24
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- 0000/0 0000/0 udp dpt:53
2 ACCEPT tcp -- 0000/0 0000/0 tcp dpt:53
3 ACCEPT udp -- 0000/0 0000/0 udp dpt:67
4 ACCEPT tcp -- 0000/0 0000/0 tcp dpt:67
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0000/0 1921681220/24 state RELATED,ESTABLISHED
2 ACCEPT all -- 1921681220/24 0000/0
3 ACCEPT all -- 0000/0 0000/0
4 REJECT all -- 0000/0 0000/0 reject-with icmp-port-unreachable
5 REJECT all -- 0000/0 0000/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
You have new mail in /var/spool/mail/root
--添加开放21号端口:
[root@singledb ~]# /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
[root@singledb ~]# /etc/initd/iptables status
Table: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all -- 1921681220/24 !1921681220/24
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0000/0 0000/0 tcp dpt:21
2 ACCEPT udp -- 0000/0 0000/0 udp dpt:53
3 ACCEPT tcp -- 0000/0 0000/0 tcp dpt:53
4 ACCEPT udp -- 0000/0 0000/0 udp dpt:67
5 ACCEPT tcp -- 0000/0 0000/0 tcp dpt:67
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0000/0 1921681220/24 state RELATED,ESTABLISHED
2 ACCEPT all -- 1921681220/24 0000/0
3 ACCEPT all -- 0000/0 0000/0
4 REJECT all -- 0000/0 0000/0 reject-with icmp-port-unreachable
5 REJECT all -- 0000/0 0000/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
--保存配置
[root@singledb ~]# /etc/rcd/initd/iptables save
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
--重启防火墙:
[root@singledb ~]# service iptables {start|stop|restart}
(2)查看关闭selinux
[root@singledb ~]# sestatus
SELinux status: disabled
我这里在安装 *** 作系统的时候就关闭了selinux,如果没有关闭,可以修改如下文件来关闭:
[root@singledb ~]# cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced
# permissive - SELinux prints warnings instead of enforcing
# disabled - SELinux is fully disabled
SELINUX=disabled
# SELINUXTYPE= type of policy in use Possible values are:
# targeted - Only targeted network daemons are protected
# strict - Full SELinux protection
SELINUXTYPE=targeted
[root@singledb ~]#
保存退出并重启系统reboot
三 FTP配置文件
FTP 安装好之后,在/etc/vsftpd/目录下会有如下文件:
[root@singledb ~]# cd /etc/vsftpd/
[root@singledb vsftpd]# ls
ftpusers user_list vsftpdconf vsftpd_conf_migratesh
[root@singledb vsftpd]#
vsftpdconf: 主配置文件
ftpusers: 指定哪些用户不能访问FTP服务器
user_list: 指定的用户是否可以访问ftp服务器由vsftpdconf文件中的userlist_deny的取值来决定。
[root@singledb vsftpd]# cat user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied
我们过滤掉#的注释后,查看一下vsftpdconf 文件:
[root@singledb ftp]# cat /etc/vsftpd/vsftpdconf |grep -v '^#';
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=yes
tcp_wrappers=YES
至于这些参数的意思,在注释里有详细的说明。
我们可以在vsftpdconf 文件设置如下参数:
(1)ftpd_banner=welcome to ftp service :设置连接服务器后的欢迎信息
(2)idle_session_timeout=60 :限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的 *** 作就会中断(秒)
(3)data_connection_timeout=120 :设置客户机在进行数据传输时,设置空闲的数据中断时间
(4)accept_timeout=60 设置在多长时间后自动建立连接
(5)connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用;
(6)max_clients=200 指明服务器总的客户并发连接数为200
(7)max_per_ip=3 指明每个客户机的最大连接数为3
(8)local_max_rate=50000(50kbytes/sec) 本地用户最大传输速率限制
(9)anon_max_rate=30000匿名用户的最大传输速率限制
(10)pasv_min_port=端口
(11)pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口;
(12)listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;
(13)listen_port=端口号 设置FTP工作的端口号,默认的为21
(14)chroot_local_user=YES 设置所有的本地用户可以chroot
(15)chroot_local_user=NO 设置指定用户能够chroot
(16)chroot_list_enable=YES
(17)chroot_list_file=/etc/vsftpd/chroot_list(只有/etc/vsftpd/chroot_list中的指定的用户才能执行 )
(18)local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录;
(19)chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user,不能利用cd命令向上转;只能向下;
(20)chroot_list_enable=yes/no 锁定指定文件中用户的主目录(部分),文件:/chroot_list_file=path 中指定;
(21)userlist_enable=YES/NO 是否加载用户列表文件;
(22)userlist_deny=YES 表示上面所加载的用户是否允许拒绝登录;
(23)userlist_file=/etc/vsftpd/user_list 列表文件
限制IP 访问FTP:
#vi /etc/hostsallow
vsftpd:1921685128:DENY 设置该IP地址不可以访问ftp服务
FTP 访问时间限制:
#cp /usr/share/doc/vsftpd-113/vsftpdxinetd /etc/xinetdd/vsftpd
#vi /etc/xinetdd/vsftpd/
修改 disable = no
access_time = hour:min-hour:min (添加配置访问的时间限制(注:与vsftpdconf中listen=NO相对应)
例: access_time = 8:30-11:30 17:30-21:30 表示只有这两个时间段可以访问ftp
ftp的配置基本上只有这些了。
默认情况下,ftp根目录是/var/ftp。 如果要修改这个目录位置,可以更改/etc/passwd 文件:
[root@singledb ftp]# cat /etc/passwd | grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
创建一个用户来访问FTP,并指定该用户的FTP 目录:
[root@singledb u02]# useradd -d /u02/qsftp qs
[root@singledb u02]# passwd qs
Changing password for user qs
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully
这里指定的是/u02/qsftp 这个目录,要注意个目录的权限。
更改用户不能telnet,只能ftp:
usermod -s /sbin/nologin username //用户只能ftp,不能telnet
usermod -s /sbin/bash username //用户恢复正常
禁止用户ssh登陆
useradd username -s /bin/false
更改用户主目录:
usermod -d /bbb username //把用户的主目录定为/bbb
然后用qs这个用户就可以访问了。
以上只是一些简单的设置。 在用户权限这块还有很多内容可以研究。 比如特定用户的特定权限。 安全性等。 以后在研究了。

主机和虚拟机通信最好用HOSTONLY,用桥接很容易出问题
话说我用VM和Virtual PC都试了,当使用桥接时,即便能PING通,主机和虚拟机的速率也很低,互拷文件速度不到10K/S,用HOSTONLY或者NAT方式可以达到上M。
建议你加一块HOSTONLY的虚拟网卡。

启动命令:/etc/rcd/initd/vsftpd start
这时候可以使用ftp客户端连接。
vsftpd的权限貌似和系统权限有挂钩。
下面是抄来的配置解释vsftpd的配置
,例如root等。
vsftpduser_list:位于/etc目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd conf配置文件里启用userlist_enable=NO选项时才允许访问。
vsftpdconf:位于/etc/vsftpd目录下。来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。
(1)CentOS系统用户登录控制
local_enable=YES,允许本地用户登录。
banned_email_file=/etc/vsftpdbanned_emails,当启用deny_email_enable功能时,所需的电子邮件黑名单保存路径(默认为/etc/vsftpdbanned_emails)。
(2)CentOS系统用户权限控制
write_enable=YES,开启全局上传权限。
local_umask=022,本地用户的上传文件的umask设为022(系统默认是077,一般都可以改为022)。
chown_username=whoever,当启用chown_uploads=YES时,所指定的属主用户账号,此处的whoever自然要用合适的用户账号来代替。
chroot_list_file=/etc/vsftpdchroot_list,如果chroot_local_user=YES,则指定该列表(chroot_local_user)的保存路径(默认是/etc/vsftpdchroot_list)。
nopriv_user=ftpsecure,指定一个安全用户账号,让FTP服务器用作完全隔离和没有特权的独立用户。这是vsftpd系统推荐选项。
async_abor_enable=YES,强烈建议不要启用该选项,否则将可能导致出错!
ascii_upload_enable=YES;ascii_download_enable=YES,默认情况下服务器会假装接受ASCⅡ模式请求但实际上是忽略这样的请求,启用上述的两个选项可以让服务器真正实现ASCⅡ模式的传输。
注意:启用ascii_download_enable选项会让恶意远程用户们在ASCⅡ模式下用“SIZE/big/file”这样的指令大量消耗FTP服务器的I/O资源。
这些ASCⅡ模式的设置选项分成上传和下载两个,这样我们就可以允许ASCⅡ模式的上传(可以防止上传脚本等恶意文件而导致崩溃),而不会遭受拒绝服务攻击的危险。
(3)CentOS系统用户连接和超时选项
idle_session_timeout=600,可以设定默认的空闲超时时间,用户超过这段时间不动作将被服务器踢出。
data_connection_timeout=120,设定默认的数据连接超时时间。
dirmessage_enable=YES,允许为目录配置显示信息,显示每个目录下面的message_file文件的内容。
xferlog_enable=YES,启用记录上传/下载活动日志功能。
xferlog_file=/var/log/vsftpdlog,可以自定义日志文件的保存路径和文件名,默认是/var/log/vsftpdlog。
以上,我们就完成了CentOS系统中FTP的配置工作。

1 首先服务器要安装ftp软件,查看是否已经安装ftp软件下:
#which vsftpd
如果看到有vsftpd的目录说明服务器已经安装了ftp软件

2 查看ftp 服务器状态
#service vsftpd status

3 启动ftp服务器
#service vsftpd start

4 重启ftp服务器
#service vsftpd restart

5 查看服务有没有启动
#netstat -an | grep 21
tcp 0 0 0000:21 0000: LISTEN
如果看到以上信息,证明ftp服务已经开启。

6如果需要开启root用户的ftp权限要修改以下两个文件
#vi /etc/vsftpdftpusers中注释掉root
#vi /etc/vsftpduser_list中也注释掉root
然后重新启动ftp服务。

7 vsftpd 500 OOPS: cannot change directory
登陆报错:
C:\>ftp 1921680101
Connected to 1921680101
220 (vsFTPd 205)
User (1921680101:(none)): frank
331 Please specify the password
Password:
500 OOPS: cannot change directory:/home/frank
Login failed
ftp> ls
500 OOPS: child died
Connection closed by remote host
解决方法:
setsebool ftpd_disable_trans 1
service vsftpd restart
就OK了!

这是SELinux的设置命令,在不熟悉SELnux前,把SELinux关掉也可以的。

8 永久开启,即os重启后自动开启ftp服务
方法一:
cd /etc/xinetdd ,编辑ftp服务的配置文件gssftp的设置:
vi /etc/xinetdd/gssftp ,将 修改两项内容:

(a) server_args = -l –a 去掉-a 改为server_args = -l
(b) disable=yes改为disable=no
(c) 保存退出。

方法二:
(a) system-config-services , 进入图形界面的System services查看是否有 vsftpd项,如果没有转到2,保存后退出

  (b) 用redhat第三张盘 安装此服务(开始--删除/增加程序),200K左右

  (c) #setup
此时能看到vsftpd项,此时选中此services项,保存后退出

Ubuntu自带的FTP服务器是vsftpd
1、安装vsftpd
sudo apt-get install vsftpd
安装了之后会在/home/下建立一个ftp目录。这时候你可以试着访问下ftp://IP地 址。应该可以看到一个空白内容的ftp空间。
默认设置下匿名用户可以下载,但不能写入或是上传
2、设置 vsftpdconf文件
现在我们要让匿名用户无法访问,并且得输入linux上的用户密码后才能访问到他们自己目录里的内容。
首先找到设置vsftpd的文件,位置在/etc/vsftpdconf
sudo gedit /etc/vsftpdconf
服务器的配置 
1. 匿名服务器的连接(独立的服务器)
在/etc/vsftpd/vsftpdconf配置文件中添加如下几项:
Anonymous_enable=yes (允许匿名登陆)
Dirmessage_enable=yes (切换目录时,显示目录下message的内容)
Local_umask=022 (FTP上本地的文件权限,默认是077)
Connect_form_port_20=yes (启用FTP数据端口的数据连接)
Xferlog_enable=yes (激活上传和下传的日志)
Xferlog_std_format=yes (使用标准的日志格式)
Ftpd_banner=Moonlight Ftp Server (欢迎信息)
Pam_service_name=vsftpd (验证方式)
Listen=yes (独立的VSFTPD服务器)
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项
2. 开启匿名FTP服务器上传权限
在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
3. 开启匿名服务器下传的权限
在配置文件中添加如下信息即可:
Anon_world_readable_only=no
注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读-----下传 (W)写----上传 (X)执行----如果不开FTP的目录都进不去
4.普通用户FTP服务器的连接(独立服务器)
在配置文件中添加如下信息即可:
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传
5. 用户登陆限制进其它的目录,只能进它的主目录
设置所有的本地用户都执行chroot
Chroot_local_user=yes (本地所有帐户都只能在自家目录)
设置指定用户执行chroot
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpdchroot_list
注意:vsftpdchroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可
6. 限制本地用户访问FTP
Userlist_enable=yes (用userlistlai 来限制用户访问)
Userlist_deny=no (名单中的人不允许访问)
Userlist_file=/指定文件存放的路径/ (文件放置的路径)
注:开启userlist_enable=yes匿名帐号不能登陆
7. 安全选项
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)
8. 查看谁登陆了FTP,并杀死它的进程
ps –xf |grep ftp
kill 进程号
最后重启动服务
sudo /etc/initd/vsftpd restart


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10679992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存