RHCE

yum list | grep chinese  中文输入法
yum search chinese ;ukai uming  中文字体,如果只是显示,可以不装输入法只安装此两个包

密码和yum源在考试说明中,yum源配置隐含题目
练习环境准备,考试不需要执行步骤:
重置虚拟机:Rht-vmctl fullreset server; Rht-vmctl fullreset desktop
绑定外部认证:lab nfskrb5 setup 操作主机:server0,desktop0
增加两快网卡:操作主机,server0,desktop0
virt-manager 增加网卡,可以在线添加
验证: id ldapuser0   ssh  ldapuser0@localhost  密码:kerberos
两个终端,ssh -X root@server0; ssh -X root@desktop0 考试需要密码
配置yum,两台都要
yum-comfig-manager  --add-repo="http://content.example.com/rhel7.0/x86_64/dvd"
rpm --import /etc/pki/rpm-gpg/* 导入公钥key
检查:yum clean all ;yum repolist

1, 配置server0和desktop0上的SElinux环境为enforcing
 vim /etc/sysconfig/selinux,如果是disable时候设置完必须重启生肖

2,配置server0和desktop0上的访问控制,拒绝cracker.com(172.24.0.0/16,这部分需要看考题说明)
 域中的主机访问ssh
 访问控制提,在server0上:
 首先停掉旧的防火墙,判断下不做,在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认
 使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。
 因为这几个daemon是冲突的建议禁用其他的几种服务
 systemctl mask iptables.servers; systemctl mask ip6tables.service
 systemctl stop iptables; systemctl stop ip6tables; systemctl disable iptables;
 systemctl disable ip6tables
 查看控制服务:Systemctl enable firewalld   --- 开启动态防火墙服务;Systemctl start firewalld
 Systemctl status firewalld   --- 查看状态
 然后配置, 因为ssh默认好像都已经配置了,不用添加可访问的service
 1,图形配置:firewall-config; firewall-cmd --reload; firewall-cmd --permanent --list-all

 2,命令行;允许某个服务的基本规则 firewall-cmd  --permanent --add-service=mysql

firewall-cmd --zone=public --add-port=3306/tcp --permanent

 firewall-cmd --permanent  --add-rich-rule “rule family=ipv4 source address=172.24.0.0/24 service name=ssh reject”
 firewall-cmd --reload ;   Firewall-cmd --permanent  --list-all

3,配置server0和desktop0配置自定义命令psnew,执行该命令是将执行ps -Ao user,pid,ppid,command
 vim /etc/bashrc ; alias psnew='ps -Ao user,pid,ppid,command'; exit ;在进入ssh -X root@desktop0

4,配置server0服务器的samba,工作组为STAFF,共享目录/smb1,共享名smb1,仅允许example.com域中主机访问
 samba用户ldapuser1可以读取,密码tianyun
 两台机器都需要,
 A,yum -y install samba samba-client : mkdir  /smb1
 B, vim /etc/samba/smb.conf
 修改 Workgroup = STAFF
 最后追加
 [smb1]  ---共享的名字
   path =/smb1
 hosts allow = 172.25.0.0/24 不知道什么时候用hosts allow = 172.25.0.
 保存退出
 C,服务和防火墙
   systemctl enable nmb smb;systemctl start nmb smb
   firewall-cmd --permanent --add-service=samba
   firewall-cmd --permanent --reload
   firewall-cmd --permanent --list-all
 D,新建用户,useradd ldapuser1(已经存在);smbpasswd -a ldapuser1-- 添加用户并设置smb密码
 第二次改变之后的题是smbpass -a ldapuser1 ; tianyun
 如果找不到smbpasswd 可以查询哪个包提供的; yum provides *bin/smbpasswd
 E,修改上下文
 直接修改文件上下文,chcon -R -t samba_share_t /smb1
 或者:semanage;yum provides semanage  -- 使用yum查看是那个包提供
 查询出来之后 安装包:yum install -y policycoreutils-python*
 ls -dZ /smb1;之后再次查看
 semanage fcontext -a -t samba_share_t '/smb1(/.*)?'  
 man semanage  ; man 8 semanage-fcontext
 restorecon -RFvv /smb1   -- 依据规则重置
 touch /smb1/file1
 客户端测试:yum -y install cifs-utils samba_client
 mkdir /mnt/smb1;mkdir /mnt/smb2
 mount (-t cifs) -o username=harry(ldapuser1) //server0/smb1 /mnt/smb1
 df ; ls /mnt  
 自动挂载操作:
 mkdir /mnt/smb1 ;  vim /root/smb1.passwd   --这里随便命名
 添加:
 username=harry
 password=tianyun
 vim /etc/fstab
 //server0/smb1    /mnt/smb1    cifs    defaults,credentials=/root/smb1.passwd 0 0

5,配置server0服务器samba,共享目录/smb2,仅允许用户ldapuser1读取,ldapuser2读写,密码都为tianyun
 desktop0以multiuser方式自动挂载到/mnt/smb2
 多用户挂载,默认以一个较低权限的用户挂载,之后不同权限的用户通过cifscreds更新或删除自己的凭据
 mkdir /smb2 ;vim  /etc/samba/smb.conf
 [smb2]
    path = /smb2    
    valid users = ldapuser1 ldapuser2 @HR   这里HR是组
    browseable = yes  目录可以浏览,默认是可以浏览的,可以不加
    write list = ldapuser2 默认可以read,所以不用添加,这里只添加写权限
 systemctl restart nmb smb
 semanage fcontext -a -t samba_share_t  '/smb2(/.*)?'
 restorecon -RFvv /smb2
 或者只执行一条:chcon -R -t samba_share_t /smb2
 useradd user1; useradd user2; smbpasswd -a user1 ; smbpasswd -a user2;修改后添加ldapuser账户
 但是ldapuser1和ldapuser2都已经有了,只需要添加smbpasswd -a ldapuser1即可
 修改后:ll -dZ /smb2 ; setfacl -m u:ldapuser2 :rwx /smb2 : getfacl /smb2

 客户端desktop0
 vi /etc/fstab
 //server0/smb2 /mnt/smb2 cifs defaults,credentials=/root/smb2.passwd,multiuser,sec=ntlmssp 0 0
 vim /root/smb2.passwd
 username=user2  修改后ldapuser1
 password=tianyun
 mount -a; df
 测试: su - ldapuser2 ; ls  /mnt/smb2  没权限;cifscreds add server0 添加凭据

6,配置server0基本nfs 共享目录/nfs1;仅允许example.com域中的主机访问 desktop0自动挂载到/mnt/nfs1

 yum -y install nfs-utils 服务器客户端包;yum list | grep ^nfs -- 查看可以安装的包
 mkdir /nfs1 ; touch  /nfs1/111
 vim /etc/exports
 /nfs1  172.25.0.0/24(ro,sync)
 systemctl enable nfs-server.service
 systemctl restart nfs-server.service
 firewall-cmd  --permanent --add-service=nfs
 firewall-cmd  --reload ;  firewall-cmd  --permanent  --list-all
 客户端: yum -y install nfs-utils
 vim /etc/fstab
 server0:/nfs1    /mnt/nfs1    nfs defaults 0 0
 mkdir /mnt/nfs1
 mount -a

7,配置server0安全的nfs,共享目录/nfs2;仅允许example.com域中的主机访问
 /nfs2/private目录所有者为ldapuser5 desktop0自动挂载到/mnt/nfs2
 用户ldapuser5能够写入文件到/mnt/nfs2/private
 http://classroom.example.com/pub/keytabs/server0.keytab
 http://classroom.example.com/pub/keytabs/desktop0.keytab

 练习环境准备:  server0: lab nfskrb5 setup ;  desktop0 : lab nfskrb5 setup
 练习环境的脚本执行考试环境不需要, 用于加入ldap域(账号信息)和并且已经可以使用kerberos验证(认证)
 执行后验证:id  ldapuser0
 下载key文件: wget  http://classroom.example.com/pub/keytabs/server0.keytab -O /etc/krb5.keytab
 也可以下载完cp到指定目录,同样下载另一个
 mkdir /nfs2/private
 chown ldapuser5 /nfs2/private; ll -d /nfs2/private
 vim /etc/sysconfig/nfs
 找到Optional  arguments 后的参数修改
 RPCNFSDARGS="-V 4.2"     -- 使用4.2版本共享,必须做
 vim /etc/exports
 /nfs2  172.25.0.0/24(rw,sync,sec=krb5p)
 systemctl enable nfs-secure-server.service
 systemctl restart nfs-secure-server.service
 systemctl restart nfs-server.service
 客户端: systemctl enable nfs-secure ;systemctl restart nfs-secure
 下载key文件: wget  http://classroom.example.com/pub/keytabs/desktop0.keytab -O /etc/krb5.keytab
 mkdir /mnt/nfs2;vim /etc/fstab
 server0:/nfs2    /mnt/nfs2    nfs    defaults,v4.2,sec=krb5p 0 0
 mount -a; df
 可选测试:su - ldapuser5;df 没有获取kerberos票据;ssh ldapuser5@localhost;df
 
8,配置server0和desktop0上的链路聚合,使用接口eno1和eno2 当一个接口失效时仍然能够工作
 server0 192.168.10.1 ; desktop0 192.168.10.2  注:MAC有风险,另外没说明这里使用HA-主备

 IP为192.168.0.100/24(team名为team0)
 ping -I team0 192.168.0.254应该是成功的,
 注:考试环境为在system1和system2上均配置team,且能互相ping通。
 考试时两边都要做,练习环境可以做一个,
 考试链路聚合环境搭建,lab teambridge setup 产生eno1  eno2
 命令行操作,创建一个逻辑的team
 nmctl connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
 添加地址:nmcli connection modify team0 ipv4.addresses "192.168.0.100/24"
 nmcli conn modify team0 ipv4.method m
 nmcli connection add type team-slave con-name team0-eno1 ifname eno1 master team0
 nmcli connection add type team-slave con-name team0-eno2 ifname eno2 master team0
 查看:teamdctl team0 state; ip a
 ping -I team0 192.168.0.254
 图形方式:nm-connection-editor; 注意修改/etc/sysconfig/network-scripts/中的team名字
 DEVICE=eth1 ; ping 192.168.10.1

9,配置server0端口转发,将访问端口6666/tcp转发到本地的22/tcp----使用port forwarding
 从172.25.0.0/24网段访问server0端口6666/tcp时转到本地22/tcp----使用rich rule
 图形方式: firewall-config 配置port forwarding
 firewall-cmd --permanent --list-all
 命令行:注意,注意,这里要看清使用rich rule功能强大,还是port forwarding,
 firewll-cmd --permanent --add-forwrd-port=port=6666:proto=tcp:toport=22:toaddr=
 如果是空地址,就说明是转发给本地,否则转发给其他
 firewll-cmd --permanent --add-forwrd-port=port=7777:proto=tcp:toport=22:toaddr=172.25.0.10
 desktop0测试:ssh root@server0 -p 7777 or 6666 :密码是redhat
 本题不需要开启本地端口:nc  -l  6666 查看本地端口:netstat -tnlp | grep :6666

10,配置server0 eno1上的ipv6地址fddb:fe2a:ab1e::c0a8:1/64及网关fddb:fe2a:ab1e:c0a8:fe
 改变了,配置server0和desktop0上的IPv6,使用接口eth0,互相可以ping通,原IPv4仍然有效
 server0:2012:ac18::1205/64  desktop0:2012:ac18::120a/64
 练习环境准备:
 server0:  rht-vmctl reset server      <小心,重置服务器>
 server0:  lab ipv6 setup
 注:考试环境为在system1和system2的eth0 上均配置ipv6,且能够互相ping通
 ip a ;cat /etc/resolv.conf  DNS;ip route 网关
 nm-connection-editor 然后使用nmcli connection up;ping6  2012:ac18::120a

11,配置server0和desktop0的邮件系统,配置postfix为null client
 本地发送的邮件转发到    smtp0.example.com
 本地发送的邮件显示来自    example.com
 rpm -q postfix
 vim /usr/share/doc/postfix-2.10.1/README_FILES/STANDARD_CONFIGURATION_README
 搜索null client,这个配置文件考试时候不一定有
 配置如下:文件/etc/postfix/main.cf
 myhostname = server0.example.com
 myorigin = example.com
 relayhost = [smtp.example.com]
 inet_interfaces = loopback-only
 mydestination =
 local_transport = error:local mail delivery
 desktop0也同样配置 systemctl reload postfix.service 重新加载服务,两台机器
 考试:给了两个网页,自己跟自己发
 mail -s "test"  root
 hello local
 ctrl+d

12, server0配置iscsi target;卷大小1G iscsi target名为iqn.2014-11.com.tianyun:server0
 仅允许iqn.2014-11.com.tianyun:desktop0访问 desktop0配置iscsi initiator,创建大小为500M的分区
 格式化为xfs(之后ext4)文件系统,自动挂载到/mnt/iscsidisk 视频8

 server0 准备一个分区: fdisk /dev/vdb  n,p, , ,+1G,w
 partprobe;ll /dev/vdb*
 yum -y  install targetcli  -- 文本的target的配置工具
 客户端: 装包, yum install -y iscsi*
 systemctl start target ; systemctl enable target.service
 配置:tergetcli ;说明,如果考试不清楚时候使用man targetcli ;然后/EXAMPLE N下一个
 ls; /backstores/block create san1 /dev/vdb1 创建设备
 /iscsi  create iqn.2014-11.com.tianyun:server0 创建一个iscsi的iqn默认任何人都能访问
 cd /iscsi/iqn.2014-11.com.tianyun:server0/tpg1/
 acls/ create iqn.2014-11.com.tianyun:desktop0  允许谁访问
 luns/ create /backstores/block/san1  关联设备
 protals/ create 172.25.0.11 3260 缺省监听端口
 cd /  ; ls : saveconfig
 help, 下边是上边配置的文件
 /etc/target/saveconfig.json   : ll /etc/target/
 防火墙:firewall-cmd --permanent --add-port=3260/tcp; firewall-cmd --reload
 firewall-cmd --permanent --list-all
 客户端:安装包iscsi* : vim /etc/iscsi/initiatorname.iscsi编辑
 InitiatorName=iqn.2014-11.com.tianyun:desktop0 前面的名字一定注意大写,然后重启服务
 systemctl restart iscsid.servie ; systemctl enable iscsid.service  连接server的
 systemctl enable iscsi  启动iscsi读取配置的
 
 iscsiadm -m discovery -t st -p server0:3260  (rm -rf /var/lib/iscsi/*)
 (systemctl restart iscsi)
 yum install tree
 tree /var/lib/iscis ; fdisk -l  
 systemctl restart iscsi : fdisk -l 多了一个盘1G的/dev/sda
 fdisk /dev/sda   ; n,p, , ,+500M,w
 partprobe; ll /dev/sda* : mkfs.xfs  /dev/sda1 (mkfs.ext4 /dev/sda1)
 mkdir /iscsidisk (/mnt/iscsidisk)  ;  blkid  ;vim /etc/fstab
 上部的UUID    /iscsidisk(变了/mnt/iscsidisk)    xfs (变了ext4)    _netdev
 mount -a

13,配置server0 web服务,网站www0.example.com,拒绝cracker.com域访问
 网页文件,http://classroom.example.com/pub/webs/www.html

14, 配置server0 Web服务,网站www0.example.com启用TLS加密
 TLS certificate  http://classroom/pub/tls/certs/www0.crt
 TLS private key  http://classroom/pub/tls/private/www0.key
 TLS CA certificate http://classroom/pub/example-ca.crt

15, 配置server0 Web服务,网站serer0.example.com,网站目录为
 /var/www/virtual(如果没说明,默认即可),网页文件是:http://classroom.example.com/pub/webs/server.html

16,配置server0 Web服务,网站webapp0.example.com,端口为8888/tcp
 python application http://classroom.example.com/pub/webs/webapp.wsgi

 三个网站(传东西rsync -va webs root@server0)
 安装包:  yum -y install httpd mod_ssl(安全相关的包) mod_wsgi(python相关包)
 准备网页,考试时候已经给出 但是记住,配置之后需要重置目录
 修改目录结构,需要重新设置下:restorecon -RFvv /var/www/

 创建配置文件:
 cd /etc/httpd/conf.d  网站1配置文件编辑:vim www.conf 名字任意 不过最好起个匹配的
 其中第二个需要下载3个文件:
 下载证书: wget http://classroom/pub/tls/private/www0.key
 wget http://classroom/pub/tls/certs/www0.crt
 wget http://classroom/pub/example-ca.crt
 修改之后的配置为,
 #http://www0.example.com:80  /etc/httpd/conf/httpd.conf 主参考配置文件
  <VirtualHost *:80>
    DocumentRoot    /var/www/html    根目录
    Servername    www0.example.com (网站访问地址)
 </VirtualHost>
 #https://www0.example.com:443  /etc/httpd/conf.d/ssl.conf 安全参考配置文件
  <VirtualHost *:80>
    DocumentRoot    /var/www/html
    Servername    www0.example.com
     
    SSLEngine on  加密引擎
    SSLProtocol all -SSLv2 -SSLv3  支持ssl的访问方式
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 加密的算法
    SSLHonorCipherOrder on 加密顺序是否开启默认注释掉的
    SSLCertificateFile    /etc/httpd/conf.d/www0.crt 自己的证书,目录可以改
    SSLCertificateKeyFile    /etc/httpd/conf.d/www0.key 私钥
    SSLCACertificateFile    /etc/httpd/conf.d/example-ca.crt 根的CA证书
 </VirtualHost>
 #这里是授权操作
 <Driectory /var/www/html>
    <RequireAll>
        Require     all    granted
        Require     not ip     172.24.0.0/16  拒绝域
    </RequireAll>
 </Directory>
 查看一个配置文件指定文字: grep gran /etc/httpd/conf/httpd.conf
 手动配置第一个页面:echo www0 > /var/www/html/index.html
 启动服务:systemctl enable httpd.service;systemctl restart httpd.service
 防火墙配置:firewall-cmd --permanent --add-port=80/tcp
 firewall-cmd --permanent --add-port=8888/tcp
 firewall-cmd --permanent --add-port=443/tcp 全部都添加上
 firewall-cmd --reload
 restorecon -RFvv /var/www 修改了www目录结构之后需要重置下操作
 在desktop0上测试: firefox & ;输入;www0.example.com 将看到www0.example.com
 firefox import ca.crt; test
 wget http://classroom/pub/example-ca.crt  ; 浏览器导入证书
 访问: https://www0.example.com
 访问控制这块,
 基于主机访问控制,当然一定有directory,然后,
 A,允许所有主机访问:Require all granted
 B,允许指定主机访问,Require ip 192.168.122.10;Require ip 192.168.3.0/24;Require host www
 C,只允许本机访问,Require local
 D,仅拒绝某个主机访问,除了directory之外,还需要有<RequireAll>
  Require all granted;require not ip 192.25.0.11
 E,仅拒绝某些网段访问,在D基础上执行,Require all granted;Require not ip 172.24.0.0/24
 
 第二个页面:cd /etc/httpd/conf.d
 配置文件cp www0.conf server0.conf
 vim server0.conf
 #http://server0.example.com
 <VirtualHost *:80>
    DocumentRoot    /var/www/virtual
    Servername    server0.example.com
 </VirtualHost>
 <Driectory /var/www/virtual>
        Require     all    granted
 </Directory>
 mkdir /var/www/virtual ;echo server0 > /var/www/virtual/index.html
 restorecon -RFvv /var/www
 客户端测试:server0.example.com

 第三题:
 cp server.conf webapp.conf
 vim webapp.conf
 #http://webapp0.example.com:8888    #listen 8888 https
 Listen 8888
 <VirtualHost *:8888>
    Servername  webapp0.example.com
    WSGIscriptAlias / /var/www/webapp/webapp.wsgi
 </VirtualHost>
 <Driectory /var/www/webapp>
        Require     all    granted
 </Directory>
 lab webapp setup ; mkdir /var/www/webapp
 cp -rf /home/student/webapp.wsgi /var/www/webapp     动态网站python程序
 systemctl restart httpd.service
 man semanage-port 例子
 semanage port -a -t http_port_t -p tcp 8888 修改selinux的策略
 semanage port -l | grep http
 systemctl restart httpd.service
 查看netstat -ntlp | grep :8888
 netstat -tnlp | grep :8888;查看各个端口
 ll /var/www/webapp0/webapp.wsgi
 
17,配置server0 Web服务,http://server0.example.com/private,仅允许从server0
 访问,网页文件:http://classroom.example.com/pub/webs/private.html
 看清楚,这里是server0网站下的,创建一个目录,如果是www0.example.com下面,就需要在相应目录创建了
 开始: mkdir /var/www/virtual/private
 echo private... >/var/www/virtual/private/index.html
 restorecon -RFvv /var/www
 vim server0.conf
 #http://server0.example.com
 <VirtualHost *:80>
    DocumentRoot    /var/www/virtual
    Servername    server0.example.com
 </VirtualHost>
 <Driectory /var/www/virtual>
        Require     all    granted
 </Directory>
 <Driectory /var/www/virtual/private>
        Require  local  仅允许本地访问
 </Directory>
 测试:server0.example.com/private

18,配置server0 Shell script,输入bar显示foo,输入foo显示bar,输入其他显示Usage xxx
 vim /root/script1.sh
 #!/bin/bash
 if [ $1 = "bar" ];then
    echo "foo"
 elif [ $1 = "foo" ];then
    echo "bar"
 else
    echo "USE ..."
 fi
 然后 chmod a+x /root/script1.sh
 或者脚本:
 case  "$1" in
 bar)
    echo "foo"
    ;;
 foo)
    echo "bar"
    ;;
 *)
    echo " USE ..."
 esac

19, 配置server0 Shell script,批量添加用户,根据指定文件作为参数添加用户,需要判断
 是否存在参数和用户文件是否存在,需要错误退出和退出返回值,设置/bin/false为添加用户默认shell
 vim user.txt ;考试时候给出了
 user1
 user2
 user3
 tianyun
 vim /root/useradd1.sh
 #!/bin/bash
 if [ $# -eq 0 ];then
    echo "没有输入任何文件,程序退出"
    exit 1
 fi
 if [ ! -f "$1" ];then
    echo "你输入的是不是文件,程序退出"
    exit 2
 fi

 for user in `cat $1`
 do
    useradd $user -s /bin/false
    echo "tianyun" | passwd $user --stdin &>/dev/null 这步根据考试要求
    if [ $? -eq 0 ];then
        echo "用户$user创建成功。"
     fi
 done
 查看结果: echo $?   ;查看参数个数: echo $#
 vim中查找15行命令 :15 回车  还有:set list
20,配置server0 Mariadb数据库
 1)安装Mariadb
 2) 配置root只能从本地登录,密码为tianyun
 3)禁用匿名用户访问
 4)创建数据库Concats
 5) 倒入数据到Concats
    http://content.example.com/courses/rhce/rhce7.0/materials/mariadb/mariadb.dump
 6) 授权Luigi用户可以select访问数据库Concats
 yum groupinstall mariadb mariadb-client
 yum grouplist | grep maria
 systemctl enable mariadb ; systemctl start mariadb
 firewall-cmd --permanent --add-service=mysql ; firewall-cmd --reload
 firewall-cmd --permanent --list-all
 msql_secure_installation ; mysql -uroot -ptianyun
 ctrl+l ; show database; create database Concats
 导入: use Concats  ;source /路径  ;\q  \c
 另一种导入:mysql -uroot -ptianyun Concats < /home/student/mariadb.dump
 授权:帮助,help grant
 grant select on Concats.*  to Luigi@'172.25.0.%' identified by 'tianyun';
 flush privileges;
 登录:mysql -uLuigi -ptianyun 拒绝
 远程试试:mysql -h 172.25.0.11 -uLuigi -ptianyun ; show tables
 另外考试时候可能根据条件创建一些表
 7) 按要求实现单表查询,提交结果
 8) 按要求实现多表查询,提交结果
 练习环境准备: Server0: lab.mariadb setup
 desc table(\G)查看表结构
 select * from product where id_category="2"; 查询出的结果,提交结果条数
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝闻道-夕死可矣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值