标签归档:FTP

ProFTPd服务器中配置虚拟用户

在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

 

修改密码:ftpasswd --passwd --name=user_dgcn --change-password --file=/EassosData/ftp_user/ftpd.passwd

阿里云 ubuntu 下配置ftp服务器 proftpd

一、安装ProFTPD

$ sudo apt-get install proftpd

二、添加ftp组及用户

$ groupadd ftpgroup

// -d 参数表示默认目录

$ useradd ftpadmin -d /home/ftp_files/ -g ftpgroup

执行完这句的时候,cat /etc/group 发现ftpgroup组下面没有用户 ftpadmin

//最后一句显示:ftpgroup:x:1001:

这时候执行 gpasswd -a ftpadmin ftpgroup // 添加用户ftpadmin到组ftpgroup

给用户ftpadmin设置密码 passwd ftpadmin

//修改完以后在执行 cat /etc/group 最后一句显示:ftpgroup:x:1001: ftpadmin
三、修改用户 chroot

连接成功但并没有限定用户 ftpadmin 的根目录,也就是chroot,用户还可以访问上级目录

// 修改 proftpd配置文件

$ vi /etc/proftpd/proftpd.conf

// 去掉如下行前的注释 #

# DefaultRoot ~

// 重启 proftpd 即可

$ /etc/init.d/proftpd restart

四、禁止用户终端登录

// 编辑 /etc/passwd

$ vi /etc/passwd

ftpu:x:1006:1004::/home/ftp_files/:/bin/sh

修改成

ftpu:x:1006:1004::/home/ftp_files/:/sbin/nologin

重启proftpd后ftp客户端提示无法连接:

-------------------------------

530 Login incorrect.

-------------------------------

经检查发现当前系统的shells列表中没有 /sbin/nologin

// 添加 /sbin/nologin 支持

$ vi /etc/shells

// 在该文档中添加一行

/sbin/nologin

五、重启proftpd,完成.

==========================================

如果ftp客户端上传失败的时候。请注意一下目录的权限

设置iptables之后不能正常访问ftp解决方法

设置了iptables的禁止所有的端口,只容许可能访问了策略后大部分情况下会出现ftp不能正常访问的问题,因为ftp有主动和被动连接两种模式,少添加一些策略就会出问题。
在这里我就相信的说明下解决方法:
首先加载:
#modprobe ip_conntrack_ftp
#modprobe ip_nat_ftp
然后加载策略
#iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -I INPUT -p tcp --dport 21 -j ACCEPT
#iptables -I OUTPUT -p tcp --dport 21 -j ACCEPT
如果不想每次都加载模块的话请在 /etc/sysconfig/iptables-config
添加

201009231285213452593

保存之后皆可。