关于proftp的问题,我总结了几个FAQ和大家分享:
1、配置ftp允许root登录
修改/etc/ftpusers,去掉root

2、如果希望实现root用户ftp后可以切换到/目录,一般用户只能切换到自己的主目录
修改/etc/proftpd.conf文件,在DefaultRoot ~ 一行前面增加一行
DefaultRoot / root
重新启动proftpd服务即可。
改变匿名登录的不想登录到默认的 /var/ftp目录
就要把/etc/passwd文件中的
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
中的默认目录改变了即可。

3、如何使ftp具有对目录的写入功能
请在/etc/proftpd.conf文件中的
<Global>段中改为如下:
<Limit WRITE >
AllowAll
</Limit>
才可以。

注:一些特殊的要求可以通过limit选项来限制或是准许。

有关Limit模块的选项及说明如下:
CMD 改变目录
MKD 建立目录的权限
RNFR 更改目录名的权限
DELE 删除文件的权限
RMD 删除目录的权限
RETR 从服务端下载到客户端的权限
STOR 从客户端上传到服务端的权限
READ 可读的权限,不包括列目录的权限,相当于RETR,STAT等
WRITE 写文件或者目录的权限,包括MKD和RMD
DIRS 是否允许列目录,相当于LIST,NLST等权限,还是比较实用的
ALL 所有权限
LOGIN 是否允许登陆的权限

有关Limit执行动作以及功能说明如下表:
Allow 授权访问的主机
Deny 拒绝访问的主机
AllowUser 针对某个用户允许的Limit选项
DenyUser 针对某个用户禁止的Limit选项
AllowGroup 针对某个用户组允许的Limit选项
DenyGroup 针对某个用户组禁止的Limit选项
AllowAll 针对所有用户组允许的Limit选项
DenyAll 针对所有用户禁止的Limit选项

4、如何限制ftp的匿名登录?

匿名的名称是ftp,anonymous.

5、 ftp上传的时候不能上传同名文件?

ftp的配置文件中默认是准许匿名覆盖上传的,可以看下ftp的配置文件

对应的用户的设置段中的AllowOverwrite 值判定,no是不准许,yes是准许

然后重启ftp服务即可。

6、ftp改为PASV模式

在我们红旗dc 5.0中的设置是在proftpd.conf中添加如下两条语句即可。
MasqueradeAddress ip地址
#该参数设置在client发pasv指令时,server返回给client的pasv地址串中应该包
含的连接地址,
#该地址通常是防火墙的外部地址(作rdr的地址)
PassivePorts 端口号

设置好之后重启一下ftp服务。
FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数
据传送的连接。FTP服务程序一般会支持两种不同的模式,一种是Port模式,一种是
Passive模式(PasvMode),我先说说这两种不同模式连接方式的分别。
先假设客户端为C,服务端为S.
*Port模式:*
当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉
服务端S(客户端C在本地打开了一个端口N在等着你进行数据连接), 当服务端S收
到这个Port命令后
就会向客户端打开的那个端口N进行连接,这种数据连接就生成了。

*Pasv模式:*
当客户端C向服务端S连接后,服务端S会发信息给客户端C,这个信息是(服务端S在
本地打开了一个端口M,你现在去连接我吧),当客户端C收到这个信息后,就可以向服
务端S的M端口进行连接,连接成功后,数据连接也建立了。

从上面的解释中,两种模式主要的不同是数据连接建立的不同,对于Port模式,是
客户端C在本地打开一个端口等服务端S去连接建立数据连接;而Pasv模式就是服务端
S打开一个端口等待客户端C去建立一个数据连接。

关于ftp的pasv模式,有一种情况:
如果是通过iptables转发到内网的一台服务器,默认只能用port模式,此时,可以
增加两个iptables模块,以实现pasv模式:
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
放入/etc/rc.local即可。(网关服务器上设置,或在配置了iptables的机器上设置)
当然,通过修改proftpd.conf,指定允许的端口也可以,但这个会有限制,就是
pasv port端口是固定的,假设数量是51000-510011,则只能提供给最多11个用
户,否则就没有端口可以分配了。但加载模块则没有这个问题

7、如何使用ftp的自动登录
可以使用使用netrc文件进行自动FTP
在客户端:在自己的home目录下建立一个权限为600,后缀名为.netrc的文件,
内容如下:
machine ftpserver ip login 用户名 passwoord 密码

eg:machine 172.16.81.210 login test password abc123

然后就可以成功,

操作过程:
vi test.netrc
内容为:machine 172.16.81.210 login test password abc123
保存退出

chmod 600 test.netrc

本身的ftp的配置文件是不可实现这种功能的

8、 把ftp中的一个目录删掉了,是否能恢复

ftp中把目录删除掉,也就是在系统中删除掉了,是无法恢复的。

9、 如何在终端下添加ftp用户?
用useradd添加一个系统用户即可,并保证这个用户不在/etc/ftpusers
里面,这个里面的是不允许登录的用户。

10、报错如下:
IPv4 getaddrinfo 'bsp' error: Name or service not known
warning: unable to determine IP address of 'bsp'
error: no valid servers configured
Fatal: error processing configuration file '/opt/proftp/etc/proftpd.conf'

解决办法:vi /etc/sysconfig/network
修改字段HOSTNAME=localhost.localdomain(主机名)
然后重启服务器,看可否解决您的问题

11、 ftp启动的时候报“socket opertion on non-spcket localhost.localdomain
(running form commond line?) use servertype standalone in config file”报
错启不来

把proftp文件中的ServerType inetd改为“standalone”然后在重启ftp服务


12、 ftp中怎样设置个人用的ftp资源(条件是只能个人查看和修改)。
可以直接通过改变文件目录的属性来实现,
例如data目录下有a、b、c三个目录分别想让user1、user2、user3个不同用户使用。
然后执行
先进入/data目录下
chown user1:user1 a/
chmod 744 a/
chown user2:user2 b/
chmod 744 b/
chown user3:user3 c/
chmod 744 c/
然后客户端登录的时候他们对其他的目录就没有访问权限。

13、 ftp可以上传一个目录吗?
ftp是没有这种功能的,只能是mget传输当前目录下的所有文件。
不过可以使用scp命令,先把ssh服务打开,然后执行命令(下载server上一个目录
及包含的子目录)
scp -r username@serverip:/目录名 本机保存的位置。
然后会提示输入对应用户的密码。