拓展 centos 7

查看端口的占用情况

Centos6/contos7(ECS) 使用

netstat
查询系统上有多少TCP 多少UDP会话

netstat -tun

  • -t: tcp
  • -u: udp
  • -a: all 表示列出所有的连接,服务监听,Socket资料
  • -n: port number 用数字的形式展示
  • -p: program显示哪个进程监听这个端口
  • -l :listening,列出当前处于监听状态的服务

contos7(Minimal) /contos7(ECS) 使用

命令 : ss

ss 尤其是在有海量并发时, 效率更高

  • -t: tcp
  • -u: udp
显示当前机器上有哪些端口提供服务
[root@139 bin]# ss -nlutp

centos7特性

操作 centos6 centos7
文件系统 ext4 xfs
修改主机名 /etc/sysconfig/network /etc/hosthome
修改时区 /etc/sysconfig/clock timedatectl set-timezone Asia/Tokyo
查看ip信息 ifconfig ifconfig/ip(阿里ECS)
查看DNS信息 /etc/resolv.conf -
查看端口状态 netsat netsat/ss

核心服务

操作 centos6 centos7
防火墙 iptables firewald
服务管理 System V init systemd
时间同步服务 ntp chrony

查看防火墙的状态

[root@大爱ECS bin]# sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead) # 关闭
     Docs: man:firewalld(1)

其他变化

  • centos7 默认支持docker
    • 内核支持: Overlay FS
    • Repo 源支持
    • centos7 的yum源支持一键安装docker
  • 不再支持32位操作系统
  • GNOME 3.X (桌面应用)
  • 支持40G以太网卡

文件目录

-rw-r--r--   1 root root     0 Sep 14 19:11 a2498
lrwxrwxrwx   1 root root     7 Feb 22  2019 bin -> usr/bin  # 操作系统的命令
dr-xr-xr-x.  5 root root  4096 Jun 24 10:17 boot # boot loader files 基础引导文件,引导开机
drwxr-xr-x   7 root root  4096 Jun  3 14:41 CloudResetPwdUpdateAgent
drwxr-xr-x   7 root root  4096 Sep  1 22:47 CloudrResetPwdAgent
drwxr-xr-x  19 root root  3020 Sep 15 15:10 dev  # 磁盘,设备文件
drwxr-xr-x. 84 root root  4096 Sep 15 15:10 etc  # 存放大量的配置文件
drwxr-xr-x.  3 root root  4096 Sep  8 20:32 home # 普通用户的家目录
drwxr-xr-x   4 root root  4096 Aug 25 19:25 kong 
lrwxrwxrwx   1 root root     7 Feb 22  2019 lib -> usr/lib   # 系统的依赖库
lrwxrwxrwx   1 root root     9 Feb 22  2019 lib64 -> usr/lib64
drwx------.  2 root root 16384 Feb 22  2019 lost+found
drwxr-xr-x.  2 root root  4096 Apr 11  2018 media # 媒体数据
drwxr-xr-x.  2 root root  4096 Apr 11  2018 mnt # mount directory 挂载目录
drwxr-xr-x   3 root root  4096 Aug 25 17:32 node
drwxr-xr-x.  2 root root  4096 Sep 13 03:14 opt  # optional add-on apps 原生添加的app
dr-xr-xr-x  85 root root     0 Sep 15 15:10 proc # process infornation 进程的信息 如top提取的数据就来自这个目录
dr-xr-x---.  8 root root  4096 Sep 15 15:06 root # 管理员的家目录
drwxr-xr-x  25 root root   740 Sep 15 15:10 run
lrwxrwxrwx   1 root root     8 Feb 22  2019 sbin -> usr/sbin
drwxr-xr-x.  2 root root  4096 Apr 11  2018 srv # Service Data 服务数据
dr-xr-xr-x  13 root root     0 Sep 15 15:10 sys
drwxrwxrwt. 13 root root  4096 Sep 15 15:13 tmp # 临时文件
drwxr-xr-x. 13 root root  4096 Feb 22  2019 usr # 用户安装的软件
drwxr-xr-x. 19 root root  4096 Sep 15 15:10 var # 可变的文件,如日志文件/帮助文档
centos6 centos7
bin bin->usr/bin
sbin sbin->user/sbin
lib lib->usr/lib
lib64 lib64->usr/lib
  • | run

centos7 多出来了一个run目录.这个目录类似tmp目录,都用来存放临时文件, 但是不同的是它存放的正在运行的服务需要的临时文件

修改时区

centos6

就是拷贝一份文件到 /etc/localtime中

cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

centos7

命令: timedatectl

[root@大爱ECS /]# timedatectl 
      Local time: Sun 2019-09-15 15:40:34 CST  # 本地时间
  Universal time: Sun 2019-09-15 07:40:34 UTC  # 世界时间
        RTC time: Sun 2019-09-15 07:40:33      # 主板时间
       Time zone: Asia/Shanghai (CST, +0800)   # +0800 东八区
     NTP enabled: yes    
NTP synchronized: no
 RTC in local TZ: no   # 本地主板时间是否和当前时间保持一致
      DST active: n/a

设置本地时间

timedatectl set-timezone Asia/Tokyo

设置主板时间

timedatectl set-local-rtc 1 
1 : 表示将硬件的时间调整为和本地时间一致

网卡接口命名

centos6

一般命名为:

eth0  eth1  eth2
em0   em1   em2
em* 类型的网卡是针对戴尔而设计

centos7

默认是基于固件,拓扑,位置信息来分配,但是更加灵活可预知,但是更加难读

强大的参数自动补全

[root@大爱ECS /]# yum install bash-completion

重新登录生效

systemd 服务管理

格式:

systemctl [options] conmand [name]

支持服务的并行启动,缩短开机时间

Systemd系统的服务管理

--- centos6 centos7
服务管理 service systemctl
启动项管理(开机启动) chkconfig systemctl
系统启动级别 init systemctl
定时任务 cron timer
日志管理 syslog Systemd-journal

还可以 设置环境变量,系统挂载,远程主机管理


systemd 可以管理各种各样的服务,为了区分,他给每个不同的服务取了不同的后缀名

[root@139 ~]# systemctl -t help
Available unit types:
service
socket
busname
target
snapshot
device
mount
automount
swap
timer
path
slice
scope
文件扩展名 作用 文件扩展名 作用
.service 用于定义系统服务 .snapshot 管理系统快照
.target 模拟实现运行级别 .swap Swap设备
.device 定义内核识别设备 .automount 自动挂载点
.mount 文件系统挂载点 .path 监控文件/目录
.socket 进程间通信使用socket文件 .scope 外部线程
.timer 定时器 .slice 分层次管理系统进程
  • 如果没有扩展名,默认扩展名 .service

Systemd 基本命令

基础命令 作用
systemctl, systemctl list-units 查看已经激活的单元
systemctl --failed 查看运行失败的单元
systemctl list-unit-files 查看所有可用的单元,以及是否开机启动
systemctl help 查看单元的帮助手册页
systemctl daemon-reload 重新载入 systemd
systemctl start <单元> 激活单元
systemctl stop <单元> 停止单元
systemctl restart <单元> 重启单元
systemctl status <单元> 输出单元运行状态
systemctl is-enable <单元>检测单元是否自动启动
systemctl enable <单元> 开机启动单元
systemctl enable --now <单元> 设置单元开机启动并且立即启动
systemctl disable <单元> 取消开机自动启动
systemctl mask <单元> 禁用一个单元
systemctl unmask <单元> 取消禁用某个单元

Systemd系统启动级别设置

centos6

查看系统的启动级别

[root@139 ~]# ll /etc/rc.d
total 36
drwxr-xr-x. 2 root root 4096 Sep 14 18:34 init.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc0.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc1.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc2.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc3.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc4.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc5.d
drwxr-xr-x. 2 root root 4096 Aug 24 10:58 rc6.d
-rw-r--r--  1 root root  473 Apr 26 01:19 rc.local

进入每一个rcX, 都能看到在这个启动级别下,启动的服务列表

[root@139 ~]# cd /etc/rc.d/rc3.d
[root@139 rc3.d]# ll
total 0
lrwxrwxrwx. 1 root root 20 Feb 22  2019 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 Feb 22  2019 K90network -> ../init.d/network
lrwxrwxrwx  1 root root 28 Jun  3 14:41 S20cloudResetPwdAgent -> ../init.d/cloudResetPwdAgent
lrwxrwxrwx  1 root root 34 Jun  3 14:41 S20cloudResetPwdUpdateAgent -> ../init.d/cloudResetPwdUpdateAgent
lrwxrwxrwx  1 root root 24 Feb 22  2019 S50multi-queue-hw -> ../init.d/multi-queue-hw
lrwxrwxrwx  1 root root 19 Feb 22  2019 S98denyhosts -> ../init.d/denyhosts

在centos6中查询所在的启动模式

runlevel 

进入指定的模式

init 模式表示号数
--- SysVint Systemd
关闭系统 0 runlevel0.target , poweroff.terget
单用户模式 1,s,single runlevel1.target , rescue.terget (rescue急救模式)
多用户模式 2 runlevel2.target , multi-user.target
多用户带网络模式 3 runlevel3.target , multi-user.target
多用户, 网络模式,图像化 5 runlevel5.target , graphical.terget
重启 6 runlevel6.target , reboot.terget

centos7

查看当前系统所在的启动级别

[root@139 rc3.d]# systemctl get-default 
multi-user.target

改变启动级别慎用 , 需要reboot才能生效

[root@139 rc3.d]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
它是创建了一个连接
  • 永久性的修改默认的启动级别
修改这个配置文件  /etc/inittab

防火墙 firewalld

  • 在centos7中 firewadlld和iptables共存
  • firewalld 底层调用的iotables

firewalld使用区域管理

centos7上的9个区域

[root@139 rc3.d]# ls /usr/lib/firewalld/zones/
block.xml  # (阻塞区域)任何传入网络的数据包都将被阻止
dmz.xml    # (隔离区域) 直选择接受传入的网络链接
drop.xml   # (丢弃区域) 任何传入网络的连接都被拒绝
external.xml  # (外部区域) 不相信网络上的其他计算机不会损伤你的计算机,只选择接受传入网络连接
home.xml  # (家庭区域) 相信网络上的其他计算机不会损伤你的计算机
internal.xml  # (内部区域) 相信网络上的其他计算机,不会损伤你的计算机,只选择接受传入的网络连接
public.xml  # (公共区域)不相信网络上的任何计算机,只根据配置选择接受网络连接
trusted.xml    (信任区域) 所有的网络连接都可以接受
work.xml    # (工作区域) 相信网络上的其他计算机不会损伤你的计算机

家庭网络模式,相信网络上的计算机,安全系数低

[root@139 zones]# cat home.xml 
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Home</short>
  <description>For use in home areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="mdns"/>
  <service name="samba-client"/>
  <service name="dhcpv6-client"/>
</zone>

默认使用的 public.xml 在公共网络上使用,不相信网络上的任意一个计算机器

  • 启动防火墙
[root@139 zones]# systemctl start firewalld.service
  • 查看
[root@139 zones]# [root@139 zones]# systemctl start firewalld.service
-bash: [root@139: command not found
[root@139 zones]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-09-15 17:07:43 CST; 22s ago
     Docs: man:firewalld(1)
 Main PID: 4461 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─4461 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Sep 15 17:07:42 139.9.92.235 systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 15 17:07:43 139.9.92.235 systemd[1]: Started firewalld - dynamic firewall daemon.
  • 查看防火墙使用的默认区域 -- public (active)
[root@139 zones]# firewall-cmd  --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:  # 控制访问我的源ip的限制
  services: dhcpv6-client ssh # 本机哪些服务对外开放, 仅这两个服务提供外部访问
  ports: # 对外提供的端口
  protocols:  # 对外开放的协议
  masquerade: no
  forward-ports: # 目的端口的转发
  source-ports:   # 源 端口的转发
  icmp-blocks:  # 
  rich rules:# 更高级配置,如只允许某一个ip访问
  • 更改默认区域
[root@139 zones]# firewall-cmd --set-default-zone=home
success

再次查看
[root@139 zones]# firewall-cmd --list-all
home (active)
  target: default

firewalld中的区域与接口

  • 一个网卡的接口,只能属于一个zone, 不能同属于多个zone

  • 1个zone 可以有多个网卡接口

  • 任何配置了一个网卡接口的区域,都是活跃区域

  • 查看本机的网卡接口

[root@139 zones]# ip a
# 本地回环网卡
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:d6:74:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.32/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
       valid_lft 81533sec preferred_lft 81533sec
    inet6 fe80::f816:3eff:fed6:7491/64 scope link 
       valid_lft forever preferred_lft forever
  • 查看网卡接口现在属于哪个区域
[root@139 zones]# firewall-cmd --get-active-zones
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

可以看到,eth0 ,现在属于 默认的public区域

  • 将网卡接口转移到其他区域
[root@139 zones]# firewall-cmd --zone=home --change-interface=eth0
The interface is under control of NetworkManager, setting zone to 'home'.
success

再次查看现在活跃的区域,发现home替换了pulic,因为,配置了网卡接口的区域肯定是活跃的区域
[root@139 zones]# firewall-cmd --get-active-zones
home
  interfaces: eth0

firewalld防火墙的端口配置规则及添加白名单

默认情况下,打开防火墙后从服务器往外随意发送数据, 但是任何进入服务器方向的数据都会被墙掉

其实开放了这个端口,就等于让占用这个端口的服务对外提供服务

接下来设置白名单:

  • 配置指定服务对外提供服务
  • 配置指定端口对外开放
  • 配置指定ip访问机器
[root@139 bin]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh # 配置了 dhcpv6-client, 及ssh(允许远程登录)
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  • 添加对外提供服务的端口号
# 查看机器上对外提供服务的端口, 最下面9998端口是服务器上对外提供服务应用程序
# 默认情况下,通过浏览器是访问不到它的,会被墙掉,需要把这个端口添加到白名单才能访问

[root@139 bin]# ss -nlutp
Netid State      Recv-Q Send-Q                               Local Address:Port                                              Peer Address:Port              
udp   UNCONN     0      0                                                *:68                                                           *:*                   users:(("dhclient",pid=3790,fd=6))
udp   UNCONN     0      0                                     192.168.0.32:123                                                          *:*                   users:(("ntpd",pid=3718,fd=21))
udp   UNCONN     0      0                                        127.0.0.1:123                                                          *:*                   users:(("ntpd",pid=3718,fd=18))
udp   UNCONN     0      0                                                *:123                                                          *:*                   users:(("ntpd",pid=3718,fd=16))
udp   UNCONN     0      0                   fe80::f816:3eff:fed6:7491%eth0:123                                                         :::*                   users:(("ntpd",pid=3718,fd=22))
udp   UNCONN     0      0                                              ::1:123                                                         :::*                   users:(("ntpd",pid=3718,fd=19))
udp   UNCONN     0      0                                               :::123                                                         :::*                   users:(("ntpd",pid=3718,fd=17))
tcp   LISTEN     0      128                                              *:22                                                           *:*                   users:(("sshd",pid=4185,fd=3))
tcp   LISTEN     0      50                                              :::9998                                                        :::*                   users:(("java",pid=4939,fd=203))
tcp   LISTEN     0      1024                                            :::9999                                                        :::*                   users:(("java",pid=4939,fd=202))
tcp   LISTEN     0      50                                              :::7473                                                        :::*                   users:(("java",pid=4939,fd=208))
tcp   LISTEN     0      128                                             :::22                                                          :::*                   users:(("sshd",pid=4185,fd=4))

# 为public域添加允许对外提供的端口
[root@139 bin]# firewall-cmd --zone=public --add-port=9998/tcp
success

# 再次查看
[root@139 bin]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 9998/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

# 不需要重启服务,

  • 移除白名单中的端口
[root@139 bin]# firewall-cmd --zone=public --remove-port=端口号 

通过这种方式添加的配置,是临时的,重启服务后,配置会消失

  • 永久生效
[root@139 bin]# firewall-cmd --zone=public --add-port=9998/tcp --permanent    (permanent永久的)
[root@139 bin]# firewall-cmd --zone=public --remove-port=端口号  --permanent

firewalld防火墙的配置规则及添加服务白名单

如果服务器上的应用程序是以服务的形式存在的, 想让他对它提供服务,仅仅需要将它添加到服务的白名单就行

其实服务的白名单规则,和上面的直接开放端口是一样的, 只不过把端口包装成服务更容易让人理解

查看系统上服务的xml配置文件

[root@139 zones]# ls  /usr/lib/firewalld/services/
amanda-client.xml        elasticsearch.xml        jenkins.xml      mysql.xml                 puppetmaster.xml       syncthing-gui.xml
amanda-k5-client.xml     freeipa-ldaps.xml        kadmin.xml       nfs3.xml                  quassel.xml            syncthing.xml
bacula-client.xml        freeipa-ldap.xml         kerberos.xml     nfs.xml                   radius.xml             synergy.xml
bacula.xml               freeipa-replication.xml  kibana.xml       nmea-0183.xml             redis.xml              syslog-tls.xml
bgp.xml                  freeipa-trust.xml        klogin.xml       nrpe.xml                  RH-Satellite-6.xml     syslog.xml
bitcoin-rpc.xml          ftp.xml                  kpasswd.xml      ntp.xml                   rpc-bind.xml           telnet.xml
bitcoin-testnet-rpc.xml  ganglia-client.xml       kprop.xml        openvpn.xml               rsh.xml                tftp-client.xml
bitcoin-testnet.xml      ganglia-master.xml       kshell.xml       ovirt-imageio.xml         rsyncd.xml             tftp.xml
bitcoin.xml              git.xml                  ldaps.xml        ovirt-storageconsole.xml  samba-client.xml       tinc.xml
ceph-mon.xml             gre.xml                  ldap.xml         ovirt-vmconsole.xml       samba.xml              tor-socks.xml
ceph.xml                 high-availability.xml    libvirt-tls.xml  pmcd.xml                  sane.xml               transmission-client.xml
cfengine.xml             https.xml                libvirt.xml      pmproxy.xml               sips.xml               upnp-client.xml
condor-collector.xml     http.xml                 managesieve.xml  pmwebapis.xml             sip.xml                vdsm.xml
ctdb.xml                 imaps.xml                mdns.xml         pmwebapi.xml              smtp-submission.xml    vnc-server.xml
dhcpv6-client.xml        imap.xml                 minidlna.xml     pop3s.xml                 smtps.xml              wbem-https.xml
dhcpv6.xml               ipp-client.xml           mongodb.xml      pop3.xml                  smtp.xml               xmpp-bosh.xml
dhcp.xml                 ipp.xml                  mosh.xml         postgresql.xml            snmptrap.xml           xmpp-client.xml
dns.xml                  ipsec.xml                mountd.xml       privoxy.xml               snmp.xml               xmpp-local.xml
docker-registry.xml      ircs.xml                 mssql.xml        proxy-dhcp.xml            spideroak-lansync.xml  xmpp-server.xml
docker-swarm.xml         irc.xml                  ms-wbt.xml       ptp.xml                   squid.xml              zabbix-agent.xml
dropbox-lansync.xml      iscsi-target.xml         murmur.xml       pulseaudio.xml            ssh.xml                zabbix-server.xml

随便找一个打开

[root@139 services]# cat ssh.xml 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

其实可以看到,服务中有一个配置添加的就是端口的信息, 把服务添加到白名单 == 把服务占用的端口添加到白名单

  • 添加服务到白名单
把http服务添加到白名单中, 开放80端口!!! 
[root@139 services]# firewall-cmd --zone=public --add-service=http
  • 移除服务
[root@139 services]# firewall-cmd --zone=public --remove-service=http

同样想持久话,添加 -permanent

ip白名单

[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.123.123151" port protocol="tcp" port="9200" accept"

success

[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.123.123151" port protocol="tcp" port="9200" accept"

success

[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.123.123151" port protocol="tcp" port="9300" accept"

success

[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.123.123151" port protocol="tcp" port="9998" accept"

success

[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="localhost" port protocol="tcp" port="9998" accept"

Error: INVALID_ADDR: localhost

[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="9998" accept"

success  

[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --reload 

success

[root@ecs-t6-large-2-linux-20190918000015 ~]# firewall-cmd --list-all
posted @ 2019-09-15 19:32  赐我白日梦  阅读(815)  评论(0编辑  收藏  举报