免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5734 | 回复: 11
打印 上一主题 下一主题

[FTP] 怎么我的ProFTPD只能下载,不能上传啊? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-08 20:29 |只看该作者 |倒序浏览
我的按照以前白金版主的一篇文章的方法配的

./configure --prefix=/opt/proftpd \
--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
--with-includes=/usr/local/mysql/include \
--with-libraries=/usr/local/mysql/lib
make
make install
修改proftpd配置
vim /usr/local/proftpd/etc/proftpd.conf
内容改为:
ServerName "www.mecee.com"
ServerType standalone
DefaultServer on
# 用户登陆时不显示ftp服务器版本信息
ServerIdent off
# Port 21 is the standard FTP port.
Port 21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
MaxLoginAttempts 3
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
MaxClients 100
# 设置每台主机最多并发连接数
MaxClientsPerHost 3
AllowOverwrite no
AllowStoreRestart on
UseReverseDNS off
# 设置如果shell为空时允许用户登录
RequireValidShell off
# 将用户限制在自己的主目录下
DefaultRoot ~
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances 30
# Set the user and group under which the server will run.
User nobody
Group nobody
# Normally, we want files to be overwriteable.
<Directory />
AllowOverwrite on
</Directory>
# A basic anonymous configuration, no upload directories.
# 匿名登录设置。匿名用户目录为/ftp
<Anonymous /ftp>
User ftp
Group ftp
# We want clients to be able to login with "anonymous" as well as "ftp"
# UserAlias anonymous ftp    停了它
# Limit the maximum number of anonymous logins
MaxClients 10
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message

# Limit WRITE everywhere in the anonymous chroot
#<Limit WRITE>
# DenyAll
#</Limit>
</Anonymous>
以上是PROFTPD.conf

下面加入sql和quota
# 数据库联接的信息,proftpdb是数据库名,localhost是主机名,proftpd是连接数据库的用户名,
#proftpdb是密码
#(如果没有密码留空)
SQLConnectInfo proftpdb@localhost proftp proftpdb  
# 数据库认证的类型
SQLAuthTypes Backend Plaintext
# 数据库的鉴别
SQLAuthenticate users* groups*
# 指定用来做用户认证的表的有关信息。
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
# 如果home目录不存在,则系统会根据它的home项新建一个目录
SQLHomedirOnDemand on
这是目录所有者,我觉得这个很重要。所以我用nobody来做,在此我的nobody为99.
SQLDefaultGID        99
SQLDefaultUID        99

SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1,accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

# 启用磁盘限额
QuotaDirectoryTally on
# 磁盘限额单位 b"|"Kb"|"Mb"|"Gb"
QuotaDisplayUnits "Kb"
QuotaEngine on
# 磁盘限额日志记录
QuotaLog "/var/log/quota.log"
# 打开磁盘限额信息,当登陆FTP帐户后,使用命令 "quote SITE QUOTA" 后可显示当前用#户的磁盘限额
QuotaShowQuotas on
以下为sql语句:
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail,bytes_out_ava
il, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0
}'AND quota_type = '%{1}'"

SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files
_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies

SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

下面可以用phpmyadmin在mysql里加入,我的sql为以下
CREATE TABLE `ftpgroup` (
`groupname` varchar(16) NOT NULL default '',
`gid` smallint(6) NOT NULL default '99',
`members` varchar(16) NOT NULL default '',
KEY `groupname` (`groupname`)
) TYPE=MyISAM COMMENT='ProFTP group table';



INSERT INTO `ftpgroup` VALUES ('nobody', 99, 'nobody');



CREATE TABLE `ftpquotalimits` (
`name` varchar(30) default NULL,
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`per_session` enum('false','true') NOT NULL default 'false',
`limit_type` enum('soft','hard') NOT NULL default 'soft',
`bytes_in_avail` float NOT NULL default '0',
`bytes_out_avail` float NOT NULL default '0',
`bytes_xfer_avail` float NOT NULL default '0',
`files_in_avail` int(10) unsigned NOT NULL default '0',
`files_out_avail` int(10) unsigned NOT NULL default '0',
`files_xfer_avail` int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;



CREATE TABLE `ftpquotatallies` (
`name` varchar(30) NOT NULL default '',
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`bytes_in_used` float NOT NULL default '0',
`bytes_out_used` float NOT NULL default '0',
`bytes_xfer_used` float NOT NULL default '0',
`files_in_used` int(10) unsigned NOT NULL default '0',
`files_out_used` int(10) unsigned NOT NULL default '0',
`files_xfer_used` int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;



CREATE TABLE `ftpuser` (
`id` int(10) unsigned NOT NULL auto_increment,
`userid` varchar(32) NOT NULL default '',
`passwd` varchar(32) NOT NULL default '',
`uid` smallint(6) NOT NULL default '99',
`gid` smallint(6) NOT NULL default '99',
`homedir` varchar(255) NOT NULL default '',
`shell` varchar(16) NOT NULL default '/sbin/nologin',
`count` int(11) NOT NULL default '0',
`accessed` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT='ProFTP user table' ;



proftpd start -nd 提示


  1. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching POST_CMD command 'PASV' to mod_sql
  2. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching LOG_CMD command 'PASV' to mod_sql
  3. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching LOG_CMD command 'PASV' to mod_log
  4. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching PRE_CMD command 'STOR proftpd.conf.default' to mod_core
  5. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching PRE_CMD command 'STOR proftpd.conf.default' to mod_core
  6. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching PRE_CMD command 'STOR proftpd.conf.default' to mod_ratio
  7. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching PRE_CMD command 'STOR proftpd.conf.default' to mod_quotatab
  8. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching PRE_CMD command 'STOR proftpd.conf.default' to mod_xfer
  9. localhost.localdomain (192.168.1.17[192.168.1.17]) - FS: using system stat()
  10. localhost.localdomain (192.168.1.17[192.168.1.17]) - in dir_check(): setting umask to 0022 (was 0022)
  11. localhost.localdomain (192.168.1.17[192.168.1.17]) - FS: using system lstat()
  12. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching CMD command 'STOR proftpd.conf.default' to mod_xfer
  13. localhost.localdomain (192.168.1.17[192.168.1.17]) - FS: using system open()
  14. localhost.localdomain (192.168.1.17[192.168.1.17]) - [color=Red]unable to open 'proftpd.conf.default' for writing: Permission denied[/color]
  15. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching POST_CMD_ERR command 'STOR proftpd.conf.default' to mod_sql
  16. localhost.localdomain (192.168.1.17[192.168.1.17]) - dispatching POST_CMD_ERR command 'STOR proftpd.conf.default' to mod_quotatab

复制代码


现在能登陆进去,下载文件也没问题,但上传的建文件夹都不行,大家帮我看看啊

论坛徽章:
0
2 [报告]
发表于 2006-03-09 10:42 |只看该作者
看你的配置,里面并没有配置一个供上传的目录啊

论坛徽章:
0
3 [报告]
发表于 2006-03-09 11:36 |只看该作者
上传的目录不是在MySQL里指定的吗?

我加上类似这样的也不行
<Directory /*>
        AllowOverwrite                         off
        HideNoAccess                        on
        <Limit READ>
         AllowAll
        </Limit>
        <Limit Write>
         DenyAll
        </Limit>
</Directory>


具体的我要回家才知道

论坛徽章:
0
4 [报告]
发表于 2006-03-09 11:50 |只看该作者
<Limit Write>
         DenyAll
        </Limit>

这样设置所以的写操作都被禁止了
http://www.castaglia.org/proftpd ... ni-HOWTO-Limit.html

论坛徽章:
0
5 [报告]
发表于 2006-03-09 13:20 |只看该作者
谢谢,我晚上回家试试

应该没其它不对的地方了吧?

论坛徽章:
0
6 [报告]
发表于 2006-03-09 18:53 |只看该作者
不行啊,我设成这样还是不能上传
<Directory /*>
<Limit ALL>
AllowAll
</Limit>
</Directory>

论坛徽章:
0
7 [报告]
发表于 2006-03-10 09:33 |只看该作者
用-nd 9参数启动proftpd

看调试信息

目录设置成/*不好吧
http://www.castaglia.org/proftpd ... OWTO-Directory.html
http://www.proftpd.org/docs/dire ... _ref_Directory.html

[ 本帖最后由 wolfg 于 2006-3-10 09:46 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-03-10 16:20 |只看该作者
用-nd 9参数启动proftpd有提示
unable to open '上传.txt' for writing: Permission denied

我现在只是在虚拟机上调试的,所以把目录就设成了 /*

论坛徽章:
0
9 [报告]
发表于 2006-03-10 16:27 |只看该作者
原帖由 冬天来了 于 2006-3-10 16:20 发表
用-nd 9参数启动proftpd有提示
unable to open '上传.txt' for writing: Permission denied

我现在只是在虚拟机上调试的,所以把目录就设成了 /*


你用的是什么用户?在哪个目录上传?这个目录的属主和权限是什么?

论坛徽章:
0
10 [报告]
发表于 2006-03-10 16:47 |只看该作者
FTP用的在MySQL中建立的测试用户,上传到“/home”目录下(其它目录也一样)
属主和权限是
drwxr-xr-x    6 root     root         4096 2006-03-07  home
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP