root@ubuntu:~# apt-get install proftpd
root@ubuntu:~# ps -aux|grep ftp Warning: bad ps syntax, perhaps a bogus ‘-‘? See http://procps.sf.net/faq.html proftpd 18912 0.0 0.0 93376 2204 ? Ss 11:10 0:00 proftpd: (accepting connections) root 18942 0.0 0.0 8112 940 pts/1 S+ 12:06 0:00 grep --color=auto ftp root@ubuntu:~# netstat -tulpn | grep :21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 18912/proftpd: (acc root@ubuntu:~#
关闭IPv6支持 UseIPv6 off # 禁用反向域名解析 UseReverseDNS off #支持的编码格式 UseEncoding UTF-8 GBK # 不显示服务器相关信息, 如proftpd版本 ServerIdent off #查找客户的远程用户名,关掉节省连接时间 IdentLookups off #配置服务器名 ServerName "idoall.org FTP server" #设置服务器运行模式,独立服务,或者被监管 ServerType standalone #关闭欢迎信息显示 DeferWelcome on #如果显示欢迎信息,则指定显示的文件 DisplayLogin /usr/share/proftpd/etc/ftplogin.msg #指定切换文件夹时,显示的欢迎信息 DisplayChdir .message #FTP安全扩展 MultilineRFC2228 on #设置为默认服务器 DefaultServer on #不显示链接文件的目标文件DefaultRoot ShowSymlinks off #允许root用户登录,默认是不允许的,安全起见不推荐此选项。 RootLogin off #登陆后允许IDLE的时间 TimeoutNoTransfer 600 #连接超时的时间 TimeoutStalled 600 #客户端idle时间设置,默认就是600秒 TimeoutIdle 600 #显示时显示详细信息 ListOptions "-l" #阻止带.的命令 DenyFilter \*.*/ # 限制lionftp用户上传的速率限制在150Kbytes/s TransferRate STOR 150 user lionftp # 限制lionftp用户下载的速率限制在100Kbytes/s TransferRate RETR 100 user lionftp #端口号 Port 21 # 显示以MB为单位 QuotaDisplayUnits Mb #设置被动模式使用的端口范围 PassivePorts 60000 65535 #FTP SERVER最大连接数 MaxInstances 30 #设置服务器进程运行使用的用户 User proftpd #设置服务器进程运行使用的组 Group nogroup #设置用户上传文件的权限掩码 Umask 022 022 #设置用户被chroot锁定到的各自的Home目录 DefaultRoot /usr/local/nginx/html # 允许覆盖文件 AllowOverwrite on #屏蔽服务器版本信息 ServerIdent off #上传时,允许断点续传 AllowStoreRestart on #下载时,允许断点续传 AllowRetrieveRestart on #每个帐户最多允许来源ip为1个 MaxHostsPerUser 10 #每个帐户在每个客户端最多可以同时登陆1次,可以防止多线程软件下载对服务器的破坏 MaxClientsPerUser 10 #同一个客户端只能最多1个帐号可以登陆 MaxClientsPerHost 10 #是否要把ftp记录在日志中,如果不想可以设置成off屏蔽掉log日志。 WtmpLog on #设置日志 TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log
CMD : Change Working Directory 改变目录 MKD : MaKe Directory 建立目录的权限 RNFR : ReName FRom 更改目录名的权限 DELE : DELEte 删除文件的权限 RMD : ReMove Directory 删除目录的权限 RETR : RETRieve 从服务端下载到客户端的权限 STOR : STORe 从客户端上传到服务端的权限 READ :可读的权限,不包括列目录的权限,相当于 RETR , STAT 等 WRITE :写文件或者目录的权限,包括 MKD 和 RMD DIRS :是否允许列目录,相当于 LIST , NLST 等权限,还是比较实用的 ALL :所有权限 LOGIN :是否允许登陆的权限 #limit 中对用户和群组的控制 AllowUser 针对某个用户允许的 Limit DenyUser 针对某个用户禁止的 Limit AllowGroup 针对某个用户组允许的 Limit DenyGroup 针对某个用户组禁止的 Limit AllowAll 针对所有用户组允许的 Limit DenyAll 针对所有用户禁止的 Limit
%T 目前的时间 %F 所在硬盘剩下的容量 %C 目前所在的目录 %R Client 端的主机名称 %L Server 端的主机名称 %U 使用者帐户名称 %M 最大允许连接人数 %N 目前的服务器连接人数 %E FTP服务器管理员的 email %i 本次上传的文件数量 %o 本次下载的文件数量 %t 本次上传+下载的文件数量
root@ubuntu:~# vi /usr/share/proftpd/etc/ftplogin.msg 欢迎您%U, 这是idoall的测试FTP服务器; 目前时间是:%T; 本服务器最多允许%M个用户连接数; 目前服务器上已有%N个用户连接数; 目前你所在的目录是%C; 目录所在的硬盘还剩下%F字节。
root@ubuntu:~# vi /etc/shells # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /usr/bin/tmux /usr/bin/screen /usr/sbin/nologin
/usr/share/nginx/html ----lionftp可以读写,chenshuaiftp只读 /usr/share/nginx/html/a ----lionftp可以读写,chenshuaiftp可以读写
root@ubuntu:~# groupadd ftp root@ubuntu:~# useradd lionftp -g ftp -s /usr/sbin/nologin root@ubuntu:~# useradd chenshuaiftp -g ftp -s /usr/sbin/nologin root@ubuntu:~# passwd lionftp Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@ubuntu:~# passwd chenshuaiftp Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
root@ubuntu:~# chown lionftp /usr/share/nginx/html
root@ubuntu:~# vi /etc/proftpd/proftpd.conf
# If set on you can experience a longer connection delay in many cases.
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
#
# Includes DSO modules
Include /etc/proftpd/modules.conf
关闭IPv6支持
UseIPv6 off
# 禁用反向域名解析
UseReverseDNS off
#支持的编码格式
UseEncoding UTF-8 GBK
# 不显示服务器相关信息, 如proftpd版本
ServerIdent off
#查找客户的远程用户名,关掉节省连接时间
IdentLookups off
#配置服务器名
ServerName "idoall.org FTP server"
#设置服务器运行模式,独立服务,或者被监管
ServerType standalone
#关闭欢迎信息显示
DeferWelcome on
#如果显示欢迎信息,则指定显示的文件
DisplayLogin /usr/share/proftpd/etc/ftplogin.msg
#指定切换文件夹时,显示的欢迎信息
DisplayChdir .message
#FTP安全扩展
MultilineRFC2228 on
#设置为默认服务器
DefaultServer on
#不显示链接文件的目标文件DefaultRoot
ShowSymlinks off
#允许root用户登录,默认是不允许的,安全起见不推荐此选项。
RootLogin off
#登陆后允许IDLE的时间
TimeoutNoTransfer 600
#连接超时的时间
TimeoutStalled 600
#客户端idle时间设置,默认就是600秒
TimeoutIdle 600
#显示时显示详细信息
ListOptions "-l"
#阻止带.的命令
DenyFilter \*.*/
# 限制lionftp用户上传的速率限制在150Kbytes/s
TransferRate STOR 150 user lionftp
# 限制lionftp用户下载的速率限制在100Kbytes/s
TransferRate RETR 100 user lionftp
#端口号
Port 21
# 显示以MB为单位
QuotaDisplayUnits Mb
#设置被动模式使用的端口范围
PassivePorts 60000 65535
#FTP SERVER最大连接数
MaxInstances 30
#设置服务器进程运行使用的用户
User proftpd
#设置服务器进程运行使用的组
Group nogroup
#设置用户上传文件的权限掩码
Umask 022 022
#设置用户被chroot锁定到的各自的Home目录
DefaultRoot /usr/local/nginx/html
# 允许覆盖文件
AllowOverwrite on
#屏蔽服务器版本信息
ServerIdent off
#上传时,允许断点续传
AllowStoreRestart on
#下载时,允许断点续传
AllowRetrieveRestart on
#每个帐户最多允许来源ip为1个
MaxHostsPerUser 10
#每个帐户在每个客户端最多可以同时登陆1次,可以防止多线程软件下载对服务器的破坏
MaxClientsPerUser 10
#同一个客户端只能最多1个帐号可以登陆
MaxClientsPerHost 10
#是否要把ftp记录在日志中,如果不想可以设置成off屏蔽掉log日志。
WtmpLog on
#设置日志
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
<Directory "/usr/local/nginx/html/*">
<Limit ALL>
AllowUser lionftp
DenyAll
</Limit>
<Limit CWD READ DIRS>
AllowAll
</Limit>
</Directory>
<Directory "/usr/local/nginx/html/a/*" >
<Limit ALL>
AllowUser lionftp
AllowUser chenshuaiftp
DenyAll
</Limit>
<Limit CWD READ DIRS>
AllowAll
</Limit>
</Directory>
#不允许任何人执行chmod命令(SITE_CHMOD)
<Limit SITE_CHMOD>
DenyAll
</Limit>
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>
Include /etc/proftpd/conf.d/
root@ubuntu:~# service proftpd restart
C:\Users\Administrator>ftp ftp> open 192.168.1.100 连接到 192.168.1.100。 220 192.168.1.100 FTP server ready 用户(192.168.1.100:(none)): chenshuaiftp 331 Password required for chenshuaiftp 密码: 230-欢迎您chenshuaiftp,这是idoall的测试FTP服务器; 230- 目前时间是:Sat Aug 09 03:22:02 2014; 230- 本服务器最多允许0个用户连接数; 230- 目前服务器上已有2个用户连接数; 230- 目前你所在的目录是/; 230- 目录所在的硬盘还剩下0字节。 230 User chenshuaiftp logged in ftp> dir 200 PORT command successful 150 Opening ASCII mode data connection for file list -rw-r--r-- 1 root root 537 Aug 6 06:38 50x.html drwxrwxrwx 19 root root 4096 Jun 17 05:49 xxx drwxrwxrwx 7 root root 4096 Aug 9 01:19 aaaa 226 Transfer complete ftp: 收到 201 字节,用时 0.01秒 13.40千字节/秒。
# 不要求有合法shell,直接效果是允许nologin用户和虚拟用户登录 RequireValidShell off # AuthOrder指定了权限检查的顺序。这里只使用虚拟用户 AuthOrder mod_auth_file.c mod_auth_unix.c AuthUserFile /usr/share/proftpd/etc/passwd AuthGroupFile /usr/share/proftpd/etc/group
root@ubuntu:~# vi /etc/proftpd/proftpd.conf
# If set on you can experience a longer connection delay in many cases.
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
#
# Includes DSO modules
Include /etc/proftpd/modules.conf
关闭IPv6支持
UseIPv6 off
# 禁用反向域名解析
UseReverseDNS off
#支持的编码格式
UseEncoding UTF-8 GBK
# 不显示服务器相关信息, 如proftpd版本
ServerIdent off
#查找客户的远程用户名,关掉节省连接时间
IdentLookups off
#配置服务器名
ServerName "idoall.org FTP server"
#设置服务器运行模式,独立服务,或者被监管
ServerType standalone
#关闭欢迎信息显示
DeferWelcome on
#如果显示欢迎信息,则指定显示的文件
DisplayLogin /usr/share/proftpd/etc/ftplogin.msg
#指定切换文件夹时,显示的欢迎信息
DisplayChdir .message
#FTP安全扩展
MultilineRFC2228 on
#设置为默认服务器
DefaultServer on
#不显示链接文件的目标文件DefaultRoot
ShowSymlinks off
#允许root用户登录,默认是不允许的,安全起见不推荐此选项。
RootLogin off
#登陆后允许IDLE的时间
TimeoutNoTransfer 600
#连接超时的时间
TimeoutStalled 600
#客户端idle时间设置,默认就是600秒
TimeoutIdle 600
#显示时显示详细信息
ListOptions "-l"
#阻止带.的命令
DenyFilter \*.*/
# 限制lionftp用户上传的速率限制在150Kbytes/s
TransferRate STOR 150 user lionftp
# 限制lionftp用户下载的速率限制在100Kbytes/s
TransferRate RETR 100 user lionftp
#端口号
Port 21
# 显示以MB为单位
QuotaDisplayUnits Mb
#设置被动模式使用的端口范围
PassivePorts 60000 65535
#FTP SERVER最大连接数
MaxInstances 30
#设置服务器进程运行使用的用户
User proftpd
#设置服务器进程运行使用的组
Group nogroup
#设置用户上传文件的权限掩码
Umask 022 022
#设置用户被chroot锁定到的各自的Home目录
DefaultRoot /usr/local/nginx/html
# 允许覆盖文件
AllowOverwrite on
#屏蔽服务器版本信息
ServerIdent off
#上传时,允许断点续传
AllowStoreRestart on
#下载时,允许断点续传
AllowRetrieveRestart on
#每个帐户最多允许来源ip为1个
MaxHostsPerUser 10
#每个帐户在每个客户端最多可以同时登陆1次,可以防止多线程软件下载对服务器的破坏
MaxClientsPerUser 10
#同一个客户端只能最多1个帐号可以登陆
MaxClientsPerHost 10
#是否要把ftp记录在日志中,如果不想可以设置成off屏蔽掉log日志。
WtmpLog on
#设置日志
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
# 不要求有合法shell,直接效果是允许nologin用户和虚拟用户登录
RequireValidShell off
# AuthOrder指定了权限检查的顺序。这里只使用虚拟用户
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /usr/share/proftpd/etc/passwd
AuthGroupFile /usr/share/proftpd/etc/group
<Directory "/usr/local/nginx/html/*">
<Limit ALL>
AllowUser lionftp
DenyAll
</Limit>
<Limit CWD READ DIRS>
AllowAll
</Limit>
</Directory>
<Directory "/usr/local/nginx/html/a/*" >
<Limit ALL>
AllowUser lionftp
AllowUser chenshuaiftp
AllowUser ftpchenshuai
DenyAll
</Limit>
<Limit CWD READ DIRS>
AllowAll
</Limit>
</Directory>
#不允许任何人执行chmod命令(SITE_CHMOD)
<Limit SITE_CHMOD>
DenyAll
</Limit>
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>
Include /etc/proftpd/conf.d/
root@ubuntu:~# mkdir -p /usr/share/proftpd/etc/ root@ubuntu:~# touch /usr/share/proftpd/etc/passwd root@ubuntu:~# touch /usr/share/proftpd/etc/group
root@ubuntu:~# ftpasswd --passwd --file=/usr/share/proftpd/etc/passwd --name=ftpchenshuai --uid=3000 --home=/usr/local/nginx/html/a --shell=/bin/false
root@ubuntu:~# ftpasswd --group --name=testgroup --gid=2014
root@ubuntu:~# ftpasswd --group --name=testgroup --gid=2014 --member=ftpchenshuai
root@ubuntu:~# chmod 777 -R /usr/local/nginx/html/a
root@ubuntu:~# service proftpd restart
C:\Users\Administrator>ftp ftp> open 192.168.1.100 连接到 192.168.1.100。 220 192.168.1.100 FTP server ready 用户(192.168.1.100:(none)): ftpchenshuai 331 Password required for ftpchenshuai 密码: 230-欢迎您ftpchenshuai,这是idoall的测试FTP服务器; 230- 目前时间是:Sat Aug 09 03:30:53 2014; 230- 本服务器最多允许0个用户连接数; 230- 目前服务器上已有2个用户连接数; 230- 目前你所在的目录是/a; 230- 目录所在的硬盘还剩下0字节。 230 User ftpchenshuai logged in ftp> pwd 257 "/a" is the current directory ftp> dir 200 PORT command successful 150 Opening ASCII mode data connection for file list -rw-r--r-- 1 ftpchenshuai 3000 1870666 Aug 9 02:13 xxx.apk 226 Transfer complete ftp: 收到 88 字节,用时 0.01秒 5.87千字节/秒。 ftp> put c:\a.txt 200 PORT command successful 150 Opening ASCII mode data connection for a.txt 226 Transfer complete ftp: 发送 1 字节,用时 0.06秒 0.02千字节/秒。 ftp> dir 200 PORT command successful 150 Opening ASCII mode data connection for file list -rw-r--r-- 1 ftpchenshuai 3000 1 Aug 9 03:33 a.txt -rw-r--r-- 1 ftpchenshuai 3000 1870666 Aug 9 02:13 xxx.apk 226 Transfer complete ftp: 收到 154 字节,用时 0.01秒 22.00千字节/秒。 ftp> bye 221 Goodbye.
ubuntu12.04+proftpd1.3.4a的系统用户+虚拟用户权限应用实践,布布扣,bubuko.com
ubuntu12.04+proftpd1.3.4a的系统用户+虚拟用户权限应用实践
原文:http://www.cnblogs.com/lion.net/p/3900930.html