一个proftpd权限配置问题
最近有人问我关于proftpd的权限配置问题,由于不熟悉proftpd,所以没有立即解决。后来找时间研究了一下,得到了解决方法,现共享出来。
一、权限需求描述
每个部门有自己的文件夹,只有本部门经理、本部门员工和总经理访问,并且所有用户都能上传和下载文件,但只有部门经理和总经理有删除权限。(大致是这样的一个要求)
实现过程如下:
二、proftpd安装
1.操作系统环境: RHEL5.4 2.proftpd版本 : 1.3.0 3.安装过程
#tar proftpd-1.3.0.tar.bz2 #cd proftpd-1.3.0 #./configure �Cprefix=/usr/local/proftpd #make
#make install
三、创建ftp目录、用户、组,并分配权限
1. 创建所需目录 #mkdir -p /ftpdata/pub
这个目录是所有本地用户登录的根目录 #mkdir /ftpdata/pub/jsb
这个目录是技术部的目录,只允许技术部和总经理访问
#mkdir /ftpdata/pub/cwb
这个目录是财务部目录,只允许财务部和总经理访问
我就以这两个部门为例,配置proftpd的朋友,可以根据自己公司的实际情况做一些调整。下面创建用户和组
2. 创建用户和组
#groupadd jsb 创建技术部组 #groupadd cwb 创建财务部组
#useradd �CG jsb,cwb zjl
创建总经理使用的账号,同时加入技术部组和财务部组 #useradd -G jsb jsjl
创建技术部经理账号,加入技术部组 #useradd -G jsb jsyg1
创建技术部员工1账号,加入技术部组 #useradd -G jsb jsyg2
创建技术部员工2账号,加入技术部组
#useradd �CG cwb cwjl
创建财务部经理账号,加入财务部组 #useradd �CG cwb cwyg1
创建财务部员工1账号,加入财务部组 #useradd �CG cwb cwyg2
创建财务部员工2账号,加入财务部组
#echo 123 | passwd zjl �Cstdin
#echo 123 | passwd jsjl --stdin #echo 123 | passwd jsyg1 --stdin #echo 123 | passwd jsyg2 �Cstdin
#echo 123 | passwd cwjl --stdin #echo 123 | passwd cwyg1 --stdin #echo 123 | passwd cwyg2 �Cstdin
我把这7个用户的密码都设置为123
3.设置目录属主、属组和权限
#chown zjl /ftpdata/pub
总经理对这个目录有写权限(只有总经理可以在这个目录创建新目录)
#chown jsjl:jsb /ftpdata/pub/jsb #chmod 770 /ftpdata/pub/jsb
#chmod g+s /ftpdata/pub/jsb 把/ftpdata/pub/jsb的属主改为jsjl,属组改为jsb,属主和属组有读写执行权限,其他用户没有权限,所有在这个目录及子目录里创建的文件,属组都为jsb
#chown cwjl:cwb /ftpdata/pub/cwb #chmod 770 /ftpdata/pub/cwb #chmod g+s /ftpdata/pub/cwb
把/ftpdata/pub/cwb的属主改为cwjl,属组改为cwb,属主和属组有读写执行权限,其他用户没有权限,所有在这个目录创建的文件,属组都为cwb
四、修改proftpd配置文件,并启动服务
#vi /usr/local/proftpd/etc/proftpd.conf
把“#DefaultRoot ~” 改为“DefaultRoot /ftpdata/pub”,即打开注释,并把登录位置改为/ftpdata/pub
把“Umask 022”改为“Umask 007”,即上传的文件,属主和属组有全部权限,其他用户没有权限
添加如下配置
<Directory /ftpdata/pub/jsb> <Limit DELE>
AllowUser jsjl AllowUser zjl DenyALL </Limit> </Directory>
<Directory /ftpdata/pub/cwb> <Limit DELE> AllowUser cwjl AllowUser zjl DenyAll </Limit> </Directory>
注释了从<Anonymous ~ftp> 至 </Anonymous>所有行,意思是禁止匿名用户登录。
其他配置没有改动,最终proftpd配置清单如下:
ServerName "ProFTPD Default Installation" ServerType standalone
DefaultServer on Port 21 Umask 007 MaxInstances 30
User nobody Group nobody DefaultRoot /data/pub
AllowOverwrite on <Directory /ftpdata/pub/jsb> <Limit DELE>
AllowUser jsjl AllowUser zjl DenyALL </Limit> </Directory>
<Directory /ftpdata/pub/cwb> <Limit DELE> AllowUser cwjl AllowUser zjl DenyAll </Limit> </Directory>
<Limit SITE_CHMOD> DenyAll </Limit>
启动proftpd服务
#/usr/local/proftpd/sbin/proftpd
五、验证
分别使用zjl,jsjl,jsyg1,cwjl,cwyg1登录验证,权限符合设计的要注。
六、结束
由于这篇文档写的比较仓促,没有认真思考文档格式和语言的组织。如果给你的阅读带来不适,敬请谅解。
参考的文档:源码目录/doc/howto/Directory.html 源码目录/doc/howto/Limit.html