环境:redhat 5.6 企业版、proftpd
需求:我们采用FTP形式提供给商户对账文件,商户自行使用FTP账号密码登录获取对账文件。我们系统对FTP需要有读写权限,而商户只能有读取权限。
分析:首先需要建立规则模版化。目前我们提供给商户FTP的账号统一使用商户号,默认密码为商户号后6位。而我们平台针对每个商户的FTP存放对账文件,FTP登录名以h为前缀加上商户号后5位,密码为统一密码。
即然规则统一确定,那么应该写成shell脚本以便日后重复利用。proftpd使用的是linux系统账号,所以每增加一个FTP账户需要增加一个系统账号。但是为安全起见,该账号是不能使用ssh登录的,所以在建立用户时需要指定bash为nologin。所有建立的用户都应该属于FTP组,提供给商户的用户home目录与我们平台使用的FTP账户目录共享,并设置权限为750(目录所属者可读写,目录所属组可读,其他用户不可访问)。以下是我的shell脚本:
#!/bin/sh # FTP组ID ftp_group_id=50; # 只读权限FTP用户名 ftpusername=$1; len=`expr length $ftpusername`; if [ $len -lt 6 ]; then echo "用户名不符合长度规则"; exit 0; fi # 取用户名后6位字符 ftppassword=`openssl passwd -salt $ftpusername ${ftpusername:0-6}`; # FTP管理用户 hytusername="h"${ftpusername:0-5}; # 使用固定密码 hytpassword=`openssl passwd -salt $hytusername platformpwd`; useradd -s /sbin/nologin -g $ftp_group_id -p $hytpassword $hytusername; ftphome="/home/"$hytusername; chmod 750 -R $ftphome; # FTP访问用户只能读取 useradd -d $ftphome -s /sbin/nologin -g $ftp_group_id -p $ftppassword $ftpusername;
保存在/usr/local/bin目录下,命名为ftpuseradd.sh。
使用方法:ftpuseradd 商户号
发表回复