CentOS7 FTP及Rsync服务搭建

CentOS7 FTP及Rsync服务搭建

文章来源: 陶老师运维笔记- 微信公众号

FTP_RSYNC.jpg

生活及工作中,会攒下一些有用的软件及文档。并且随时间会越来越多,这时可能会希望有一个自已的FTP-Server或Rsync-Server做为文件仓库。 本文介绍下过程。

1. FTP服务搭建

ftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输。

1.1 安装vsftp软件

#安装
yum install -y vsftpd

#设置开机启动
systemctl enable vsftpd.service
#启动
systemctl start vsftpd.service
#停止
systemctl stop vsftpd.service
#查看状态
systemctl status vsftpd.service

1.2 配置vsftpd

  • 备份vsftpd的默认配置文件。
$cd /etc/vsftpd/ 
$cp vsftpd.conf vsftpd.conf.bak
  • 修改配置vsftpd.conf
#打开配置文件
vim /etc/vsftpd/vsftpd.conf

#显示行号
:set number

#修改配置 12 行
anonymous_enable=NO

#修改配置 33 行
anon_mkdir_write_enable=YES

#修改配置48行
chown_uploads=YES

#修改配置72行
async_abor_enable=YES

#修改配置82行
ascii_upload_enable=YES

#修改配置83行
ascii_download_enable=YES

#修改配置86行
ftpd_banner=Welcome to blah FTP service.

#修改配置100行
chroot_local_user=YES

#添加下列内容到vsftpd.conf末尾
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=1
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES

最终配置:

cat /etc/vsftpd/vsftpd.conf |grep -v '#' |grep -v '^$'
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=1
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES

1.3 建立系统用户vsftpd

#用户登录终端设为/bin/false(即:使之不能登录系统)
useradd vsftpd -d /data1/vsftpd -s /bin/false
chown -R vsftpd:vsftpd /vsftpd/vsftpd

1.4 建立ftp用户

建立用户文件 vim /etc/vsftpd/virtusers
第一行为用户名,第二行为密码。不能使用root作为用户名

cat /etc/vsftpd/virtusers
guest
guestguest
ftpadmin
ftp123456

1.5 生成用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
chmod 600 /etc/vsftpd/virtusers.db 

1.6 修改 /etc/pam.d/vsftpd 文件

#修改前先备份 
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vim /etc/pam.d/vsftpd
#先将配置文件中原有的 auth 及 account,session的所有配置行均注释掉
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth

1.7 建立虚拟个人目录

分别建立guest及ftpadmin用户。

mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf

ftpadmin用户:

#建立虚拟用户ftpadmin配置文件
cat /etc/vsftpd/vconf/ftpadmin
local_root=/data1/vsftpd
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

#建立目录
mkdir /data1/vsftpd/

guest用户:

#建立虚拟用户guest配置文件
touch guest
#编辑guest用户配置文件,内容如下
/etc/vsftpd/vconf/guest
local_root=/data1/vsftpd/pub
anon_world_readable_only=NO
#建立目录
mkdir /data1/vsftpd/pub

1.8 修改目录属性及重启FTP

配置完成后结构如下:

tree /etc/vsftpd/
/etc/vsftpd/
├── ftpusers
├── user_list
├── vconf
│   ├── ftpadmin
│   ├── ftpuser
│   └── guest
├── virtusers
├── virtusers.db
├── vsftpd.conf
├── vsftpd.conf.bak
└── vsftpd_conf_migrate.sh

修改目录属性:

chmod -R 775 /data1/vsftpd/

重启ftp:

#重启
systemctl restart vsftpd.service
systemctl status vsftpd.service

1.9 防火墙

配置前可以关闭setenforce及设置防火墙。

chkconfig iptables off 
setenforce 0
#IPtables 的设置方式:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40010 -j ACCEPT

1.10 FTP命令

FTP 登录:

$man ftp
#登录 
ftp ftp.tao-ops.com   #输入账号/密码

FTP常用命令:

#ftp命令  描述
ls  列出远程机的当前目录
cd  在远程机上改变工作目录
lcd 在本地机上改变工作目录
ascii   设置文件传输方式为 ASCII 模式
binary  设置文件传输方式为二进制模式
close   终止当前的 ftp 会话
get (mget)  从远程机传送指定文件到本地机
put (mput)  从本地机传送指定文件到远程机
open    连接远程 ftp 站点
quit    断开与远程机的连接并退出 ftp
?   显示本地帮助信息
!   转到 Shell 中
prompt 1    关闭交互模式

1.11 文件下载:

文件下载除了用ftp get命令外,还可以用ftp客户程序,wget或浏览器等完成。

  • wget下载:
wget -P /tmp  ftp://ftp.tao-ops.com:21/README.md  --ftp-user=xx --ftp-password=xxxx 
  • mac 下载:
    直接在浏览器上输入ftp地址,连接ftp服务进行下载。
    ftp.png

2. Rsync服务搭建

rsync 是一款高效的远程数据备份和镜象工具,可快速地同步多台主机间的文件。官网: https://rsync.samba.org/
Rsync具有如下特性:

  • 支持链接、所有者、组信息以及权限信息的拷贝;
  • 通过远程 shell(ssh, rsh)进行传输;
  • 无须特殊权限即可安装使用;
  • 流水线式文件传输模式,文件传输效率高;
  • 支持匿名操作;

2.1 rsync 安装

#检查是否安装
$whereis rsync
$rpm -qa|grep rsync -i
#yum安装rsync
$yum install rsync

查看版本:

#查看版本:
rsync --version

2.2 配置文件

配置文件有/rsyncd.conf,rsyncd.secrets 等。

vim /etc/rsyncd.conf          #主配置文件
touch /etc/rsyncd.secrets       #用户名密码文件,一组用户一行,用户名和密码使用 : 分割
touch /etc/rsyncd/rsyncd.motd          #非必须,连接上rsyncd显示的欢迎信息,此文件可不创建

yum安装后会有主配置文件 /etc/rsyncd.conf。可以使用 man rsyncd.conf 查看说明。

$man rsyncd.conf
rsyncd.conf(5) 
                                             rsyncd.conf(5)
NAME
       rsyncd.conf - configuration file for rsync in daemon mode

配置说明

man rsyncd.conf
$cat /etc/rsyncd.conf 
uid = rsync #访问/backup的用户
gid = rsync #访问/backup的用户组
use chroot = no #和安全相关的设置,不用。
max connections = 200 #并发连接数
timeout = 300 #超时时间
pid file = /var/run/rsyncd.pid #进程号所在的文件
lock file = /var/run/rsync.lock #锁文件
log file = /var/log/rsyncd.log #日志文件 服务运行不正常 第一时间看日志。
ignore errors #忽略错误
read only = false #可读写
list = false #不能ls(列表)
hosts allow =172.16.1.0/24 #内网网段。
hosts deny = 0.0.0.0/32 #什么网段不让连。
auth users = rsync_backup #认证虚拟用户(客户端连接使用的用户)。
secrets file = /etc/rsync.password ##认证虚拟用户密码文件。
[backup] #模块标签
comment = ""#注释
path = /data1/backup #备份的路径

配置示例:

uid = nobody
gid = nobody
pid file = /var/run/rsync.pid
port = 873
use chroot=yes
list = no
max connections = 20
log file=/var/log/rsyncd.log
#模块配置(可多个)
[dbatemp]
uid=root
gid=root
path = /data1/dbatemp
auth users = dba
secrets file = /etc/rsyncd.secrets
read only=no

[software]
uid = root
git = root
auth users = ops
path = /data1/vsftpd/software
secrets file = /etc/rsyncd.secrets
read only = no

2.3 密码文件及权限

为了安全该把主配置文件中的list设置为No,并配置密码文件并授权。
密码文件:
创建密码文件syncd.secrets 如下。

$vim /etc/rsyncd.secrets       #用户名密码文件,一组用户一行,用户名和密码使用 : 分割
$cat /etc/rsyncd.secrets
ops:opspwd123
dba:dbapwd123

设置文件权限:
说明:rsyncd服务的密码文件权限必须是600。

chmod 600 /etc/rsyncd.secrets

2.4 启动/停止

启动:

rsync 运行可以用rsync --daemon或xinetd方式。
1) daemon命令运行:
rsync --daemon #默认配置文件是/etc/rsyncd.conf

#默认配置文件是/etc/rsyncd.conf,可能需要显式的指定配置文件
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

$netstat -lanpt |grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      3746/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      3746/rsync

为保证开机时自动启动,需要手动加上面的命令(/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf)加入 /etc/rc.local 文件中。
2)xinetd方式运行
xinetd的rsync配置文件是/etc/xinetd.d/rsync,注意修改server_args行。

#yum intall xinetd
vim /etc/xinetd.d/rsync
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args     = --daemon --config=/etc/rsyncd/rsyncd.conf
log_on_failure += USERID
}

设置自启动:

chkconfig rsync on
service xinetd restart

停止:

ps aux|grep rsync
kill pid

2.5 客户端

rsync客户端配置:
配置rsync客户端密码文件并授权,权限要为600。

#格式:用户:密码
vim /etc/rsyncd.secrets.passfile 
opspwd123

$chmod 600  /etc/rsyncd.secrets.passfile 

可以使用rsync --password-file=xxx或直接export RSYNC_PASSWORD=pwdxxx;

#--password-file=FILE 从FILE中得到密码。
$rsync --password-file=/etc/rsyncd.secrets.passfile  ops@192.168.0.3::software 
#export RSYNC_PASSWORD=
$export RSYNC_PASSWORD=opspwd123  ; rsync  ops@192.168.0.3::software  

2.6 防火墙

如果服务器开启了防火墙,必须保证端口能穿过防火墙。

iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT

2.7 常用命令

rsync语法:

rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@][host]:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

$rsync -avzP data1user@192.168.1.2::data1 ~/data1
保持传输原有文件权限,用户,用户组,时间,递归的把data1模块数据复制到用户家目录的data1目录里.
参数 a的意思就是 保留文件原有权限,用户,用户组,时间且递归的copy包括链接文件,块设备在内的所有文件,这个参数很常用
参数 v是显示传输信息
参数 P显示传输进度
参数 z是压缩传输内容进行传输

常用命令:

$export RSYNC_PASSWORD=opspwd123 ;
#限速
$rsync macdown071.zip ops@rsync.tao-ops.com::software/   --bwlimit=50000 -arv 
$rsync  --password-file=/etc/rsyncd.secrets.passfile ops@ip::software . --bwlimit=50000 -arv

#备份
$rsync -avzP data1user@192.168.1.2::data1 ~/data1
保持传输原有文件权限,用户,用户组,时间,递归的把data1模块数据复制到用户家的data1目录里。

#删除--delete
rsync -avzP --delete data1user@192.168.1.2::data1 ~/data1
#保持data1模块和用户家目录模块内容完全一致,加上参数 --delete,这样会删除在~/data1目录里但是不在data1

参考:


陶老师运维笔记
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357

推荐阅读更多精彩内容