FTP服务器

一、FTP服务器简介

   FTP服务器的功能除了单纯地进行文件的传输与管理之外,依据服务器软件的配置架构,它还可以提供以下几个主要的功能:

1.不同等级的用户身份:user、guest、anonynous

    FTP服务器在默认的情况下,依据用户登录的情况,分为三种不同的身份,分别是实体用户real user,访客guest,匿名用户anonymous。这三种身份的用户在系统上面的权限差异很大,例如实体用户取得的系统权限比较完整,所以可以进行比较多的操作;至于匿名用户,大概我们就仅提供他下载资源的能力而已,并不允许匿名用户使用太多主机的资源。当然,这三种用户能够使用的“在线命令”自然也就不相同了。

2.命令记录与日志文件记录

    FTP可以利用系统的syslogd来进行数据的记录。而记录的数据包括了曾经使用过的命令与用户传输数据(传输时间、文件大小等)的记录,所以你可以很轻松的在/var/log里面找到各项日志信息。

3.限制用户活动的目录:change root,简称 chroot)

    为了避免用户在你的linux系统中随意逛大街(意思是离开用户主目录而进入到linux系统的其他目录去),所以将用户的工作范围局限在用户的主目录下面。FTP可以限制用户仅能在自己的用户主目录当中活动。如此一来,由于用户无法离开自己的用户主目录,而且登录FTP后,显示的根目录就是自己用户主目录的内容,这种环境称之为change root,简称chroot,即改变根目录的意思。

    还有什么好处呢?当一个恶意的用户以FTP登录到你的系统当中,如果没有chroot的环境,它可以到/etc,/usr/local,/home等其他重要目录下面去查看文件数据,尤其是很重要的/etc下面的配置文件,如/etc/passwd等。如果你没有做好一些文件爱你权限的管理与保护,那他就有办法取得系统的某些重要信息,用来侵入你的矽统。而在chroot的环境下,当然就比较安全一些。

二、FTP的安全性问题与替代方案

如果真的要架设FTP网站,那么还是要注意以下几个事项:

1)随时更新到最新版本的FTP软件,并且随时注意漏洞信息。

2)善用iptables来规定可以使用的FTP网络。

3)善用TCP_Wrappers来规范可以登录的网络。

4)善用FTP软件的设置来限制使用你的FTP服务器的用户的不同权限。

5)使用super daemon 来管理你的FTP 服务器。

6)随时注意用户的用户主目录和你密码用户登录的目录的文件权限。

7)若不对外公开的话,或许也可以修改FTP的port。

8)也可以使用FTPs这种加密的FTP功能。

三、开放什么身份的用户登录

1、开放实体用户的情况(real user)

    很多的FTP服务器默认就已经允许实体用户登陆了。不过,需要了解的是,以实体用户作为FTP登陆者身份时,系统默认并没有对实体用户来进行限制的,所以他可以针对整个文件系统进行任何他所具有权限的工作。因此,如果你的FTP用户没能好好的保护自己的密码而被***,那么你的整个linux系统数据将很有可能被窃取。开放实体用户时的建议如下:

    使用替代的FTP方案较好。由于实体用户本来就可以通过网络连接到主机进行工作(例如SSH),因此实在没有必要特别的开放FTP的服务,因为比如sftp本来就能达到传输文件的功能。

    限制用户能力,如chroot与/sbin/nologin等。如果确定要让实体用户利用FTP服务器的话,那么你可能需要让某些系统账号无法登陆FTP才行,例如bin,apache等。

2、访客身份(guest)

    在通常会建立guest身份的案例当中,多半是由于服务器提供了类似个人web首页的功能给一般用户,那么这些用户需要管理自己的网页空间。这个时候将用户身份压缩成为guest,并且将他的可用目录设置好,即可提供用户一个方便的使用环境了。且不需要提供他real user的权限。常见的建议如下:

仅提供需要登录的账号即可,不需要提供系统上所有人均可登录的环境。

    在服务器的设置当中,我们需要针对不同的访客给他们不一样的用户主目录,而这个用户主目录与用户的权限的设置需要相符合。例如要提供dmtsai这个人管理他的网页空间,而他的网页空间放置在/home/dmtsai/www下面,那就将dmtsai在FTP提供的目录仅有/home/dmtsai/www而已,这样做比较安全,而且也方便用户使用。

    针对这样的用户身份,需要设置较多的限制,包括:上传(下载)文件数目与硬盘容量的限制、连续登录的时间限制、许可使用的命令限制,例如,不允许使用chmod等。

3、匿名登录用户(anonymous)

    提供匿名登录用户进入因特网实在不是个好主意,因为每个人都可以下载你的数据,贷款很容易被耗尽。但如同前面讲过的,学校单位需要分享给全校同学一些软件资源时,FTP服务器也是一个很不错的解决方案。如果要开放匿名用户的话,要注意:

    无论如何,提供匿名登陆都是一件十分危险的事情,因为只要你一不小心,将重要的资料放到匿名用户可以读取的目录中时,那么就很有可能会泄密。与其害怕发生这样的事,不如就不要开放匿名登录。

四、所需要的软件以及软件结构

1、所需软件和软件结构

    vsftp所需要的软件只有一个,那就是vsftpd。这个软件暗转很简单

[root@localhost opt]# yum install vsftpd

/etc/vsftpd/vsftpd.conf


[root@localhost opt]# nl /etc/vsftpd/vsftpd.conf | sed 's/#.*//g '| grep =

    12 anonymous_enable=YES

    15 local_enable=YES

    18 write_enable=YES

    22 local_umask=022

    27 anon_upload_enable=YES

    31 anon_mkdir_write_enable=YES

    35 dirmessage_enable=YES

    39 xferlog_enable=YES

   42 connect_from_port_20=YES

    47 chown_uploads=YES

    48 chown_username=whoever

    50 The name of log file when xferlog_enable=YES and xferlog_std_format=YES

    52 xferlog_file=/var/log/xferlog

    56 xferlog_std_format=YES

    59 idle_session_timeout=600

    62 data_connection_timeout=120

    66 nopriv_user=ftpsecure

    71 async_abor_enable=YES

    81 ascii_upload_enable=YES

    82 ascii_download_enable=YES

    85 ftpd_banner=Welcome to blah FTP service.

    89 deny_email_enable=YES

    91 banned_email_file=/etc/vsftpd/banned_emails

    96 chroot_local_user=YES

    97 chroot_list_enable=YES

    99 chroot_list_file=/etc/vsftpd/chroot_list

   105 ls_recurse_enable=YES

   110 listen=YES

   115 listen_ipv6=YES

   116 pam_service_name=vsftpd

   117 userlist_enable=YES

   118 tcp_wrappers=YES

在查看这个文件的时候,我做了一些简化处理,把注释去掉了,同时只选取其中带有等号的行

/etc/pam.d/vsftpd

[root@localhost opt]# cat /etc/pam.d/vsftpd 

#%PAM-1.0

session    optional     pam_keyinit.so    force revoke

auth       required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth       required pam_shells.so

auth       include password-auth

account    include password-auth

session    required     pam_loginuid.so

session    include password-auth

这个是vsftpd使用PAM模块时的相关配置文件。主要用来作为身份认证之用,还有阻挡一些用户身份的功能,也是通过这个文件来实现的。

/etc/vsftpd/ftpusers

[root@localhost opt]# 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

与上一个文件有关系,也就是PAM模块(/etc/pam.d/vsftpd)所指定的那个无法登录的用户配置文件。这个文件的设置很简单,你只要将不想让他登陆的FTP账号写入这个文件即可。一行一个账号。

由上面可以看出,绝大部分的系统账号都在这个文件中,也就是说,系统默认账号是没有办法使用vsftpd的。如果你还想要让某些用户无法登录,写在这里是最快的。

/etc/vsftpd/user_list

[root@localhost opt]# cat /etc/vsftpd/user_list | sed 's/#.*//g'| sed '/^$/d'

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

这个文件是否能够生效与vsftpd.conf内的两个参数有关,分别是userlist_enable和userlist_deny。如果说/etc/vsftpd/ftpusers是PAM模块的阻挡访问设置项目,那么/etc/vsftpd/user_list则是vsftpd自定义阻挡访问项目。事实上这个文件与/etc/vsftpd/ftpusers几乎一模一样,在默认情况下,可以将不允许登录vsftpd的账号写入这里。不过这个文件是否会发生作用由vsftpd.conf配置文件内的userlist_deny={YES/NO}决定。

/etc/vsftpd/chroot_list

    这个文件默认是不存在的,所以你必须手动自行建立。这个文件的主要功能是可以将某些账号的用户chroot建立在他们默认用户主目录下。但这个文件要生效与vsftpd.conf内的chroot_list_enable,chroot_list_file两个参数有关。如果你想要将某些实体用户限制在他们的用户主目录下而不需许到其他目录去,可以启动这个设置项目。

/usr/sbin/vsftpd

这是vsftpd的主要执行文件。vsftpd只有这一个执行文件而已。

/var/fp

    这是vsftpd默认匿名用户登录的根目录。其实与ftp这个账号的用户主目录有关。

2、vsftpd.conf配置值说明

与服务器环境比较相关的设置值

connect_from_port_20=YES(NO)

命令通道的ftp(默认是port 21)

数据传输的ftp-data(默认为port 20)

listen_port=21

命令通道的ftp(默认是port 21)

dirmessage_enable=YES(NO)

当用户进入某个目录时,会显示该目录需要注意的内容,显示的文件默认是.message,你可以使用下面的设置项目来定义。

message_file=.message

当dirmessage_enable=YES时,可以设置这个项目让vsftpd寻找该文件来显示信息。

listen=YES(NO)

若设置为YES,表示vsftpd是以standalone的方式来启动。

pasv_enable=yes(NO)

支持数据流的被动式连接模式(passive mode),一定要设置为YES。

use_localtime=YES(NO)

是否使用本地时间?要设置为YES,才能与你本地的电脑进行时间同步。

write_enable=YES(NO)

如果你允许用户上传数据,就要启动这个设置值。

connect_timeout=60

单位是秒,在数据连接的主动式连接模式下,我们发出的连接信号在60秒内得不到客户端的响应,则不等待并强制断线。

accept_timeout=60

当用户以被动式PASV来进行数据传输时,如果服务器启用passve port 并等待client超过60秒而无回应,那么就强制断线。这个设置值和connect_timeout类似,不过一个是管理主动连接,一个管理被动连接。

data_connection_timeout=300

如果服务器与客户端成功建立,但是肯恩由于线路问题导致300秒内还是无法顺利的完成数据的传输,那客户端的连接就会被我们的vsftpd强制剔除。

idle_session_timeout=300

如果用户在300秒内都没有命令操作,强制脱机!避免无用占用空间。

max_clients=0

如果vsftpd是以standalone方式启动的,那么这个设置项目可以设置同一时间最多有多少client可以同时连接上vsftpd,限制使用ftp的用量。

max_per_ip=0

与上面的类似,这里是同一个IP同一时间爱你可允许多少连接。

pasv_min_port=0\pasv_max_port=0

上面两个是与passive mode使用的port number有关,如果你想要使用65400到65410这11个port来进行被动式连接模式的连接,可以这样设置:pasv_max_port=65410和pasv_min_port=65400.如果是0的话,表示随机取用而不限制。

ftpd_banner=一些文字说明

当用户链接进入到vsftpd时,在FTP客户端软件上会显示的说明文字不过这个设置比较少,建议你可以试用下面的banner_file设置值取代这个项目。

banner_file=/path/flie

这个项目可以指定某个单纯文本文件作为用户登录vsftpd服务器时所显示的欢迎字眼。同时,也能够防止一些让用户知道本FTP服务器的目录结构。

与实体用户相关的设置值

guest_enable=YES(NO)

若这个值设置为YES时,那么任何实体账号,均会被假设成为guest(所以默认是不开放的)。至于访客在vsftpd当中,默认会取得ftp这个用户的相关权限。

在gust_enable=YES时才会生效,指定访客的身份。

local_enable=YES(NO)

这个设置值必须为YES,在/etc/passwd内的账号才能以实体用户的方式登陆我们的vsftpd服务器。

local_max_rate=0

实体用户的传输速度限制,单位为bytes/second,0为不限制。

chroot_local_user=YES(NO)

在默认情况下,是否要将用户限制在自己的用户主目录内(chroot)?如果是YES代表用户默认就会被chroot,如果是NO,则默认是没有chroot.不过,实际还是需要下面的两个参数互相参考才行。为了安全性,这里应该要设置成YES才好。

chroot_list_enable=YES(NO)

是否启用chroot写入列表的功能?与下面的chroot_list_file有关。这个项目需要开启,否则下面的列表文件回无效。

chroot_list_flie=/etc/vsftpd.chroot_list

如果chroot_list_enable=YES那么就可以设置这个项目了。这个项目与chroot_local_user有关。

userlist_enable=YES(NO)

是否借助vsftpd的阻挡机制来处理某些不受欢迎的账号,与下面的参数设置有关。。

userlist_deny=YES(NO)

当userlist_enable=YES时才会生效的设置,若此设置值为YES时,则当用户账号被列入某个文件时,在该文件内的用户将无法登录vsftpd服务器。该文件的文件名与下列设置项目有关。

userlist_file=/etc/vsftpd/user_list

若上面userlist_deny=YES时,则这个文件就有用了。这个文件内的账号都无法使用vsftpd

3.匿名用户登录的设置值

anonymous_enable=YES(NO)

设置是否允许anonymous登录vsftpd主机。默认是YES,下面的所有相关设置都需要将这个设置为YES才会生效。

anon_world_readable_only=YES(NO)

仅允许anonymous具有下载可读文件的权限,默认是YES.

anon_other_write_enable=YES(NO)

是否允许anonymous具有除了写入之外的权限,包括删除与修改服务器上的文件及文件名等权限。默认是NO。如果要射值为YE,那么开始给anonymous写入的目录也需要调整权限,让vsftpd的PID拥有者可以写入才行。

anon_mkdir_write_enable=YES(NO)

是否让anonymous具有简历目录的权限。

anon_upload_enable=YES

是否让anonymous具有上传数据的功能。

deny_email_enable=YES

将某些特殊的email阻挡住。

banned_email_file=/etc/vsftpd/banned_emails

如果deny_email_enable=YES

,可以利用这个设置来规定那个email不能登录我们的vsftpd。

no_anon_password=YES(NO)

当设置为YES时,表示anonymous将会略过密码检验步骤,而直接进入vsftpd服务器内。所以一般默认都是NO(登录时会检查输入的email)

anon_max_rate=0

这个设置值后面节的数据单位是bytes/秒,限制anonymous的传输速度,如果是0就不限制,如果你想让anonymous仅有30KB/s的速度,可以设置anon_max_rate=30000.

anon_umask=077

限制anonymous上传文件的权限!如果是077则anonymous传过来的文件权限会是-rw-------。

4、关于系统安全方面的一些设置值

ascii_upload_enable=YES

ascii_download_enable=YES

xferlog_enable=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

五、vsftpd启动的模式

    vsftpd可以使用standalone或super daemon的方式启动,操作系统默认是以standalone来启动的。那什么时候应该选择standalone或者是supper daemon呢?如果你的FTP服务器是提供给整个吟哦王来进行大量下载的任务,例如各大专院校的FTP服务器,那建议你使用standalone的方式,服务的速度上会比较好。如果仅是提供给内部人员使用的FTP服务器,那是用super daemon来管理即可。

1、利用操作系统提供的script来启动vsftpd(standalone)

[root@localhost opt]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@localhost opt]# netstat -tulnp|grep 21

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      10239/vsftpd        

 [root@localhost opt]#

2、自行设置以super daemon 来启动

将/etc/vsftpd/vsftpd.conf中

listen=NO

这里设置为NO

[root@localhost opt]# yum install xinetd

[root@localhost opt]# cat /etc/xinetd.d/vsftpd 

service ftp

{

 socket_type    = stream

    wait           = no

    user           = root

    server         = /usr/sbin/vsftpd

    log_on_success += DURATION USERID

    log_on_failure += USERID

    nice           = 10

    disable        = no

}

[root@localhost opt]# /etc/init.d/vsftpd stop

[root@localhost opt]# /etc/init.d/xinetd restart

Stopping xinetd:                                           [  OK  ]

Starting xinetd:                                           [  OK  ]

[root@localhost opt]# netstat -tulnp| grep 21

tcp        0      0 :::21                       :::*                        LISTEN      10284/xinetd

这样操作之后,还是把刚刚修改的配置文件修改回来,改为YES。

六、vsftpd的默认值


[root@localhost opt]# nl /etc/vsftpd/vsftpd.conf | sed 's/#.*//g '| grep =

1、与匿名用户有关的信息

    12 anonymous_enable=YES          支持匿名用户的登录使用FTP功能

2与实体用户有关的设置

    15 local_enable=YES                支持本地端的实体用户登录

    18 write_enable=YES                允许用户上传数据(包括文件和目录)

    22 local_umask=022                建立新目录755与文件644的权限

   


3、与服务器环境有关的设置

35 dirmessage_enable=YES  若目录下有.message则会显示该文件的内容

    39 xferlog_enable=YES      启动日志文件记录,记录于/var/log/xferlog

    42 connect_from_port_20=YES  支持主动式连接功能

   

    50 The name of log file when xferlog_enable=YES and xferlog_std_format=YES

 56 xferlog_std_format=YES    支持WuFTP的日志文件格式

  

   110 listen=YES               使用standalone方式启动vsftp


   116 pam_service_name=vsftpd   支持PAM模块的管理

   117 userlist_enable=YES     支持/etc/vsftpd/user_list文件内的账号登录控制

   118 tcp_wrappers=YES       支持TCP Wrappers的防火墙机制

通过上面的设置,我们的vsftpd可以实现如下的功能

1、你可以使用anonymous这个匿名账号或其他实体账号(/etc/passwd)登录。

2、anonymous的用户主目录在/var/ftp,且无上传权限,也已经被chroot了。

[root@localhost opt]# cd /var/ftp/

[root@localhost ftp]# ll

total 4

drwxr-xr-x. 2 root root 4096 Feb 13  2013 pub

[root@localhost ftp]# cd pub/

[root@localhost pub]# ll

total 0

wKiom1cPoEKAobcPAAA3aoJIY20449.png

3、实体用户的用户主目录参考/etc/passwd,并没有被chroot,可前往任何有权限可进入得目录中。

4、任何于/etc/vsftpd/ftpusers内存在的账号均无法使用vsftpd(PAM ).

5、可利用/etc/hosts.{allow|deny}来作为基础防火墙。

6、当客户端有任何上传/下载信息时,该信息会被记录到/var/log/xferlog中。

7、主动式连接的端口号为port 20

8、使用格林尼治时间(GMT)。

所以你当启动vsftpd后,你的实体用户就能够直接利用vsftpd这个服务来传输他自己的数据了。不过比较大的问题是,因为vsftpd默认使用GMT时间,所以你在客户端使用ftp软件连接到FTP服务器时,会发现每个文件的时间都慢了8个小时。修改方法就是在配置文件中加入

use_localtime=YES

 如此一来你的FTP服务器不但可以提供匿名账号来下载/var/ftp的数据,如果使用实体账号来登陆的话,就能够进入到该用户的用户主目录下去了。

    另外,当你要将FTP开放给internet使用时,请注意需要开放防火墙。关于防火墙的配置情况,由于涉及到数据流的主动、被动连接方式,因此还要加入防火墙模块。最终要开放FTP的连接要求就对了。

七、针对实体账号的设定

    虽然在操作系统默认情况当中实体用户已经可以使用FTP服务了,不过我们可能还需要一些额外的功能限制实体用户。举例来说,限制用户无法离开用户主目录(chroot)、限制下载速度、限制用户上传文件时的权限(mask)等。下面我们列出一些希望达到的功能,然后再继续进行额外功能的处理:

    希望使用本地时间取代GMT时间。

    用户登录时显示一些欢迎信息。

    系统账号不可登录主机(即UID小于500以下的账号)

    一般是替用户可以进行上传、下载、建立目录及修改文件等操作。

    用户建立文件、目录的umask希望设置为002.

    其他主机设置值保留默认值即可。

1、先建立主配置文件vsftpd.conf,这个配置文件已经包含了主要设置值。


[root@localhost log]# nl /etc/vsftpd/vsftpd.conf | sed 's/#.*//g'|grep =

    12 anonymous_enable=NO

    15 local_enable=YES

    18 write_enable=YES

    22 local_umask=002

    35 dirmessage_enable=YES

    39 xferlog_enable=YES

    42 connect_from_port_20=YES

    56 xferlog_std_format=YES

   110 listen=YES

   116 pam_service_name=vsftpd

 117 userlist_enable=YES

   118 userlist_deny=YES

   119 userlist_file=/etc/vsftpd/user_list     这个文件默认就存在

   120 tcp_wrappers=YES

   121 banner_file=/etc/vsftpd/welcom.txt   这是要手动建立

   122 use_localtime=YES    

标红的都是在默认的配置上做的修改。

[root@localhost log]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]

2、建立欢迎信息

[root@localhost log]# cat /etc/vsftpd/welcome.txt 

welcome to here!

FTP is happy to work for you!

3、建立系统账号登录的文件

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

这两个文件内容是一样的,并且这两个文件本来就已经存在的,这两个文件中的内容是一样的。请参考/etc/passwd配置文件,然后将UID小于500的账号名称同时写到这两个文件内。

[root@localhost log]# 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

[root@localhost log]# 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

4、测试结果

root用户无法登录

[root@localhost wulili]#yum install ftp   必须安装ftp,否则无法使用ftp命令

[root@localhost wulili]# ftp localhost

Trying ::1...

ftp: connect to address ::1Connection refused

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

220-welcome to here!

220-FTP is happy to work for you!

220 

Name (localhost:root): 123456

331 Please specify the password.

Password:

530 Login incorrect.

Login failed.

ftp> quit

221 Goodbye.

普通用户wulili无法登陆

[root@localhost wulili]# ftp localhost

Trying ::1...

ftp: connect to address ::1Connection refused

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

220-welcome to here!

220-FTP is happy to work for you!

220 

Name (localhost:root): wulili

331 Please specify the password.

Password:

500 OOPS: cannot change directory:/home/wulili

Login failed.

ftp>

    由于默认一般用户无法登录FTP的,因为SELinux的问题。root不能登陆是因为PAM模块以及user_list设置值的关系,而匿名无法登陆,是因为我们vsftpd.conf里设置的就是不能用匿名登录。

5、实体账号的SELinux议题

在默认情况下,操作系统的FTP是不允许实体账号登录取得用户主目录数据的,这是因为SELinux的问题。那如何解决呢?

[root@localhost wulili]# getsebool -a |grep ftp

allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> off

ftpd_connect_db --> off

ftpd_use_fusefs --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_use_cifs --> off

tftp_use_nfs --> off

[root@localhost wulili]# setsebool -p ftp_home_dir=1

setsebool: invalid option -- 'p'

[root@localhost wulili]# setsebool -p ftp_home_dir=1

setsebool: invalid option -- 'p'


Usage:  setsebool [ -PV ] boolean value | bool1=val1 bool2=val2...


[root@localhost wulili]# setsebool -P ftp_home_dir=1

[root@localhost wulili]# getsebool -a | grep ftp

allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> on

ftpd_connect_db --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_use_cifs --> off

tftp_use_nfs --> off

[root@localhost wulili


[root@localhost wulili]# ll

total 4

drwxr-xr-x. 2 root root 4096 Apr 14 17:59 1

[root@localhost wulili]# pwd

/home/wulili

wKiom1cPoduyQHqHAADSTMSngVw735.png


这样普通用户就能输入账号和密码登录进来,取得/home/wulili目录下的文件。


    这样就搞定了。如果还有其他可能发生错误的原因,包括文件数据使用mv而非使用cp导致SELinux文件类型无法继承原有目录的类型时,请自行查阅/var/log/messages的内容。

6、对用户(包括未来新建用户)进行chroot

    在接触的一般FTP使用环境中,大多数都是要开放给厂商连接来使用的,给自己人使用的机会虽然也有,不过用户数量通常比较少。所以,现在都是建议默认让实体用户全部被chroot,而允许不必chroot的账号才需要额外设置。这样的好处是,新建的账号如果忘记进

行chroot,反正原本就是choot,就不用担心如果该账号是开给厂商时该怎么办的问题。

[root@localhost wulili]# vi /etc/vsftpd/vsftpd.conf

chroot_local_user=YES

chroot_list_enable=YES

# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list


[root@localhost wulili]# vi /etc/vsftpd/chroot_list

[root@localhost wulili]# cat /etc/vsftpd/chroot_list

vbird

dmtsai

[root@localhost wulili]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]



被设置为chroot,就说明这个用户登录只能查看用户主目录下的文件,默认情况下,用户登录只能在自己的主目录内待着,写在/etc/vsftpd/chroot_list中的用户,登录ftp的时候,权限就比较大一些,能够进入到别的目录下。在上面这个例子当中,vbird和dmtsai这两个用户权限就比较大,能够进入到linux服务器的其他目录,查看目录下的内容。

wKioL1cPowbi6eexAAEb-LmdUfU923.pngvbird用户登录能够查看opt目录,还有其他目录,权限比较大。

八、客户端的图形接口FTP连接软件

Filezilla

wKioL1cPo0PgtKX7AADVwnMkQ9I430.png