企业文件服务器需要ftp,搭建企业常用的 FTP 服务器

搭建企业常用的 FTP 服务器

(2012-01-02 23:52:01)

标签:

服务器

杂谈

搭建企业常用的 FTP 服务器搭建企业常用的 FTP 服务器

客户需求:

服务器(FTP 服务器)上有很多普通用户,每个用户都有自己的家目录。允许所有的用户通过

用户名和密码登录到 FTP 服务器上。但是有一个用户特殊,这个用户的密码是公开的,很多人

都知道,所以要求此用户登录服务器进入的并不是自己的家目录,而是一个指定的目录,同时

在这个用户看来,此目录就是根目录了。其他的所有用户都默认进入到自己的家目录,而且可

以出自己的家目录。特殊的用户可以上传文件,可以下载文件,但是不能删除和覆盖已经上传

的文件。

上面的需求是企业中真实存在的,需要实现的几个主要功能如下:

1. 除了特殊用户之外,其他的用户不需要做特殊的设置,因为默认情况下普通用户进入的

就是自己的家目录,并且可以出自己的家目录。

2. 特殊用户的登录的默认目录需要重新指定。

3. 特殊用户要 chroot,但是其他的普通用户不能 chroot。

4. 特殊用户不能删除和重写已经上传的文件。

我们先分析一下这几个功能都要如何实现:

第一个功能,不需要做格外的设定。

第二个功能,需要将特殊用户和其他普通用户区别来,也就是说我们要对特殊用户做特殊的设

定,vsftpd.conf 配置文件中的 user_config_dir 参数可以对用户做单独的设置。那么在特殊用户

自己的配置文件里我们要指定其默认的登录目录,用参数 local_root 可以实现。

第三个功能,只有一个用户要做 chroot,其他的普通用户不需要,那么就可以在 vsftpd.conf 配

置文件中用下面三个参数共同实现:

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

其中我们先讨论后两个参数,chroot_llist_enable 为 YES 的话,chroot_list_file

所指定的文件才

生效。chroot_list_file 文件里存放的是用户名,每一行一个用户名。当 chroot_local_user 为

YES 的话,那么除了 chroot_list_file 指定的文件里的用户不需要做 choot 操作之外,其他的所

有普通用户都需要做 chroot 操作;当 chroot_local_user 为 NO 的话,那么只有

chroot_list_file

指定的文件里的用户做 chroot 操作,其他的所有普通用户都不需要 choot。

显然,这个实验里我们要用到第二种情况,因为这样只要在 chroot_list_file 里写入特殊用户的

名字即可。否则要将所有用户都写入,而且每当添加新的用户时都要再写入此文件中。

第四个功能,既然用户可以上传文件,那么就应该可以对文件进行写操作,换言之,就可以对

文件进行删除操作。所以通过普通的 Linux 文件权限设定是实现不了的。但是 vsftpd.conf 文件

提供了一个很牛的参数——cmds_allowed。此参数可以指定用户都可以执行哪些操作,这里指

的操作是用户通过 vsftpd 登录到服务器后可以执行哪些 vsftpd 的命令。我们可以将除了 DELE

之外的所有命令都写到这个参数的后面,这样用户就仅仅不能进行删除操作了。因为只要限制

那个特殊用户而已,所以这个参数要添加到特殊用户自己的配置文件里。

现在我们就实际配置一下。

FTP 服务器的 IP:192.168.56.102

Client 端的 IP:192.168.56.101

服务器上的有两个用户:commonuser 和 publicuser,其中publicuser 是上面提到的特殊用户。

在主配置文件 vsftpd.conf 中添加下面的内容:

hroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

user_config_dir=/etc/vsftpd/vsftpd_user_conf

创建 /etc/vsftpd/chroot_list 文件,其内容就是特殊用户的名字,

# cat /etc/vsftpd/chroot_list

pubicuser

创建 /etc/vsftpd/vsftpd_user_conf 目录,并在其下面创建特殊用户同名的文件,这里是

publicuser 文件。其内容有两个,一个是改变其登录的默认目录,另一个是不让他执行 DELE

操作,

# cat /etc/vsftpd/vsftpd_user_conf/publicuser

local_root=/var/ftp/publicuser

cmds_allowed=ABOR,ACCT,ALLO,APPE,CDUP,CWD,EPRT,EPSV,FEAT,HELP,LIST,MDTM,M

KD,MODE,NLST,NOOP,OPTS,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,RMD,RNFR,RNT

O,SITE,SIZE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER,XCUP,XCWD,XMKD,XPWD,X

RMD

注意:这里面没有 DELE。

创建 /var/ftp/publicuser 目录,修改其权限为 777。

用普通的用户 commonuser 测试,

# ftp 192.168.56.102

Connected to 192.168.56.102.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.56.102:root): commonuser

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> pwd

257 "/home/commonu

防辐射眼镜功能都已经实现了。FTP 的覆盖机制并不是先删除文件

在创建文件,很可能是直接清空文件内容,再写入新内容。这样的话,如果用户可以执行 PUT

操作,那么就可以覆盖文件。所以必须通过其他的办法去实现。

我想到的是给这个特殊用户的登录目录添加额外的属性,通过 chattr 命令。

也就是,我写一个 cron 认为,不停的对 /var/ftp/publicuser 目录中的文件执行 chattr +i

操作,

其中“i”属性是说带有“i”属性的文件是不能被改变的。

做个测试,

# chattr +i /var/ftp/publicuser/test_file

# lsattr /var/ftp/publicuser/test_file

----i-------- /var/ftp/publicuser/test_file

然后在尝试覆盖,

# ftp 192.168.56.102

Connected to 192.168.56.102.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.56.102:root): publicuser

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (192,168,56,102,40,99)

150 Here comes the directory listing.

-rw-r--r-- 1 500 500 0 Mar 19 01:47 test_file

226 Directory send OK.

ftp> put test_file

local: test_file remote: test_file

227 Entering Passive Mode (192,168,56,102,134,2)

553 Could not create file.

ftp> quit

221 Goodbye.

这样就实现了一个企业里常见的 FTP

服务器。不错不错。vsftpd还是很不错的。但是我个人喜欢pureftpd用好了都不错。你好,请问这两部解释的是不是有点问题呀?很好谢谢了

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值