有了處事器,怎么著都得裝個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,這時候再登錄其實照舊不正常。