proftpd以完美的权限控制著称…所以这个教程的目的是让大家理解proftpd的权限设置的过程
拿我的music ftp来举例子了.
<directory /usr/local/music>
#在/usr/local/music这个目录中的权限设置
<limit RMD DELE SITE_CHMOD>
denygroup pubfxp
</limit>
#上面的内容限制pubfxp这个组删除目录(RMD),删除文件(DEL),和执行chmod命令(SITE_CHMOD)
<limit RMD RNTO DELE STOR MKD SITE_CHMOD RETR>
denyuser onlyup
</limit>
#上面的内容限制onlyup这个用户,删除目录(RMD),删除文件(DEL),和执行chmod命令(SITE_CHMOD),上传(STOR),建目录(MKD),下载(RETR),重命名(RNTO)
<limit RMD RNTO DELE SITE_CHMOD MKD STOR>
denygroup read
</limit>
#上面的内容限制read这个组,删除目录(RMD),重命名(RNTO),建目录(MKD),删除文件(DEL),和执行chmod命令(SITE_CHMOD)
</directory>
<directory /usr/local/music/80g_2/incoming>
#在/usr/local/music/80g_2/incoming中的权限设置
<limit MKD STOR>
allowuser onlyup
</limit>
#上面的内容允许onlyup这个用户,建立目录(MKD),上传(STOR)
</directory>
ok来看看我为什么这样设置…
第一步…我先设置整个music目录的权限.禁止了onlyup这个用户在music目录的所有权限…
pubfxp这个组只有写,重命名,而没有删除的权限,read这个组只有读的权限…
第二步…我在80g_2/incoming中允许onlyup有写的权限…这个会覆盖掉music目录中对应的权限设置…但是其他没有说明的权限还是被禁止的…
这样就用很少的控制码达到权限控制的目的了…
proftpd的组设置功能非常好用…我通过mysql来做验证的…
只要在mysql的语句部分加一句
SQLGroupInfo groups groupname gid members
具体的组的内容是这样的范例…
[php]
groupname gid members
read 99 ndvip,zg,HYD,ronor
[/php]
mysql的支持文档:http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-SQL.html
这里注意一下组的gid最好用一个系统存在的组…否则权限比较莫名的出错…偶在这里卡了一天时间…
另…调试proftpd的利器…在conf文件中加入
SQLLogFile /var/log/proftpd_sql_log
然后就是分析log了…hoho…