在Windows下FTPD以某一个帐号运行,所有的FTP用户权限管理全部由FTPD来完成与系统帐号无关。但是在xNix下则不同,FTPD只允许那些系统帐号登陆。但是我们往往希望FTPD用户和系统帐号分离方便管理。这样就需要使用ProFTPD的虚拟用户功能。
首先在proftpd.conf中添加:
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /usr/local/etc/ftpd.passwd
#AuthGroupFile /usr/local/etc/ftpd.group
然后重启portftpd服务
service proftpd restart
AuthOrder为FTP用户身份验证顺序。mod_auth_file.c是ProFTPD的虚拟用户验证,虚拟用户和组的信息存储在下面的AuthUserFile和AuthGroupFile指定的文件中,不过我想搞简单点所以就不要虚拟组了。mod_auth_unix.c是系统用户身份验证,即/etc/passwd。
然后使用添加如下命令添加一个新的虚拟用户:
ftpasswd --passwd --file=/usr/local/etc/ftpd.passwd --name=test --uid=1002 --home=/usr/local/ftp/test --shell=/usr/sbin/nologin
?passwd指定建立一个新的虚拟用户,?group则建立一个虚拟组;
?file指定存储虚拟用户的文件;
?name指定此虚拟用户的用户名,密码会在命令执行时要求输入;
?uid指定此虚拟用户对应的系统用户UID,此虚拟用户将以此系统UID的身份读写文件;
?home指定此虚拟用户的根目录,就是其登陆FTP后的根目录;
?shell指定此虚拟用户的shell,为了安全当然指定一个不可登陆的shell了。
如果是源码安装的proftpd ,服务项proftpd以及命令ftpasswd分别在如下两个目录
ftpasswd :源码包目录/contrib/ftpasswd
proftpd服务程序:源码包目录/contrib/dist/rpm/proftpd.init.d
加上可执行权限。然后将ftpasswd 拷贝到/usr/local/sbin目录下面
将proftpd.init.d拷贝到/etc/init.d/下面 重命名为proftpd