Linux: FTP服务原理及vsfptd的安装、配置

1.FTP 服务的安装
# yum install -y vsftpd
[root@rusky pub]# ls -l /etc/vsftpd/
total 20
-rw-------. 1 root root 125 Aug 3 2015 ftpusers
-rw-------. 1 root root 361 Aug 3 2015 user_list
-rw-------. 1 root root 5030 Aug 3 2015 vsftpd.conf
-rwxr--r--. 1 root root 338 Aug 3 2015 vsftpd_conf_migrate.sh

四个配置文件,vsftpd.conf 是我们的主配置文件,ftpusers是我们的黑名单用户配置文件,通常我们的系统用户还有根用户都是放在这个配置文件里面的,因为这些用户的权限很大,如果使用ftp服务可能造成一些问题,user_list是我们的用户列表文件,我们可以通过在主配置文件里设置该用户是黑名单用户还是白名单拥有,最后一个是我们的ftp服务迁移脚本。

FTP共享目录:/var/ftp/

2. FTP服务启停(RHEL7)

# systemctl vsftpd start/stop/status vsftpd.service

#systemctl restart vsftpd

其它操作系统版本的FTP启停方式:service vsftpd stop/start/status

3. 登录方式

  • 使用Linux系统用户

  普通系统用户登录后,进入的是用户home目录

  • 匿名用户(anonymours)

  匿名用户登录后进行/var/pub目录。在默认情况下,在vsftpd安装的时候会创建一个 ftp 系统用户,这个用户就是用来进行匿名登陆的用户,ftp匿名用户默认登陆到的目录是 /var/ftp/ 目录,没有任何访问限制权限的文件都能提供给匿名用户进行共享。vsftpd.conf主配置文件anoymous参数要设置为yes开户匿名用户访问。

[root@rusky ftp]# cat /etc/passwd | grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

修改vsftpd主配置文件开启匿名用户上传的功能:

anonymous_enable=YES --开启匿名用户访问(默认)

anon_upload_enable=YES  --打开匿名用户文件上传功能

anon_mkdir_write_enable=YES  --打开匿名用户创建文件夹功能

  • 虚拟用户

  虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。

FTP服务启动后就可以使用FTP工具连接到FTP服务器了。(注意关闭防火墙或是防火墙开启21端口)


4.FTP主配置文件参数说明

如果要更改默认下载目录,修改/etc/vsftpd/vsftpd.conf,加入如下三行:
local_root=/ //表示使用本地用户登录到ftp时的默认目录,没有这个参数或是不设定,默认登录到用户自己的home目录
anon_root=/var/ftp //表示匿名用户登录到ftp时的默认目录
anonymous_enable=YES //是否允许anonymous登录FTP服务器,默认是允许的.
local_enable=YES //是否允许本地用户登录FTP服务器,默认是允许
write_enable=YES //是否允许用户具有在FTP服务器文件中执行写的权限,默认是允许
anon_upload_enable=YES //是否允许匿名账户上传文件
anon_mkdir_write_enable=YES //是否允许匿名账户在FTP服务器中创建目录
dirmessage_enable=YES //激活目录信息,当远程用户更改目录时,将出现提示信息
xferlog_enable=YES //启用上传和下载日志功能
connect_from_port_20=YES //启用FTP数据端口的连接请求
xferlog_file=/var/log/vsftpd.log //设置日志文件的文件名和存储路径,这是默认的
xferlog_std_format=YES //是否使用标准的ftpd xferlog日志文件格式
idle_session_timeout=600 //设置空闲的用户会话中断时间,默认是10分钟
data_connection_timeout=120//设置数据连接超时时间,默认是120秒
ascii_download_enable=YES //是否允许使用ASCII格式来上传和下载文件
ftpd_banner=Welcome to blah FTP service.//在FTP服务器中设置欢迎登录的信息.
chroot_local_user=YES //将所有用户限定在主目录内,不允许切换到其它目录。为NO时允许用户切换到自己home目录以为的其它目录。
chroot_list_enable=YES //表示是否要启用chroot_list_file,即是否有例外的用户。
chroot_list_file=/etc/vsftpd/chroot_list //添加例外用户名单,每个用户占一行。
一般都是这三个参数一起使用,即除root账号外,其它所有用户都不允许切换到其它目录。把root账号添加到chroot_list文件中。

pam_service_name=vsftpd //设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/目录下.
userlist_enable=YES //用户列表中的用户是否允许登录FTP服务器,默认为YES时是不允许--这个参数是限制/etc/vsftpd/ftpusers文件中的用户是否允许登录FTP。

listen=YES //使vsftpd 处于独立启动模式
tcp_wrappers=YES //使用tcp_wrqppers作为主机访问控制方式

Max_clients=100 这就表示最多可以有100个用户同时访问

/etc/vsftpd/ftpusers文件说明
这个文件是用来记录"不允许"登录到FTP服务器的用户,通常是一些系统默认的用户.

[root@rusky ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
#root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

/etc/vsftpd/user_list文件说明
其实它的内容跟上面那个文件内容一样,只是在系统对文件vsftpd.conf 进行检测时,会检测到"userlist_deny=YES",因此这个文件必须存在.下面是这个文件的内容.

[root@rusky ~]# cat /etc/vsftpd/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.
#root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

============

FTP虚拟用户

[root@rusky ~]# adduser -g ftp -s /sbin/nologin lxjTestFtp
[root@rusky ~]# passwd lxjTestFtp
Changing password for user lxjTestFtp.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
[root@rusky ~]#

创建完成后,可使用ftp工具连接到ftp服务;但是不能使用该用户登录系统。

或者修改普通系统账号,取消用户SSH登录权限:usermod -s /sbin/nolog username

参考:http://www.cnblogs.com/hnrainll/archive/2011/02/16/1956536.html

上一篇:HDU 4166 & BNU 32715 Robot Navigation (记忆化bfs)


下一篇:POJ2749 Building roads