根据公司需要,要搭建一个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的安装位置
--enable-nls 支持中文
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配置目录的基本格式,如果看不懂的话,下面我还会给出例子,可以参照。
配置目录时用到的权限如下:
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
举个例子,形象的说明下权限方面的配置。
要在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基于虚拟用户的设置,有错的不足的地方,烦请各位大牛指出,先行谢过。
转载于:https://blog.51cto.com/song49/791018