有了处事器,怎么着都得装个Ftp吧,不然,必需得让人用ssh毗连来上传文件 ?
于是我找了proftpd,因为较量简朴vsftpd太贫苦了。proftpd的教程很简朴
1、先apt-get update,apt-get upgrade
2、apt-get install proftpd-basic proftpd-mod-mysql
3、修改 /etc/proftpd/proftpd.conf
因为原内容都注释了,所以直接在文件的最后加上:
XML/HTML代码
DefaultRoot ~
Include /etc/proftpd/sql.conf
RequireValidShell off
4、添加一个组,和一个用户:
XML/HTML代码
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
5、去mysql里增加一个用户,如proftpd/proftpdpass,建一个数据库,如:proftpd
6、插入表布局:
SQL代码
CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '2001',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) ENGINE=MyISAM COMMENT='ProFTP group table';
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 '2001',
gid smallint(6) NOT NULL default '2001',
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),
UNIQUE KEY userid (userid)
) ENGINE=MyISAM COMMENT='ProFTP user table';
7、修改/etc/proftpd/modules.conf,去掉两行注释:
XML/HTML代码
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
8、修改/etc/proftpd/sql.conf
XML/HTML代码
SQLBackend mysql
SQLAuthTypes Crypt
#下面一行就是用户名暗码
SQLConnectInfo 数据库@localhost 用户名 暗码
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "countcount=count+1, accessed=now() WHERE userid='%u'" ftpuser
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
9、插入用户:
XML/HTML代码
INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');
INSERT INTO `ftpuser` ( `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`) VALUES ( 'username', ENCRYPT('password'), 2001, 2001, '/var/www/www.example.com/', '/sbin/nologin', 0);
10、重启proftpd:/etc/init.d/proftpd restart
--------EOF---
至此,上面的内容根基上就可以或许登录乐成了,假如照旧失败,发起先停掉proftpd,然后运行proftpd -nd6,查察错误信息,好比我就看到了这个:
XML/HTML代码
Mar 09 00:22:29 test proftpd[8850] test (0.0.0.0[0.0.0.0]): notice: unable to use '~/' [resolved to '/server/wwwroot/htdocs/']: Permission denied
Mar 08 16:22:29 test proftpd[8850] test (0.0.0.0[0.0.0.0]): Preparing to chroot to directory '~/'
Mar 08 16:22:29 test proftpd[8850] test (0.0.0.0[0.0.0.0]): chroot to '~/' failed for user 'xxxxxx': Operation not permitted
Mar 08 16:22:29 test proftpd[8850] test (0.0.0.0[0.0.0.0]): error: unable to set default root directory
Mar 08 16:22:29 test proftpd[8850] test (0.0.0.0[0.0.0.0]): FTP session closed.
我靠,这个怎么办?
这时候我又请vampire资助了。他就帮我查抄了一下,做了几个处理惩罚:
1、vim /etc/groups ,在www-data:x:33后头加了:www-data:x:33:ftpgroup ,暗示权限随着www-data,因为我们的ftp目次里的文件都是基于www-data的
2、修改/etc/proftpd/proftpd.conf,改个中的:user / group ,都改成www-data
3、照旧/etc/proftpd/proftpd.conf ,改 Umask ,本来是Umask 022 022,去掉一个022
4、因为我的www-data是gid是33,所以适才在数据库里插的gid统统换成33,而不是本来的2001,这时候再登录其实照旧不正常。