原创日志

Centos6.9下面lnmp方式安装的proftpd,使用虚拟用户来连接ftp

[ 2018-06-01 12:12:40 | 作者: admin ]
字号: | |
p.s. lnmp方式安装的proftpd,默认情况好像可以使用系统用户来访问,后来想用虚拟用户方式来访问ftp,网上查了下发现需要下载ftpasswd来辅助操作生成账号,系统账号的系统账户可以随便弄一个 5000:5000,然后把ftp用户home的own设为5000:5000。
配置文件中 AuthOrder为FTP用户身份验证顺序,mod_auth_file.c是ProFTPD的虚拟用户验证,mod_auth_unix.c是系统用户验证,即/etc/passwd 。
遇到问题可以查看日志文件 /usr/local/proftpd/var/log/proftpd.log ,利用好日志事半功倍。

ftpasswd 使用方法例子
     ftpasswd --help
     ftpasswd --passwd --name ftpuser1 --file /usr/local/proftpd/etc/ftpd.passwd --uid 5000 --gid 5000 --home /home/wwwroot/ftpuser/ --shell /usr/sbin/nologin
     ftpasswd --passwd --name=bob --uid=1001 --home=/home/bob --shell=/bin/false
     ftpasswd --passwd --file=/usr/local/etc/ftpd/passwd --name=bob --uid=1001 --home=/home/bob --shell=/bin/false
     ftpasswd --group --name=group-name --gid=group-id --member=user-member1 --member=user-member2 ... --member=user-memberN
     ftpasswd --passwd --name=user --change-password




需要注意的是:被动连接的端口需要防火墙里面设置好,不仅iptablse里面设置,阿里云的安全组里面也不能忘记。

ServerName "ProFTPD FTP Server"
ServerType standalone
DefaultServer on

# Port 21 is the standard FTP port.
Port 21

# Don't use IPv6 support by default.
UseIPv6 off

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
MaxInstances 30

# Set the user and group under which the server will run.
User nobody
Group nobody

#被动连接的端口,需要防火墙iptablse和阿里云安全组里面通过
PassivePorts 52000 52100
# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.


DefaultRoot ~

AllowOverwrite on

AllowRetrieveRestart on
AllowStoreRestart on
UseReverseDNS off
IdentLookups off
#DisplayLogin welcome.msg
ServerIdent off
RequireValidShell off
#下面的是虚拟用户文件,如果不存在会去使用系统用户
AuthUserFile /usr/local/proftpd/etc/ftpd.passwd
#AuthGroupFile /usr/local/proftpd/etc/ftpd.group

#AuthOrder为FTP用户身份验证顺序。mod_auth_file.c是ProFTPD的虚拟用户验证,虚拟用户和组的信息存储在下面的AuthUserFile和AuthGroupFile指定的文件中,不过我想搞简单点所以就不要虚拟组了。mod_auth_unix.c是系统用户身份验证,即/etc/passwd。
AuthOrder mod_auth_file.c mod_auth_unix.c

# Normally, we want files to be overwriteable.
AllowOverwrite on

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
     DenyAll
</Limit>
SystemLog /usr/local/proftpd/var/log/proftpd.log
Include /usr/local/proftpd/etc/vhost/*.conf



====================================================================================
参考1: Proftp设置虚拟用户
====================================================================================


首先在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





====================================================================================
参考2: proftpd使用虚拟用户连接
====================================================================================
下文参考:https://www.cnblogs.com/as278257357/p/7339137.html

yum 安装proftpd
              yum -y install proftpd
 
修改配置文件/etc/proftpd.conf
              全部配置文件参数
TraceLog /var/log/proftpd/trace.log
               ServerName "ProFTPD server"
               ServerIdent on "FTP Server ready."
               ServerAdmin root@localhost
               DefaultServer on
               AuthUserFile /etc/ftpd.passwd # ftpd.passwd需要手动创建,而且权限要设置为0600
               AuthGroupFile /etc/ftpd.group # 手动创建
               RequireValidShell off
               AuthPAM off
               DefaultRoot /ftp # /ftp文件夹需要手动创建
               PidFile /var/run/proftpd/proftpd.pid # 原来的配置文件中没有pidfile这个,需要加上这个字段,否则proftpd可以启动,但是虚拟用户不能登录
               AuthPAMConfig proftpd
               AuthOrder mod_auth_file.c
               PersistentPasswd off
               UseReverseDNS off
               User nobody
               Group nobody
               MaxInstances 20
               UseSendfile off
               ServerLog /var/log/proftpd/Server.log
               LogFormat default "%h %l %u %t \"%r\" %s %b"
               LogFormat auth "%v [%P] %h %t \"%r\" %s"、


安装ftpasswd
               cd /usr/sbin/
               wget http://www.castaglia.org/proftpd/contrib/ftpasswd
               chmod +x ftpasswd
 
创建虚拟用户
              ftpasswd --passwd --name test --file /etc/ftpd.passwd --uid 5000 --gid 5000 --home /var/ftp/username-home/ --shell /usr/sbin/nologin
              这步操作之后ftp.passwd这个文件的权限会设置为444,所以重启proftpd服务会失败
 
 
最后重点来了,怎么设置用户的权限呢,如果不能设置文件的权限为777,那么就要给虚拟用户类似真实用户的权限
              创建用户时候设置uid 为5000,那么我们可以将/ftp下创建一个test文件夹,这个文件夹的属主设置为5000,这样这个test账号就可以对test文件夹做任何操作了
[最后修改由 admin, 于 2018-06-01 13:20:16]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2503

这篇日志没有评论。

此日志不可发表评论。