Linux下配置FTP服务器
它可运行在Linux、Solaris等系统中,支持很多其他的FTP 服务器不支持的特征:
非常高的安全性需求
带宽限制
良好的可伸缩性
创建虚拟用户的可能性
分配虚拟IP地址的可能性
一、vsftpd的启动
#service vsftpd start
如果允许用户匿名访问,需创建用户ftp和目录/var/ftp
# mkdir /var/ftp
# useradd –d /var/ftp ftp
二、vsftpd的配置
Vsftpd的配置文件存放在/etc/vsftpd/vsftpdconf 我们可根据实际数要对如下信息进行配置:
1 连接选项
☆监听地址和控制端口
(1) listen_address=ip address
定义主机在哪个IP 地址上监听FTP请求。即在哪个IP地址上提供FTP服务。
(2) listen_port=port_value
指定FTP服务器监听的端口号。默认值为21。
2 性能与负载控制
☆超时选项
(1) idle_session_timeout=
空闲用户会话的超时时间,若是超过这段时间没有数据的传送或是指令的输入,则会被迫断线。默认值是300s
(2) accept_timeout=numerical value
接受建立联机的超时设定。默认值为60s
☆负载选项
(1) max_clients= numerical value
定义FTP服务器最大的兵法连接数。当超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限最大连接数。
(2) max_per_ip= numerical value
定义每个IP地址最大的并发连接数目。超过这个数目将会拒绝连接。此选项的设置将会影响到网际快车、迅雷之类的多线程下载软件。默认值为0,表示不限制。
(3) anon_max_rate=value
设定匿名用户的最大数据传输速度,以B/s为单位。默认无。
(4) local_max_rate=value
设定用户的最大数据传输速度。以B/s为单位。默认无。此选项对所有的用户都生效。
3 用户选项
vsftpd的用户分为3类:匿名用户、本地用户(local user)及虚拟用户(guest)
☆ 匿名用户
(1) anonymous_enable=YES|NO
控制是否允许匿名用户登录
(2) ftp_username=
匿名用户使用的系统用户名。默认情况下,值为ftp
(3) no_anon_password= YES|NO
控制匿名用户登录时是否需要密码。
(4) anon_root=
设定匿名用户的根目录,即匿名用户登录后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/
(5) anon_world_readable_only= YES|NO
控制是否只允许匿名用户下载可阅读的文档。YES,只允许匿名用户下载可阅读的文件。NO,允许匿名用户浏览整个服务器的文件系统。
(6) anon_upload_enable= YES|NO
控制是否允许匿名用户上传文件。除了这个参数外,匿名用户要能上传文件,还需要两个条件,write_enable参数为YES;在文件系统上,FTP匿名用户对某个目录有写权限。
(7) anon_mkdir_wirte_enable= YES|NO
控制是否允许匿名用户创建新目录。在文件系统上,FTP匿名用户必须对新目录的上层目录拥有写权限。
(8) anon_other_write_enbale= YES|NO
控制匿名用户是否拥有除了上传和新建目录之外的`其他权限。如删除、更名等。
(9) chown_uploads= YES|NO
是否修改匿名用户所上传文件的所有权。YES,匿名用户上传得文件所有权改为另一个不同的用户所有,用户由chown_username参数指定。
(10) chown_username=whoever
指定拥有匿名用户上传文件所有权的用户。
☆本地用户
(1) local_enable= YES|NO
控制vsftpd所在的系统的用户是否可以登录vsftpd。
(2) local_root=
定义本地用户的根目录。当本地用户登录时,将被更换到此目录下。
☆虚拟用户
(1) guest_enable= YES|NO
启动此功能将所有匿名登入者都视为guest
(2) guest_username=
定义vsftpd的guest用户在系统中的用户名。
4 安全措施
☆用户登录控制
(1) /etc/vsftpdftpusers
Vsftpd禁止列在此文件中的用户登录FTP服务器。此机制是默认设置的。
(2) userlist_enable= YES|NO
此选项激活后,vsftpd将读取userlist_file参数所指定的文件中的用户列表。
(3) userlist_file=/etc/vsftpduser_list
指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpduser_list
(4) userlist_deny= YES|NO
决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。userlist_enable选项启动后才能生效。默认值为YES,禁止文中的用户登录,同时不向这些用户发出输入口令的指令。NO,只允许在文中的用户登录FTP服务器。
☆目录访问控制
(1) chroot_list_enable= YES|NO
锁定某些用户在自己的目录中,而不可以转到系统的其他目录。
(2) chroot_list_file=/etc/vsftpd/chroot_list
指定被锁定在主目录的用户的列表文件。
(3) chroot_local_users= YES|NO
将本地用户锁定在主目中。
Linuxftp如何配置被动模式?
vsftpd被动模式与主动模式
VSFTP文件与目录
/usr/sbin/vsftpvsftp的主程序
/etc/rcd/initd/vsftpvsftp的启动脚本
/etc/vsftpd/vsftpdconfvsftp的配置文件
/etc/pamd/vsftpdPAM认证文件
/etc/vsftpd/vsftpdftpuser禁止使用FTP的用户
/etc/vsftpd/vsftpduser_list禁止或允许使用ftp的用户列表
/var/ftpftp匿名主目录
/varftp/pubftp匿名上传主目录
VSFTP启动
Standalone方式
用于ftp访问频繁的环境VSFTP进程始终运行监听端口
Servicevsftpstart|stop|restart|status
/etc/rcd/initd/vsftpdstart|stop|restart
或者在/etc/vsftpd/vsftpdconf中加入listen=yes表示以standalone运行
在inetd守护进程中运行
用于ftp访问量很小的情况vsftp在inetd守护进程中运行
运行/etc/inetd/vsftp中的脚本
VSFTP的配置文件/etc/vsftpd/vsftpdconf
主动模式设置
Port_enable=YES开启主动模式
Connect_from_port_20=YES当主动模式开启的时候是否启用默认的20端口监听
Ftp_date_port=%portnumber%上一选项使用NO参数是指定数据传输端口
被动模式
PASV_enable=YES开启被动模式
PASV_min_port=%number%被动模式最低端口
PASV_max_port=%number%被动模式最高端口
匿名上传设置
anonymous_enable=YES启用匿名帐户
anon_world_readable_only=NO关闭匿名全局浏览
anon_upload_enable=YES匿名上传开启
anon_mkdir_write_enable=YES允许匿名用户创建目录
write_enable=YES全局写入权限开启
限制本地用户访问文件系统
chroot_local_user=YES将本地用户浏览限制在其FTP根目录下
限制部分用户访问文件系统
chroot_list_enable=YES启用列表(不可以与上条命令同时开启)
chroot_list_file=%filepath%限制用户的列表文件
连接限制
Max_client=%number%最大连接数
max_per_ip=%number%每ip最大连接数
anon_max_rate=%number%匿名用户最大速率单位kbps
local_max_rate=%number%本地用户最大速率单位kbps
user_config_dir=%filepath%/%username%针对不同用户的连接速率设置
%username%文件的内容为local_max_rate=%number%
用户主目录设置
本地用户的主目录定义在/etc/passwd文件中
其中FTPuser:________为定义行
全局重定向localuser的ftp主目录
local_root=%path%
安全设置
hide_ids=YES隐藏用户的UID和GID
改变原有banner
ftpd_banner=%message%
或者
banner_file=%filepath%
虚拟FTP站点设置
首先创建2套conf文件
#cp/etc/vsftpd/vsftpdconf/etc/vsftp/vsftp2conf
创建ftp2的主目录
#mkdir/var/ftp2
#useradd-d/var/ftp2-MFTP2
#servicevsftpdrestart
怎样能使Windows系统访问LINUX中的FTP?
设置去掉ftp的匿名访问方式,设置适当的用户权限,ftp是基与tcp/ip协议的应用,与操作系统无关。
linux下设置用户登录FTP服务器时,所在的目录?
在vsftpdconf这个文件里面的,local_enable=yes,首先要开启这个,然后用useradd命令新建本地用户,然后把自家目录由/home,改为其他,要修改这个文件,/etc/passwd:root:x:0:0:root:/root:/bin/bashbin:x:
1:1:bin:/bin:/sbin/nologindaemon:x:
2:2:daemon:/sbin:/sbin/nologindesktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologinmengqc:x:500:500:mengqc:/home/mengqc:/bin/bash如上所显示,找到你的本地用户,然后把/home后面的路径改了就可以,记得保存这个文件。这样FTP用户就可以用本地用户登录了,不改路径的话需要另外开启/home的访问权限,由于这个是敏感目录,所以个人并不推荐开启。
如何在linux系统下搭建一台ftp服务器?
在linux中一般使用vsftp这个软件搭建FTP服务器。 首先要看你的是什么linux系统,对于ubuntu、debian可通过apt-getinstallvsftpd命令安装,对于centos、redhat等系统可通过yuminstallvsftpd命令安装。 安装成功后,需要修改/etc/vsftpdconf配置文件。这个配置文件包含登录ftp的用户、密码、访问目录的设置。 修改了配置文件后,执行/etc/initd/vsftpdrestart命令重启ftp服务器。那么ftp服务器就搭建完成了。
ftp只有读取权限能进行什么操作?
1你可以把A的本地权限和共享权限者改成只读就行了。B的话你就要读和写了。
2管理员是机子上最大的,就算对文件或文件夹没有权限,都可以通过取得所有权来进行管理,如果只想让特定的某一用户访问这个目录,你就只把本地和共享权限列表中只留下那个用户,这样就只能这个用户访问。为了方便,把你管理员加进去吧。
3把A这个文件夹对管理员的本地和共享都改成读写,其它都改成读。B的话呢你加个EVERYONE把权限全勾上就行了。
4如果是用WINDOWS的IIS当FTP服务器,就改本地和共享权限就行了。如果SEV-U他是可以用这个软件就可以管理权限的。用LINUX也像WIN一样,不过他就没有本地和共享了,就一个权限。应用在本地和共享上。
5这个我没有用过就不知道了。
一 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这个用户就可以访问了。
以上只是一些简单的设置。 在用户权限这块还有很多内容可以研究。 比如特定用户的特定权限。 安全性等。 以后在研究了。
# 匿名用户配置
anonymous_enable=YES # 是否允许匿名ftp,如否则选择NO
anon_upload_enable=YES # 匿名用户是否能上传
anon_mkdir_write_enable=YES # 匿名用户是否能创建目录
anon_other_write_enable=YES # 修改文件名和删除文件
# 本地用户配置
local_enable=YES # 是否允许本地用户登录
local_umask=022 # umask 默认755
write_enable=YES
chroot_local_user=YES # 本地用户禁锢在宿主目录中
chroot_list_enable=YES # 是否将系统用户限止在自己的home目录下
chroot_list_file=/etc/vsftpdchroot_list # 列出的是不chroot的用户的列表
chown_upload=YES # 是否改变上传文件的属主
chown_username=username # 如果是需要输入一个系统用户名
userlist_enable=YES
userlist_deny=NO
deny_email_enable=YES # 是否允许禁止匿名用户使用某些邮件地址
banned_email_file=/etc/vsftpdbanned_emails # 禁止邮件地址的文件路径
ftpd_banner=Welcome to chenlf FTP service # 定制欢迎信息
dirmessage_enable=YES # 是否显示目录说明文件, 需要收工创建message文件
message_file= # 设置访问一个目录时获得的目录信息文件的文件名,默认是message
xferlog_enable=YES # 是否记录ftp传输过程
xferlog_file=/var/log/vsftpdlog # ftp传输日志的路径和名字
xferlog_std_format=YES # 是否使用标准的ftp xferlog模式
ascii_upload_enable=YES # 是否使用ascii码方式上传文件
ascii_download_enable=YES # 是否使用ascii码方式下载文件
connect_from_port_20=YES # 是否确信端口传输来自20(ftp-data)
nopriv_user=ftpsecure # 运行vsftpd需要的非特权系统用户默认是nobody
async_abor_enable=YES # 是否允许运行特殊的ftp命令async ABOR
# FTP服务器的资源限制
idle_session_timeout=600 # 设置session超时时间
data_connection_timeout=120 # 设置数据传输超时时间
max_clients=50 # 用户最大连接数 默认是0不限止
max_per_ip=5 # 每个IP地址最大连接数
anon_max_rate=102400 # 匿名的下载速度 KB
local_max_rate=102400 # 普通用户的下载速度 KB
按下列步骤开启设置LINXU中的FTP服务:
1、开启linuxh环境下的FTP service
过程如下:
输入命令:
/etc/rcd/initd/vsftpd start
/etc/rcd/initd/vsftpd restart
若要关闭这个服务:
/etc/rcd/initd/ vsftpd stop
2、配置文件:
进入/etc配置vsftpdftpusers和vsftpduser_list,用vi打开他们,将这两个文件里的root给去掉,保存退出。
3、此时可以打开flshFXP,快速连接,输入IP地址、用户名及密码就可以连接linux系统的FTP服务器。
4、vsftpd的配置
在Red Hat Linux 里的vsftpd共有3个配置文件,它们分别是:
vsftpdftpusers:位于/etc目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。
vsftpduser_list:位于/etc目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd conf配置文件里启用userlist_enable=NO选项时才允许访问。
vsftpdconf:位于/etc/vsftpd目录下。它是一个文本文件,我们可以用Kate、Vi等文本编辑工具对它进行修改,以此来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。
一、启动vsftpd服务
1、 启动VSFTP服务器
A:cenos下运行:yum install vsftpd
B 登录Linux主机后,运行命令:”service vsftpd start”
C 要让FTP每次开机自动启动,运行命令: “chkconfig --level 35 vsftpd on”
二、设置FTP权限
A 编辑VSFTP配置文件,运行命令:”vi /etc/vsftpd/vsftpdconf “
B 将配置文件中”anonymous_enable=YES “改为 “anonymous_enable=NO”
C 保存修改,按ESC键,运行命令:“:wq”这样关闭了匿名登录功能。
三、添加用户:
A 登录Linux主机后,运行命令:”useradd ftpadmin -s /sbin/nologin “。该账户路径默认指向/home/ftpadmin目录;如果需要将用户指向其他目录,请运行命令:useradd ftpadmin -s /sbin/nologin _d /www(其他目录)
B 设置ftpadmin用户密码,运行命令:”passwd ftpadmin” ; 输入两次密码,匹配成功后,就设置好了ftpadmin用户的密码了。
C测试连接,您可以在“我的电脑”地址栏中输入 ftp://IP 来连接FTP服务器,根据提示输入账户密码。
第一步:在 Ubuntu 中安装 VSFTPD 服务器
首先,我们需要更新系统安装包列表,然后像下面这样安装 VSFTPD 二进制包:
$ sudo apt-get update
$ sudo apt-get install vsftpd
一旦安装完成,初始情况下服务被禁用。因此,我们需要手动开启服务,同时,启动它使得在下次开机时能够自动开启服务:
------------- On SystemD -------------
# systemctl start vsftpd
# systemctl enable vsftpd
------------- On SysVInit -------------
# service vsftpd start
# chkconfig --level 35 vsftpd on
接下来,如果你在服务器上启用了 UFW 防火墙(默认情况下不启用),那么需要打开端口 20 和 21 —— FTP 守护进程正在监听它们——从而才能允许从远程机器访问 FTP 服务,然后,像下面这样添加新的防火墙规则:
$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
$ sudo ufw status
第二步:在 Ubuntu 中配置并保护 VSFTPD 服务器
让我们进行一些配置来设置和保护 FTP 服务器。首先,我们像下面这样创建一个原始配置文件 /etc/vsftpd/vsftpdconf 的备份文件:
$ sudo cp /etc/vsftpdconf /etc/vsftpdconforig
接下来,打开 vsftpd 配置文件。
$ sudo vi /etc/vsftpdconf
OR
$ sudo nano /etc/vsftpdconf
把下面的这些选项添加/改成所展示的值:
anonymous_enable=NO # 关闭匿名登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 启用可以修改文件的 FTP 命令
local_umask=022 # 本地用户创建文件的 umask 值
dirmessage_enable=YES # 当用户第一次进入新目录时显示提示消息
xferlog_enable=YES # 一个存有详细的上传和下载信息的日志文件
connect_from_port_20=YES # 在服务器上针对 PORT 类型的连接使用端口 20(FTP 数据)
xferlog_std_format=YES # 保持标准日志文件格式
listen=NO # 阻止 vsftpd 在独立模式下运行
listen_ipv6=YES # vsftpd 将监听 ipv6 而不是 IPv4,你可以根据你的网络情况设置
pam_service_name=vsftpd # vsftpd 将使用的 PAM 验证设备的名字
userlist_enable=YES # 允许 vsftpd 加载用户名字列表
tcp_wrappers=YES # 打开 tcp 包装器
现在,配置 VSFTPD ,基于用户列表文件/etc/vsftpduserlist 来允许或拒绝用户访问 FTP。
注意,在默认情况下,如果通过userlist_enable=YES 启用了用户列表,且设置userlist_deny=YES 时,那么,用户列表文件/etc/vsftpduserlist 中的用户是不能登录访问的。
但是,选项userlist_deny=NO 则反转了默认设置,这种情况下只有用户名被明确列出在/etc/vsftpduserlist 中的用户才允许登录到 FTP 服务器。
userlist_enable=YES # vsftpd 将会从所给的用户列表文件中加载用户名字列表
userlist_file=/etc/vsftpduserlist # 存储用户名字的列表
userlist_deny=NO
重要的是,当用户登录 FTP 服务器以后,他们将进入 chrooted 环境,即当在 FTP 会话时,其 root 目录将是其 home 目录。
接下来,我们来看一看两种可能的途径来设置 chrooted(本地 root)目录,正如下面所展示的。
这时,让我们添加/修改/取消这两个选项来将 FTP 用户限制在其 home 目录
chroot_local_user=YES
allow_writeable_chroot=YES
选项chroot_local_user=YES 意味着本地用户将进入 chroot 环境,当登录以后默认情况下是其 home 目录。
并且我们要知道,默认情况下,出于安全原因,VSFTPD 不允许 chroot 目录具有可写权限。然而,我们可以通过选项 allow_writeable_chroot=YES 来改变这个设置
保存文件然后关闭。现在我们需要重启 VSFTPD 服务从而使上面的这些更改生效:
------------- On SystemD -------------
# systemctl restart vsftpd
------------- On SysVInit -------------
# service vsftpd restart
第三步:在 Ubuntu 上测试 VsFTP 服务器
现在,我们通过使用下面展示的 useradd 命令创建一个 FTP 用户来测试 FTP 服务器:
$ sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
$ sudo passwd aaronkilik
然后,我们需要像下面这样使用 echo 命令和 tee 命令来明确地列出文件/etc/vsftpduserlist 中的用户 aaronkilik:
$ echo "aaronkilik" | sudo tee -a /etc/vsftpduserlist
$ cat /etc/vsftpduserlist
现在,是时候来测试上面的配置是否具有我们想要的功能了。我们首先测试匿名登录;我们可以从下面的输出中很清楚的看到,在这个 FTP 服务器中是不允许匿名登录的:
# ftp 19216856102
Connected to 19216856102 (19216856102)
220 Welcome to TecMintcom FTP service
Name (19216856102:aaronkilik) : anonymous
530 Permission denied
Login failed
ftp> bye
221 Goodbye
接下来,我们将测试,如果用户的名字没有在文件/etc/vsftpduserlist 中,是否能够登录。从下面的输出中,我们看到,这是不可以的:
# ftp 19216856102
Connected to 19216856102 (19216856102)
220 Welcome to TecMintcom FTP service
Name (1921685610:root) : user1
530 Permission denied
Login failed
ftp> bye
221 Goodbye
现在,我们将进行最后一项测试,来确定列在文件/etc/vsftpduserlist 文件中的用户登录以后,是否实际处于 home 目录。从下面的输出中可知,是这样的:
# ftp 19216856102
Connected to 19216856102 (19216856102)
220 Welcome to TecMintcom FTP service
Name (19216856102:aaronkilik) : aaronkilik
331 Please specify the password
Password:
230 Login successful
Remote system type is UNIX
Using binary mode to transfer files
ftp> ls
在 Ubuntu 中确认 FTP 登录
警告:设置选项allow_writeable_chroot=YES 是很危险的,特别是如果用户具有上传权限,或者可以 shell 访问的时候,很可能会出现安全问题。只有当你确切的知道你在做什么的时候,才可以使用这个选项。
我们需要注意,这些安全问题不仅会影响到 VSFTPD,也会影响让本地用户进入 chroot 环境的 FTP daemon。
因为这些原因,在下一步中,我将阐述一个更安全的方法,来帮助用户设置一个非可写本地 root 目录。
第四步:在 Ubuntu 中配置 FTP 用户的 Home 目录
现在,再次打开 VSFTPD 配置文件。
$ sudo vi /etc/vsftpdconf
OR
$ sudo nano /etc/vsftpdconf
然后像下面这样用# 把不安全选项注释了:
#allow_writeable_chroot=YES
接下来,为用户创建一个替代的本地 root 目录(aaronkilik,你的可能和这不一样),然后设置目录权限,取消其他所有用户对此目录的写入权限:
$ sudo mkdir /home/aaronkilik/ftp
$ sudo chown nobody:nogroup /home/aaronkilik/ftp
$ sudo chmod a-w /home/aaronkilik/ftp
然后,在本地 root 目录下创建一个具有合适权限的目录,用户将在这儿存储文件:
$ sudo mkdir /home/aaronkilik/ftp/files
$ sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
$ sudo chmod -R 0770 /home/aaronkilik/ftp/files/
之后,将 VSFTPD 配置文件中的下面这些选项添加/修改为相应的值:
user_sub_token=$USER # 在本地 root 目录中插入用户名
local_root=/home/$USER/ftp # 定义各个用户的本地 root 目录
保存文件并关闭。然后重启 VSFTPD 服务来使上面的设置生效:
------------- On SystemD -------------
# systemctl restart vsftpd
------------- On SysVInit -------------
# service vsftpd restart
现在,让我们来最后检查一下,确保用户的本地 root 目录是我们在他的 Home 目录中创建的 FTP 目录。
# ftp 19216856102
Connected to 19216856102 (19216856102)
220 Welcome to TecMintcom FTP service
Name (1921685610:aaronkilik) : aaronkilik
331 Please specify the password
Password:
230 Login successful
Remote system type is UNIX
Using binary mode to transfer files
ftp> ls
建议你看下这篇文档http://wwwlinuxprobecom/ubuntu-ftp-servicehtml,我觉得挺详细的
0条评论