分页: 1 / 1

OpenBSD系统下pure-ftpd配置虚拟用户和上传动作脚本

发表于 : 2019-03-09 17:33
f5b
研究日志,分享一下

一、安装pkg_add pure-ftpd
#pkg_add pure-ftpd
选一个有virtual的,可启用虚拟用户

二、修改 /etc/rc.d/pure_ftpd脚本
需要上传动作脚本,请添加-o参数
默认只有本地用户才能登陆,虚拟用户需添加-l参数,开启虚拟用户参数之后如需保留本地用户登陆,必须-l unix -l puredb: 两个参数同时出现
需要第一次登陆就自动创建虚拟用户的目录,请添加-j参数
例子如下
daemon_flags="-A -B -H -o -u1000 -j -l puredb:/etc/pureftpd.pdb"

三、创建虚拟用户
虚拟用户必须捆绑到现有unix用户
如先创建一个ftpuser的用户,给它nologin的shell,然后
#pure-pw useradd newuser -u ftpuser -d /home/ftp/newuser
#pure-pw mkdb ###更新用户数据库之后才能登陆,请看/etc/pureftpd.passwd和/etc/pureftpd.pdb

更多信息参看
https://download.pureftpd.org/pure-ftpd ... tual-Users

四、开通匿名ftp访问
OpenBSD本地创建用户名为ftp的用户,shell给它nologin
#adduser ftp

五、上传后的动作脚本

1. 脚本须是.sh扩展名,并且有x执行权限
如创建/etc/myuploadscript.sh,然后chmod a+x /etc/myuploadscript.sh
例子如下,脚本作用是将上传的文件转换成mp4然后删除源文件
#!/bin/ksh
#
/usr/local/bin/ffmpeg -i $1 -vcodec copy -y $1.mp4 && rm $1

2. 设置开机运行pure-uploadscript服务
创建/etc/rc.local,内容如下

if [ -x /usr/local/sbin/pure-uploadscript ]; then
/usr/local/sbin/pure-uploadscript -B -r /etc/myuploadscript.sh
fi

3. 尝试加上-g 1001 -u 1001 参数限制用户会好一些,详情man pure-uploadscript
例如只让uid是1001的用户执行脚本,这样,需要将视频转换成mp4的虚拟用户就捆绑到1001用户上,其他虚拟用户另外捆绑一个用户如1002

更多参考

pure-ftpd配置用config文件而不用命令行参数
I've just had another look at the rc script, you can do this:

# rcctl enable pure_ftpd
# rcctl set pure_ftpd flags /etc/pure-ftpd.conf

Make sure "Daemonize yes" is set in the config file.

The only real advantage to doing it this way is that you can comment
the config file, there are no extra settings available - everything in the file can also be set on the command line.