Ubuntu的FTP服务配置

来源:互联网 发布:mac安装raysource 编辑:程序博客网 时间:2024/04/19 07:39

Ubuntu自带的FTP服务器是vsftpd.

安装使用

1、安装vsftpd

sudo apt-get install vsftpd

安装了之后会在/home/下建立一个ftp目录。这时候你可以试着访问下ftp://IP地址。应该可以看到一个空白内容的ftp空间。

默认设置下匿名用户可以下载,但不能写入或是上传

2、设置 vsftpd.conf文件

现在我们要让匿名用户无法访问,并且得输入linux上的用户密码后才能访问到他们自己目录里的内容。

首先找到设置vsftpd的文件,位置在/etc/vsftpd.conf

sudo gedit /etc/vsftpd.conf

服务器的配置 

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=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=/任意指定的路径/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=50000bite)(本地用户传输率50K

 

Anon_max_rate=30000bite)(匿名用户传输率30K

 

Pasv_min_port=50000 (将客户端的数据连接端口改在

 

Pasv_max_port=60000 5000060000之间)

 

Max_clients=200 FTP的最大连接数)

 

Max_per_ip=4 (每IP的最大连接数)

 

Listen_port=5555 (从5555端口进行数据连接)

 

8.查看谁登陆了FTP,并杀死它的进程

 

ps –xf |grep ftp

 

kill 进程号

 

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

 

最后重启动服务

 

sudo /etc/init.d/vsftpd restart

 

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

高级配置

 

 

1.配置本地组访问的FTP

 

首先创建用户组 testFTP的主目录

 

 

groupadd test

 

 

 

mkdir /tmp/test

 

 

然后创建用户

 

 

useradd -G test –d /tmp/test –M usr1

 

注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定

 

M:不建立默认的自家目录,也就是说在/home下没有自己的目录

 

useradd –G test –d /tmp/test –M usr2

 

接着改变文件夹的属主和权限

 

chown usr1.test /tmp/test ----这表示把/tmp/test的属主定为usr1

 

chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限都没有

 

这个实验的目的就是usr1有上传、删除和下载的权限

 

usr2只有下载的权限没有上传和删除的权限

 

当然啦大家别忘了我们的主配置文件vsftpd.conf

 

要确定local_enable=yeswrite_enable=yeschroot_local_usr=yes这三个选项是有的哦!

 

2.配置独立FTP的服务器的非端口标准模式进行数据连接

 

这个非常容易:在VSFTPDCONF中添加

 

Listen_port=33333

 

 

 

3.配置单独的虚拟FTP,使用虚拟FTP用户,并使建立的四个帐户中有不同的权限

 

(两个有读目录的权限,一个有浏览、上传、下载的权限,一个有浏览、下载、删除和改文件名的权限)

 

A:配置网卡

 

第一块网卡地址是10.2.3.4掩码是255.255.0.0

 

ifconfig eth0:1 211.131.4.253 netmask255.255.255.0 up

 

B:写入/etc/sysconfig中(为了重起后IP地址不会丢失)

 

cd /etc/sysconfig/network-scripts

 

cp ifcfg-eth0 ifcfg-eth0:1

 

vi ifcfg-eth0:1在其中修改内容如下

 

DEVICE=eth0:1

 

BROADCAST=211.131.4.255

 

HWADDR=该网卡的MAC地址

 

IPADDR=211.131.4.253

 

NETMASK=255.255.255.0

 

NETWORK=211.131.4.0

 

ONBOOT=yes

 

TYPE=Ethernet

 

wq推出

 

C:进入vsftpd.conf所在的文件夹

 

cp vsftpd.conf vsftpd2.conf

 

修改vsftpd.conf添加以下信息

 

Listen_address=10.2.3.4

 

修改vsftpd2.conf添加以下信息

 

Listen_address=211.131.4.253

 

Ftpd_banner=this is a virtual ftp test

 

到此虚拟的FTP服务器建立好了

 

D:建立logins.txt

 

vi /tmp/logins.txt

 

添加入下信息:

 

moonlight ----username

moonlight -----password

 

格式要按照我的来哦,一个用户名,一个密码啦

 

F:建立访问者的口令库文件,然后修改其权限

db_load –T –t hash –f /tmp/logins.txt/etc/vsftpd_login.db

 

 

G:进如/etc/pam.d/中创建ftp.vu

 

在此文件中添加如下信息

 

 

 

auth required /lib/security/pam_userdb.sodb=/etc/vsftpd_login

 

 

 

account required/lib/security/pam_userdb.so db=/etc/vsftpd_login

 

 

H:在/var/ftp/创建目录并改变其属性和它的属主

 

useradd -d /var/ftp/test qiang

 

chmod 700 /var/ftp/test

 

在目录中添加test_file测试文件

 

I:进入vsftpd2.conf修改其中的信息(我加的是)

 

 

Listen_yes

 

 

 

Anonymous_enable=no

 

 

 

Local_enable=yes

 

 

 

Write_enable=no

 

 

 

Anon_upload_enable=no

 

 

 

Anon_mkdir_write_enable=no

 

 

 

Anon_other_write_enable=no

 

 

 

Chroot_local_user=yes

 

 

 

Guest_enable=yes----------起用虚拟用户

 

 

 

Guest_username=qiang------将虚拟用户映射为本地用户

 

 

 

Listen_port=5555

 

 

 

Max_client=10

 

 

 

Max_per_ip=1

 

 

 

Ftpd_banner=this is a virtual server andusers

 

 

 

Pam_service_name=ftp.vu

 

 

注:在主配置文件中给的权限越低,在后面分用户管理的时候对拥护的权限划分的空间就越大,因为主配置文件最高的限制服务先读主配置文件,然后再读用户的配置文件

 

重起服务

 

到此虚拟USER就建好了

 

J:在VSFTPDCONF所在的目录中创建virtaul文件目录

 

并在文件目录中创建以你用户名命名的配置文件

 

moonlight

 

moonlight中添加

 

 

Anon_world_readable_only=no

 

 

 

Write_enable=yes

 

 

 

Anon_upload_enable=yes

 

 

 

Anon_other_write_enable=yes

 

 

此用户就有了上传、下载、删除文件目录、修改文件名和浏览的权限

 

K:修改vsftpd2.conf

 

加入user_config_dir=/vsftpd.conf所在的目录/virtual

 

重起服务器就搞定了

 

配置

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服务器)*

 

 

 

Anon_upload_enable=yes (开放上传权限)

 

 

 

Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)

 

 

 

Write_enable=yes (开放本地用户写的权限)

 

 

 

Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

 

 

 

Anon_world_readable_only=no (放开匿名用户浏览权限)

 

 

 

Ascii_upload_enable=yes (启用上传的ASCII传输方式)

 

 

 

Ascii_download_enable=yes (启用下载的ASCII传输方式)

 

 

 

Banner_file=/var/vsftpd_banner_file (用户连接后欢迎信息使用的是此文件中的相关信息)

 

 

 

Idle_session_timeout=600()(用户会话空闲后10分钟)

 

 

 

Data_connection_timeout=120(秒)(将数据连接空闲2分钟断)

 

 

 

Accept_timeout=60(秒)(将客户端空闲1分钟后断)

 

 

 

Connect_timeout=60(秒)(中断1分钟后又重新连接)

 

 

 

Local_max_rate=50000bite)(本地用户传输率50K

 

 

 

Anon_max_rate=30000bite)(匿名用户传输率30K

 

 

 

Pasv_min_port=50000 (将客户端的数据连接端口改在

 

 

 

Pasv_max_port=60000 5000060000之间)

 

 

 

Max_clients=200 FTP的最大连接数)

 

 

 

Max_per_ip=4 (每IP的最大连接数)

 

 

 

Listen_port=5555 (从5555端口进行数据连接)

 

 

 

Local_enble=yes (本地帐户能够登陆)

 

 

 

Write_enable=no (本地帐户登陆后无权删除和修改文件)

 

 

 

这是一组

 

 

 

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

 

 

 

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

 

 

 

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

 

 

 

(前提是chroot_local_user=no

 

 

 

这又是一组

 

 

 

Userlist_enable=yes (在指定的文件中的用户不可以访问)

 

 

 

Userlist_deny=yes

 

 

 

Userlist_file=/指定的路径/vsftpd.user_list

 

 

 

又开始单的了

 

 

 

Banner_fail=/路径/文件名(连接失败时显示文件中的内容)

 

 

 

Ls_recurse_enable=no

 

 

 

Async_abor_enable=yes

 

 

 

One_process_model=yes

 

 

 

Listen_address=10.2.2.2 (将虚拟服务绑定到某端口)

 

 

 

Guest_enable=yes (虚拟用户可以登陆)

 

 

 

Guest_username=所设的用户名(将虚拟用户映射为本地用户)

 

 

 

User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹

 

 

 

(指定不同虚拟用户配置文件的路径)

 

 

 

又是一组

 

 

 

Chown_uploads=yes (改变上传文件的所有者为root

 

 

 

Chown_username=root

 

 

 

又是一组

 

 

 

Deny_email_enable=yes (是否允许禁止匿名用户使用某些邮件地址)

 

 

 

Banned_email_file=//任意指定的路径/xx/

 

 

 

又是单的

 

 

 

Pasv_enable=yes (服务器端用被动模式)

 

 

 

User_config_dir=/任意指定的路径//任意文件目录 (指定虚拟用户存放配置文件的路径)

如需要使用本地用户登陆关闭来宾用户,必须设置如下命令:

anonymous_enable=no

 

guest_enable=no

 

local_enable=yes

 

write_enable=yes

 

local_umask=022

 

chroot_list_enable=yes

 

chroot_list_file=/etc/vsftpd.chroot_list (如没有则自己创建)

 

(在etc/vsftpd.chroot_list填入需要登陆的本地用户名)

过程中遇到的问题:

注意事项:

修改vsftpd的默认根目录的方法

修改vsftpd的配置文件,添加下面三行

local_root=/media/ftp/pub

chroot_local_user=YES

anon_root=/var/www/html/

local_root 表示本地用户登录后的根目录,也就是非匿名,而是输入用户名和密码登录进入的,这里顺便说一下ftp登录的格式

ftp://username:passwd@localhost

anon_root anonymous用户,即匿名用户访问的主目录

 

但是这时候可能会出现以下报错:

[root@localhost pub]# lftp localhost

lftp localhost:~> ls

ls: Login failed: 500 OOPS: vsftpd:refusing to run with writable anonymous root

原因还是权限设置问题:

ftp默认主目录权限设置不对,我这里报这个错误是因为/media/ftp设置权限为777,/media/ftp/pub设置权限也为777。正确的权限设置是将/media/ftp权限设置为755chmod 755 /media/ftp后重启ftp服务就ok了。

另:

如果你是默认的ftp目录出现此问题,那一定是这个/home/ftp的权限不对所致,这个目录的权限是不能打开所有权限的;是您运行了chmod 777 /home/ftp所致;如果没有ftp用户这个家目录,当然您要自己建一个;

如下FTP用户的家目录是不能针对所有用户、用户组、其它用户组完全开放;

[root@localhost ~]# ls -ld /home/ftp

drwxrwxrwx 3 root root 4096 2005-03-23/home/ftp

修正这个错误,应该用下面的办法;

[root@localhost ~]# chown root:root/home/ftp

[root@localhost ~]# chmod 755 /home/ftp

有的弟兄可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/home/ftp下再建一个目录,权限是777的就行了,再改一改vsftpd.confOK了;没有什么难的;

vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsFTPd的文档就明白的了;否则也不能称为最安全的FTP服务器了,对不对?

解决ftp 425 bad ipconnecting错误

vsftp内网正常登陆,但外网就会出现

425 bad ip connecting问题

解决办法

编辑/etc/vsftpd/vsftpd.conf

添加pasv_promiscuous=YES

重起服务就可以了

vsftpd TCP_wrapper结合限制用户的ip地址登录

vsftpd TCP_wrapper结合到一块来实现这种要求

/etc/hosts.allow 定义允许的地址:

/etc/hosts.deny 定义拒绝的来源地址.

 

如下:

/etc/hosts.allow

 

[root@BJFS-PIM root.adminssh]# cat/etc/hosts.allow

#

# hosts.allow This file describes the namesof the hosts which are

# allowed to use the local INET services,as decided

# by the ‘/usr/sbin/tcpd’ server.

#

vsftpd :123.103.47.0/255.255.255.0218.240.63.0/255.255.255.0 59.46.172.0/255.255.255.0 10.0.0.0/255.0.0.060.2.80.0/255.255.255.0 218.249.230.0/255.255.255.0 160.10.0.0/255.255.0.0218.246.69.0/255.255.255.0 125.35.3.0/255.255.255.0:allow

 

/etc/hosts.deny

#

# hosts.deny This file describes the namesof the hosts which are

# *not* allowed to use the local INETservices, as decided

 

#

# The portmap line is redundant, but it isleft to remind you that

# the new secure portmap uses hosts.denyand hosts.allow. In particular# you should know that NFS uses portmap!

 

vsftpd : ALL : DENY

 

tcp_wrappers=yes添加至/etc/vsftpd/vsftpd.conf

 

vi /etc/vsftpd/vsftpd.conf

tcp_wrappers=YES

 

重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpdrestart

来自:http://hi.baidu.com/squiant/blog/item/91243eb477dab9c336d3ca3b.html

 

原创粉丝点击