vsftpd的详细配置讲解

转  http://blog.51cto.com/cuimk/1306637

http://www.cnblogs.com/mrcln/p/6179673.html

开发那边更新速度如果比较快,每天会有无数的文件或者目录交给运维更新上线,这样比较麻烦,干脆给他们搭FTP让他们自己上传修改,但有一问题,就是权限问题,公司五个站点有五个目录,每个人负责不同的站点,如何让各自都不干扰别人,或者说不到别人的目录搞“破坏”!下面解决这个问题!

 

一。检查Linux中vsftpd的安装情况。

就不啰嗦了

二。将系统中的SELinux关闭,然后重新启动电脑(不关闭的话修改好标签也可以)

关闭SELinux的方法:

修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。

如果不想重启系统,使用命令setenforce 0

注:

setenforce 1 设置SELinux 成为enforcing模式

setenforce 0 设置SELinux 成为permissive模式

在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux

setsebool ftpd_disable_trans 1

 

三。建立用户和指定目录

注意:若要为目录制定相应的权限,最好在指定ftp家目录之前修改

然后将vsftpd.conf配置文件里的local_umask的值修改为000就可以了,生成目录默认777,文件默认666

#useradd -d /var/www -s /sbin/nologin ftp3

#passwd ftp3

建立用户ftp3,并指定其家目录为/var/www,禁止登陆

 

#useradd -d /var/web -s /sbin/nologin ftp4

#passwd ftp4

建立用户ftp4,并指定其家目录为/var/web,禁止登陆

 

这样ftp3和ftp4用户就被指定到相应的文件夹下。

 

四。修改vsftpd.conf配置文件

将anonymous_enable改为NO,阻止匿名上传

将chroot_list_enable和chroot_list_file的注释去掉,阻止用户访问上级目录

.切换到root用户

2.查看是否安装vsftp,我这个是已经安装的。

[root@localhost vsftpd]# rpm -qa |grep vsftpd
vsftpd-3.0.2-11.el7_2.x86_64

3.如果没有发现,则安装。

yum install vsftpd* -y

4.启动vsftpd服务,以及重启命令(centos7.0以上版本)

[root@localhost vsftpd]# /bin/systemctl start vsftpd.service
[root@localhost vsftpd]# /bin/systemctl restart vsftpd.service

低版本试一下这些命令:

/etc/init.d/vsftpd restart
启动ftp命令  #service vsftpd start

停止ftp命令  #service vsftpd stop

重启ftp命令  #service vsftpd restart

设置自启:chkconfig vsftpd on

5.测试一下能否登录FTP了,先安装一个ftp客户端组件。

yum -y install ftp 

尝试登录一下

ftp localhost 

输入用户名ftp,密码随便(因为默认是允许匿名的)

登录成功,就代表ftp服务可用了。

但是,外网是访问不了的,所以还要继续配置。

6.取消匿名登录

vi /etc/vsftpd/vsftpd.conf

把第一行的 anonymous_enable=YES ,改为NO

重启

[root@localhost vsftpd]# /bin/systemctl restart vsftpd.service

7.创建一个组,用于存放ftp用户

groupadd ftpgroups

8.创建ftp用户,并加入ftpgroups组,/home/ftp是自己建的目录,不存在就自己创建一个

useradd -d /home/ftp/ftptest -g ftpgroups ftptest

设置密码

passwd ftptest

设置不允许用于用户登录

usermod -s /sbin/nologin ftptest

 

可以看到已经建好了

[root@localhost vsftpd]# ls /home/ftp
ftpn  ftptest

这时候重启一下vsftpd服务

/bin/systemctl restart vsftpd.service

登录一下看,可以登录了,但是发现也能访问上层目录,甚至根目录,这不是我们希望的,修改一下配置文件让其只能访问自身目录

vi /etc/vsftpd/vsftpd.conf

如下设置

chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

 要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:

 allow_writeable_chroot=YES

 

好了,这样就只能访问自身所属目录。

如果希望某个用户可以访问根目录,把用户名加入

/etc/vsftpd/chroot_list

不存在就创建这个文件,一行一个用户名。

 

如果还是登陆不了ftp,那很有可能是selinux的问题,这个东西把他关掉就行

vi /etc/selinux/config

SELINUX=enforcing 设置成SELINUX=disabled

 

重启一下服务器

reboot

重启完了别忘了把vsftpd服务打开,默认是自启的。

 

如果连接不上,很可能是防火墙阻止了,尝试关闭防火墙

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

 

如果出现远程文件夹无法显示的情况,请使用主动模式连接,在你的ftp工具上设置。

 

 

vsftpd.conf
chroot_list_file=/etc/vsftpd.chroot_list
如果设置为
chroot_local_user=YES
chroot_list_enable=YES(这行可以没有, 也可以有)
chroot_list_file=/etc/vsftpd.chroot_list
那么, 凡是加在文件vsftpd.chroot_list中的用户都是不受限止的用户,即, 可以浏览其主目录的上级目录.
如果不希望某用户能够浏览其主目录上级目录中的内容,可以如上设置,然后在文件vsftpd.chroot_list中去掉或不添加该用户即可。
也可以如下配置
chroot_local_user=NO
chroot_list_enable=YES(这行必须要有, 否则文件vsftpd.chroot_list不会起作用)
chroot_list_file=/etc/vsftpd.chroot_list
然后把所有不希望有这种浏览其主目录之上的各目录权限的用户添加到文件vsftpd.chroot_list中即可(一行一个用户名,此时, 在该文件中的用户都是不可以浏览其主目录之外的目录的)

 

五。在/etc/vsftpd下建立chroot_list文件

建立完成后,在其中添加用户ftp3,ftp4,(一行一个)使其只允许访问指定目录。

 

六。启动或是重启ftp服务。

#service vsftpd restart(start)

 

启动成功后,就可以访问ftp服务了。

下面附vsftpd.conf的一些配置

只要把这个配置改成NO,那么匿名用户不能访问了,只有本地用户才能登陆了

anonymous_enable=NO  这就可以了

1. 匿名服务器的连接(独立的服务器)

在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:

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=XXXXX (欢迎信息)

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 (本地帐户登陆后无权删除和修改文件)   参数为no的时候就时候允许本地用户可以上传

功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限

注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传

5. 用户登陆限制进其它的目录,只能进它的主目录

设置所有的本地用户都执行chroot

Chroot_local_user=yes (本地所有帐户都只能在自家目录)

设置指定用户执行chroot

Chroot_list_enable=yes (文件中的名单可以调用)

Chroot_list_file=/任意指定的路径/vsftpd.chroot_list

注意:vsftpd.chroot_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 进程号

posted @ 2018-04-29 17:36  猎手结缘  阅读(394)  评论(0编辑  收藏  举报