QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 921|回复: 2

【讨论】FC4下一个比较复杂的ftp设置相关问题讨论

[复制链接]
发表于 2005-10-24 12:22:58 | 显示全部楼层 |阅读模式
因工作需要,我需要在linux下面建设一个ftp服务器,具体要求如下:
1、部门1的用户为:user1,user2,admin1;部门2的用户为:user3,user4,admin2;部门3的用户为:user5,user6,admin3;..................。
2、每个用户都有自己的主目录,为了安全需要设置chroot功能限定在自己的家目录内,在自己家目录内用户有完全权限。
3、另外有一个公共文档目录,需要所有用户都能访问,普通用户在该目录下(比如/var/doc)有只读权限(对目录需要执行权限)。另外,在该目录下设有各部门工作目录(比如为/var/doc/work/part1、/var/doc/work/part3),只有admin1、admin2、admin3等用户有对应部门的上传、改写、删除权限(文件不给执行权限),而对其他目录和普通用户一样是只读权限。
4、所有用户都需要启用配额限制(这就不能用vfat磁盘格式了),假设user类用户为3G,admin类用户为5G。
5、为了安全,ftp端口改为1234,使用被动方式连接。
6、其他小的配置方面,比如iptable、配额等等就不作深入讨论

下面是我在FC4中,用vsftp做的配置文件(不完整):
####################################################################
#关于主机的设定值
connect_from_port_20=NO
listen_port=1234
pasv_max_port=65400
pasv_min_port=65500
dirmessage_enable=NO
listen=YES
#以standalone 的方式启动!
pasv_enable=YES
#被动方式连线!
use_localtime=YES

write_enable=yes
connect_timeout=60
accept_timeout=60
data_connection_timeout=300
idle_session_timeout=300
max_clients=20
max_per_ip=10
ftpd_banner='System is busy now, please try again later'

local_enable=YES
local_max_rate=0
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#这里全部用户都需要启用chroot限制功能
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
#需要把root等系统用户添加进来
 
#不允许匿名登陆
anonymous_enable=NO
 
#关于系统安全的设定值:
ascii_download_enable=NO
ascii_upload_enable=NO
async_abor_enable=NO
check_shell=NO
one_process_model=yes
tcp_wrappers=YES
xferlog_enable=YES
xferlog_std_format=NO
xferlog_file=/var/log/vsftpd.log
nopriv_user=nobody
#######################################################################


经过分析,我发现有如下一些问题不好解决:
1、使用local方式,还是使用guest方式的帐号管理?
因为我总共有大约几十个用户,如果用local(设置nologin的shell,只能作ftp访问)方式管理会很麻烦,而且担心存在系统安全问题;但是用guest方式不知道pam认证和磁盘配额管理会不会矛盾?而且生成.db文件后,如果用户忘记口令,如何帮助用户更改口令?
2、对公共目录的访问,估计应该是使用目录映射方式(mount --bind [原有的目录] [新目录])解决,把公共文档映射到每一个用户的主目录下。但是不知道一个目录能否做多次映射?而且设置了chroot配置后,映射能否生效?
3、公共目录(即需要映射的虚拟目录)的存取权限如何设置?
关键是不同用户类型具有不同权限要求,这点还没有想到解决办法。(好像只能使用本地帐号才能解决,如果用guest帐号??)


因为目前我只有一台服务器(用的是server-U),已经有不少数据,还没有条件进行上述测试。因为系统运行不够稳定,所以想更换到linux系统,请各位大虾帮忙分析如何解决上述问题?
 楼主| 发表于 2005-10-25 14:35:15 | 显示全部楼层
昨天回家试验了一下,使用本地帐号(主要是便于权限设置),我的思路是这样的:

1、设置ftp服务器目录和权限
#chown root:root /var/ftp
#chmod og-w /var/ftp

2、在/var/ftp下面建立各部门和使用者的主目录
#mkdir /var/ftp/part1
#mkdir /var/ftp/part2
#mkdir /var/ftp/part3
#mkdir /var/ftp/part1/usr1
#mkdir /var/ftp/part1/usr2
#mkdir /var/ftp/part1/admin1
.....
#mkdir /var/ftp/part3/usr6
#mkdir /var/ftp/part3/admin3
另外,建立公共文档以及文档下各部门目录
#mkdir /var/doc #公共文档目录
#mkdir /var/doc/other
#mkdir /var/doc/part1 #公共文档目录里面设各部门的目录(当然还会有其他目录)
...
#mkdir /var/doc/part3

3、添加本地用户,设置各用户登陆家目录,并修改登陆shell为nologin
#useradd -d /var/ftp/part1/usr1 usr1 -s /sbin/nologin
#useradd -d /var/ftp/part1/usr2 usr2 -s /sbin/nologin
#useradd -d /var/ftp/part1/admin1 admin1 -s /sbin/nologin
#useradd -d /var/ftp/part2/usr3 usr3 -s /sbin/nologin
#useradd -d /var/ftp/part2/usr4 usr4 -s /sbin/nologin
#useradd -d /var/ftp/part2/admin2 admin2 -s /sbin/nologin
#useradd -d /var/ftp/part3/usr5 usr5 -s /sbin/nologin
#useradd -d /var/ftp/part3/usr6 usr6 -s /sbin/nologin
#useradd -d /var/ftp/part3/admin3 admin3 -s /sbin/nologin

4、改变各目录的权限
#chown usr1:usr1 /var/ftp/part1/usr1
#chmod 700 /var/ftp/part1/usr1 #每个用户的目录只能自己访问
#chown usr2:usr2 /var/ftp/part1/usr2
#chmod 700 /var/ftp/part1/usr2
#chown admin1:admin1 /var/ftp/part1/admin1
#chmod 700 /var/ftp/part1/admin1
....
#chown admin3:admin3 /var/ftp/part3/admin3
#chmod 700 /var/ftp/part3/admin3
#公共文档目录中各部门工作目录只能是对应的admin可以写
#chown root:root /var/doc
#chmod og-w /var/doc
#chmown admin1:admin1 /var/doc/part1
#chmod 744 /var/doc/part1
#chmown admin2:admin2 /var/doc/part2
#chmod 744 /var/doc/part2
#chmown admin3:admin3 /var/doc/part3
#chmod 744 /var/doc/part3

5、建立虚拟目录到各用户主目录下
#mount --bind /var/doc /var/ftp/part1/usr1
#mount --bind /var/doc /var/ftp/part1/usr2
#mount --bind /var/doc /var/ftp/part1/admin1
...
#mount --bind /var/doc /var/ftp/part3/admin3

6、配置磁盘配额



在作到第五步的时候,发现mount --blind这个命令是双向映射关系,在每个用户目录下面确实能够看到/var/doc目录的内容,但是在/var/doc目录下面也会映射出下面这个目录:
/var/doc/part1
/var/doc/part2
/var/doc/part3
以及这几个目录下各用户的内容,但是这不是我想要的结果。我只想要把/var/doc的内容能让所有用户访问(ftp登陆时有chroot限制),而每个用户目录的内容只能自己访问。
问题的关键在于有没有单向目录映射的命令??

因为这一步卡住了,所以映射和chroot是否有冲突就没有继续测试了。

谁能告诉我怎么作单向目录映射吗?
回复

使用道具 举报

发表于 2005-10-25 15:28:53 | 显示全部楼层
1. 用数据库管理用户,一般用户和管理员用户对应不同的端口及数据库;
2. 在 debian sarge 和 centos 3.5 下,mount --bind 没有在 /var/doc 下多出 part1, part2, part3 这样的目录。
3. 一般用户和管理员用户都放到同一个组并设置共享目录让同组用户有 read 权限就可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-3 04:21 , Processed in 0.040456 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表