公司运营部同事需要一个文件服务器用来存储保单影像资料。由于公司没有现成的环境,于是决定自己搞一下。大致思路:
1.先创建一个ftp用户,用来上传文件。
2.由于ftp用户没有ssh和telnet权限,需要创建另外一个用户用来做备份操作。
3.使用crontab定时任务实现每天晚上自动将文件打包后传输到另一台服务器上备份。2、建用户
在root用户下添加ftp用户,操作步骤如下:
useradd -d /home/yunying yunying -s /sbin/nologin
/sbin/nologin 限定用户不能telnet,只能ftp
usermod -s /sbin/nologin //限定用户test不能telnet,只能ftp
usermod -s /sbin/bash test //用户test恢复正常
usermod -d /test test //更改用户test的主目录为/test
3、限制用户只能访问/home/yunying,不能访问其他路径
chroot_local_user=YES #
chroot_list_enable=YES #
chroot_list_file=/etc/vsftpd/chroot_list #设定受限制
allow_writeable_chroot=YES #允许在用户自身目录下执行write操作,限定只能访问自身目录后默认不能write操作
参数说明可参考: https://blog.csdn.net/Andy86869/article/details/78691035
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
5、如果需要允许用户修改密码,但是又没有telnet登录系统的权限:
usermod -s /usr/bin/passwd test //用户telnet后将直接进入改密界面passwd test //为test设置密码
#作者:lzy
#该脚本用来将190服务器上的运营影像资料压缩并传输到189服务器上存储
#2018-05-29
BACK_DIR="/home/backdata"
DATE=`date +%Y%m%d`
LOG=$BACK_DIR"/"$DATE".log"
DATE_TIME=`date +"%Y-%m-%d %H:%M:%S"`
echo $DATE_TIME" start" >> $LOG
echo $DATE_TIME" 开始压缩文件" >> $LOG
tar -czvf $BACK_DIR"/"$DATE".tar.gz" /home/yunying/
echo $DATE_TIME" 开始删除上次备份的文件" >> $LOG
find $BACK_DIR -mtime +1 -name '*.*' -exec rm -rf {} \;
echo $DATE_TIME" 删除上次备份的文件结束" >> $LOG
echo $DATE_TIME" 开始上传到189服务器" >> $LOG
scp -p $BACK_DIR"/"$DATE".tar.gz" [email protected]:~/
echo $DATE_TIME" 上传到189服务器结束" >> $LOG
ssh -t [email protected] "find /home/backdata -mtime +1 -name '*.*' -exec rm -rf {} \;"
echo $DATE_TIME" 删除189服务器上昨天的文件" >> $LOG
echo $DATE_TIME" end" >> $LOG
2.ssh免密码
# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)
# ssh [email protected] "mkdir .ssh" (需要输入密码)
# scp ~/.ssh/id_rsa.pub [email protected]:.ssh/id_rsa.pub (需要输入密码)
在B上的命令:
# touch /home/test/.ssh/authorized_keys (如果已经存在这个文件, 跳过这条)
# cat /home/test/.ssh/id_rsa.pub >> /home/test/.ssh/authorized_keys (将id_rsa.pub的内容追加到authorized_keys 中)
修改test/.ssh和authorized_keys的权限
#chmod 700 test
#chmod 700 .ssh
#chmod 600 authorized_keys
回到A机器:
# ssh [email protected] (不需要密码, 登录成功)
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
00 01 * * * sh /home/backdata/shell/backftp.sh
crontab时间格式及相关知识见:https://www.cnblogs.com/longjshz/p/5779215.html