根据公司需要,要搭建一个proftpd,搭建过程中权限是最让我费解的地方,不过在一位老师的帮助下,最终还是解决了权限问题,所以拿出来跟大伙分享下。

proftpd的认证机制有基于mysql的,系统用户的,基于文件的也就是虚拟用户,接下来说的就是基于虚拟用户的。

下载地址:ftp://ftp.proftpd.org/distrib/source/

在帖子的附件中我也给出了proftpd的源码包,版本为1.3.4a

1、解包

 tar -zvxf proftpd-1.3.4a.tar.gz


2、配置

 ./configure

--prefix=/usr/local/proftpd/    指定proftpd的安装位置

--enablenls                    支持中文


3、编译

  make


4、编译安装

  make install

启动:/usr/local/proftpd/sbin/proftpd   按下回车,即可启动

停止:/usr/local/proftpd/sbin/ftpshut   按下回车,即可关闭

###(这里讲一个关于proFTPD启动方式的小技巧,回到proFTPD的源码目录,执行 

 cp ./contrib/dist/rpm/proftpd.init.d  /etc/rc.d/init.d/proftpd 

chmod 755 /etc/rc.d/init.d/proftpd

OK,执行完以上两条命令后,我们就可以用/etc/init.d/proftpd   start|stop  来启动和关闭FTP啦。

配置

首先讲一下FTP配置的基本格式:


<Directory "需要共享的目录路径">

<Limit "权限参数">

************************* (此行写把上面的权限赋予的用户或组)

</Limit>

</Directory>


以上就是FTP配置目录的基本格式,如果看不懂的话,下面我还会给出例子,可以参照。


配置目录时用到的权限如下:


    CMDChange Working Directory 改变目录


    MKDMaKe Directory 建立目录的权限


    RNFR: ReName FRom 更改目录名的权限


    DELEDELEte 删除文件的权限


    RMDReMove Directory 删除目录的权限


    RETRRETRieve 从服务端下载到客户端的权限


    STORSTORe 从客户端上传到服务端的权限


    READ:可读的权限,不包括列目录的权限,相当于RETRSTAT


    WRITE:写文件或者目录的权限,包括MKDRMD


    DIRS:是否允许列目录,相当于LISTNLST等权限,还是比较实用的


    ALL:所有权限:


    LOGIN:是否允许登陆的权限


针对上面的这个Limit(权限)所应用的对象,又包括以下范围:


    AllowUser 针对某个用户允许的Limit


    DenyUser 针对某个用户禁止的Limit


    AllowGroup 针对某个用户组允许的Limit


    DenyGroup 针对某个用户组禁止的Limit


    AllowAll 针对所有用户组允许的Limit


    DenyAll 针对所有用户禁止的Limit


举个例子,形象的说明下权限方面的配置。

要在ftp上共享运维部的目录,要求运维部的经理可以上传,删除,普通员工只能上传,下载,没有删除权限。
运维部路径在/mnt/pub/yunwei

proftpd.conf中关于运维部目录权限的设置如下:

<Directory "/var/ftp/yunwei">

     <Limit CWD MKD RNFR READ WRITE STOR RETR>

     DenyAll  拒绝所有人往该目录下执行Limit后的操作指令

     </Limit> 

     <Limit DELE>
      AllowUser jingli  只允许经理删除
      DenyAll  禁止任何人在该目录下删除文件

     </Limit>

     <Limit CWD MKD RNFR READ WRITE STOR RETR>

    AllowUser yunwei 仅允许yunwei用户(组)可以执行Limit后的所有指令

     </Limit> 

     </Directory>

上面就是关于目录的权限设置,接下来就是新建虚拟用户。
进入proftpd的源码目录
cp ftpasswd /usr/local/proftpd/bin/ 
 chmod +x /usr/local/proftpd/bin/ftpasswd
上面两步是让ftpasswd 可执行。
ftpasswd命令格式说明:
--passwd  创建密码文件,即AuthUserFile指定的文件

--group   创建组文件

--name   指定创建的用户名

--uid   指定用户虚拟UID

--gid     指定虚拟GID

--home   指定用户家目录

--shell   指定用户Shell

--file   指定创建的文件名
例:新建一个用户
ftpasswd --passwd --file=XX --name=XX --uid=XX --home=XX --shell=XX

新建一个组
ftpasswd --group --file=XX --name=XX --gid=XX

如果想讲用户加入到组的话,直接vim编辑组文件,在组后面添加上用户就OK了。

以上就是proftpd基于虚拟用户的设置,有错的不足的地方,烦请各位大牛指出,先行谢过。