很漂亮的小站!
[...]blog:locate 命令:文件查找命令 - 灵魂信息 (soulio.top)[...]
首页
留言
统计
友链
归档
关于
Search
1
typecho博客-SEO优化-永久链接设置-伪静态
195 阅读
2
qm 命令:管理PVE虚拟机
134 阅读
3
搭建网站的三种方式:家庭服务器、云服务器、serv00免费服务器
131 阅读
4
用脚本查看serv00主机(FreeBSD系统)配置
103 阅读
5
typecho主题和插件
97 阅读
网站搭建
Linux命令详解
登录
Search
标签搜索
Linux命令
serv00
Linux
网站搭建
typecho
Excel
正则表达式
PVE
mdx
docusaurus
在线知识库
soulio
累计撰写
147
篇文章
累计收到
5
条评论
今日撰写
0
篇文章
首页
栏目
网站搭建
Linux命令详解
页面
留言
统计
友链
归档
关于
用户登录
登录
搜索到
127
篇与
的结果
2024-09-26
su 命令:安全切换用户身份,强化系统权限管理攻略
一、命令简介su 命令是 Linux 和 Unix 系统中的一个实用工具,用于切换用户身份。它允许当前登录用户在不退出登录会话的情况下,切换到另一个用户的身份。通常,su 用于从普通用户切换到 root 用户,或从 root 用户切换到其他用户。二、命令参数su 命令支持多个参数,以下是一些常用的参数: -:使用登录 shell,加载目标用户的环境变量和启动文件。 -c command:执行指定的命令后返回到原来的用户。 -l 或 --login:与 - 相似,强制 su 使用登录 shell。 -m 或 --preserve-environment:保留当前用户的环境变量。 -s shell:指定要使用的 shell。 -p:不更改环境变量。 三、命令示例 切换到 root 用户:su - 以用户 john 的身份执行 ls 命令:su -c 'ls /home/john' john 切换到用户 alice 并使用 bash 作为 shell:su -s /bin/bash alice 提高 su 命令的安全性提供以下参考,自己用就别瞎折腾。 使用 sudo:尽量使用 sudo 命令执行需要超级用户权限的命令,而不是直接切换到 root 用户。 限制 su 的使用:在 /etc/pam.d/su 中配置 PAM 模块,只允许特定用户或用户组使用 su。auth required pam_wheel.so use_uid 设置强密码:确保所有用户,尤其是 root 用户,使用强密码。 审计 su 命令:启用审计功能,记录所有 su 命令的使用情况。auditctl -w /usr/bin/su -p x -k su_commands 密钥认证:对于远程登录,使用基于密钥的认证,减少密码认证的使用。
2024年09月26日
19 阅读
0 评论
0 点赞
2024-09-26
ssh 命令详解
一、命令简介ssh 命令用于安全登录远程主机,以便在远程机上执行命令或传输数据。例如登录远程主机 169.10.222.23 上的 soulio 用户:ssh soulio@169.10.222.23 更多示例参考第三章。了解背景知识:ssh 加密1. 加密类型 对称加密: 在数据传输过程中使用相同的密钥进行加密和解密。常见的对称加密算法包括 AES(高级加密标准)、Blowfish 和 3DES(Triple Data Encryption Standard)。 非对称加密: 使用一对密钥(公钥和私钥)来加密和解密数据。公钥可以公开,而私钥则应保密。常见的非对称加密算法包括 RSA 和 DSA。 哈希函数: 用于确保数据完整性,防止数据在传输过程中被篡改。常见的哈希算法包括 SHA-256 和 SHA-1。 2. SSH 加密过程 密钥交换: 在连接开始时,客户端和服务器通过非对称加密交换公钥,以安全地生成共享的会话密钥。 会话密钥生成: 一旦密钥交换成功,双方生成一个对称的会话密钥,后续的通信将使用这个会话密钥进行加密。 数据加密: 使用会话密钥加密所有发送的数据,包括命令、输出和文件传输。 数据完整性检查: 在传输过程中,SSH 使用哈希函数确保数据的完整性,防止数据被篡改。 3. SSH 密钥管理 密钥对生成: 用户可以使用 ssh-keygen 工具生成 SSH 密钥对(公钥和私钥)。 公钥分发: 将公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中,以便通过私钥进行身份验证。 私钥安全性: 私钥应妥善保管,通常加密存储,并在使用时输入密码。 4. SSH 加密的优点 安全性高: SSH 加密保护了数据传输过程中的机密性和完整性,防止窃听和数据篡改。 身份验证: SSH 支持多种身份验证方式,包括密码、密钥对和基于证书的认证,提供了灵活的安全选项。 远程管理: SSH 使得系统管理员能够安全地管理远程服务器,执行命令和文件传输。 5. 总结SSH 加密是保护远程连接和数据传输的关键技术,广泛应用于网络管理和安全通信。通过对称和非对称加密、密钥交换和数据完整性检查,SSH 确保了用户在使用网络时的数据安全。除了 ssh 命令外,stfp 和 scp 这两个文件传输命令也建议在 SSH 加密之上。二、命令参数命令格式ssh [选项] [用户名@]主机名或IP地址 [命令] 常用参数 -p port: 指定连接的端口号,默认是 22。 -i identity_file: 指定私钥文件用于身份验证。 -v: 启用详细模式,显示连接过程中的调试信息。 -X: 启用 X11 转发,以便在本地显示远程 GUI 应用程序。 -C: 启用压缩,提高传输速度。 选项太多,这里仅做收集,方便用时查阅。此刻的你不用记,甚至不用看。更多选项 -p: 指定端口(例如:ssh -p 2222 user@example.com)。 -i: 指定私钥文件(例如:ssh -i /path/to/private/key user@example.com)。 -l: 指定登录用户名(例如:ssh -l user example.com)。 -o: 指定自定义 SSH 选项(例如:ssh -o "OptionName Value" user@example.com)。 -4: 强制使用 IPv4 地址(例如:ssh -4 user@example.com)。 -6: 强制使用 IPv6 地址(例如:ssh -6 user@2001:db8::1)。 -C: 启用压缩(例如:ssh -C user@example.com)。 -c: 指定加密算法(例如:ssh -c blowfish,user@example.com)。 -D: 动态端口转发(例如:ssh -D 1080 user@example.com)。 -L: 本地端口转发(例如:ssh -L 8080:localhost:80 user@example.com)。 -R: 远程端口转发(例如:ssh -R 8080:localhost:80 user@example.com)。 -N: 不执行远程命令,用于端口转发(例如:ssh -N -L 8080:localhost:80 user@example.com)。 -f: 后台执行(例如:ssh -f -L 8080:localhost:80 user@example.com)。 -g: 允许远程主机连接到转发的端口(例如:ssh -g -L 8080:localhost:80 user@example.com)。 -T: 禁用伪终端分配(例如:ssh -T user@example.com)。 -t: 分配伪终端(例如:ssh -t user@example.com)。 -v: 详细模式(例如:ssh -v user@example.com)。 -X: 启用 X11 转发(例如:ssh -X user@example.com)。 -Y: 信任的 X11 转发(例如:ssh -Y user@example.com)。 三、命令示例1 最简单登录1.命令格式ssh user@example.com user:要登录的用户 example.com:要登录的主机,可以是一个 域名,也可以是一个 ip,还可以是一个 别名。最终都会指向某台主机。 对于未指定的信息,将会使用默认配置,比如端口使用 222.开始登录登录会验证用户密码,密码验证成功后进入远程主机的终端。现在你可以管理这台远程主机:执行命令,传输文件等操作。3.退出登录输出 exit 退出登录,将会回到本地主机的终端中。2 指定端口登录ssh -p 2222 user@example.com 通常 SSH 使用默认端口 22 进行通信,但是有些管理员可能会修改默认端口号,以避免网络攻击。如果你不知道正确的端口号,就无法与远程主机建立 SSH 连接。如果你知道正确端口号,可以使用 -p 指定,如上所示:-p 2222 指定连接远程主机的 2222 端口,而非 22 端口。3 让远程计算机执行一条命令ssh user@example.com 'ls' 需要让远程计算机执行的命令,写在 ssh 命令的最后。通常命令执行后会有一个输出,输出会直接返回到当前终端中。这个例子将会返回在远程计算机上执行 ls 的结果,也就是列出远程计算机 example.com 的 user 用户的家目录列表。4 秘钥管理如果你经常登录某个远程主机,每次都要输密码就会显得很麻烦。有没有方法,让我们不需要输入密码就可以登录远程主机?有。方法一:使用 SSH 客户端比如 Termius将登录信息保存到客户端中下次登录时,客户端会调用你的配置(用户名、主机、密码)。从而用户无需输入。方法二:使用公钥将本地计算机的公钥发送远程计算机上,下次登录就不需要输入密码。真正的免密登录。1.生成秘钥如果新装的系统,可能还没有生成秘钥信息,使用以下命令生成秘钥:ssh-keygen 中间会有两三次提示,不用管,直接按回车键。看到类似提示就成功了。2.把公钥部署到远程主机ssh-copy-id user@example.com user 换成你在远程主机上的用户名 example.com 换成你的远程主机,可以是域名,可以是 ip,还可以是别名。最终都会指向你的主机。 tips:如果你有多个公钥,可以在命令中加上 -i 目录 部署指定公钥。执行命令,成功会有类似输出现在登录远程主机就不会再验证密码了。5 使用别名例如用 armbian 作为 soulio@192.168.10.36 的别名,这样用 ssh armbian 就可以登录指定主机,输入起来更友好。实现步骤:第一步,修改本地 ~/.ssh/config 文件,添加主机别名:Host armbian HostName 192.168.10.36 User soulio Port 22 #可选的配置 IdentityFile ~/.ssh/id_rsa #可选的配置 第二步,使用别名登录远程主机:ssh armbian 6 端口转发在 SSH 中,端口转发和代理转发是两种非常有用的功能,它们允许用户通过 SSH 会话来转发网络流量,从而绕过防火墙、访问内网资源或保护网络通信。SSH 端口转发是通过 SSH 通道安全地传输 TCP 流量的功能,可以分为三种类型:本地端口转发、远程端口转发和动态端口转发。它们分别允许将本地端口、远程端口或任意的流量通过 SSH 通道进行转发。本地端口转发 (远程发到本地)本地端口转发将本地计算机的一个端口绑定到远程服务器上的某个端口。这种方式常用于从本地访问远程服务器上的内部资源。语法:ssh -L [local_port]:[remote_host]:[remote_port] [user@ssh_server] local_port: 本地机器上将绑定的端口。 remote_host: 远程主机地址,可以是服务器的内部 IP 或域名。 remote_port: 远程主机的端口号。 ssh_server: 用于建立 SSH 连接的服务器。 示例:ssh -L 8080:intranet.example.com:80 user@ssh_server.com 这个命令将本地机器的 8080 端口与远程服务器 ssh_server.com 上的内部主机 intranet.example.com 的 80 端口相连。你可以通过在浏览器中访问 http://localhost:8080 来访问远程内网的资源。在局域网中实验:ssh -L 8080:localhost:32769 soulio@192.168.10.63 源:在 192.168.10.63:32769 上搭建 web 页面 转发:转发到本地 8080 远程端口转发 (本地发到远程)远程端口转发允许将远程服务器上的一个端口绑定到本地计算机或另一个远程机器的端口上,通常用于将外部网络的请求转发到本地计算机上。语法:ssh -R [remote_port]:[local_host]:[local_port] [user@ssh_server] remote_port: 远程服务器上的端口。 local_host: 本地计算机的地址。 local_port: 本地机器上的端口。 示例:ssh -R 8080:localhost:3000 user@ssh_server.com 此命令将远程服务器 ssh_server.com 的 8080 端口绑定到本地机器的 3000 端口。任何对 ssh_server.com:8080 的请求都会转发到你本地计算机的 3000 端口。设置-允许远程转发:编辑远程主机 sudo nano /etc/ssh/sshd_configGatewayPorts yes GatewayPorts 默认为 no,不允许远程转发。必须开启。修改配置后重启 ssh 服务使其生效。在局域网中实验:ssh -R 8081:localhost:16601 soulio@192.168.10.63 源:在本地 3000 端口搭建一个 web 页面 这里源不局限于本地主机,只要是本地主机可以访问到的页面都可以,比如 192.168.10.55:16601 转发:转发到 192.168.10.63:8080 动态端口转发动态端口转发是一种灵活的方式,它将本地机器的一个端口用作 SOCKS 代理,可以转发任意的网络请求。这种方式允许你通过 SSH 通道代理所有网络流量,类似于 VPN 的效果。语法:ssh -D [local_port] [user@ssh_server] local_port: 用于 SOCKS 代理的本地端口。 示例:ssh -D 1080 user@ssh_server.com 此命令将本地端口 1080 设置为 SOCKS 代理端口。你可以在浏览器或其他应用中设置 SOCKS 代理为 localhost:1080,通过 SSH 服务器转发所有网络流量。使用体验:但不好用。用了几分钟就开始报错,超时。建议用其他简单、稳定的工具呢。也可能是我未能掌握关键。设置-允许动态转发:编辑远程主机 sudo nano /etc/ssh/sshd_configAllowTcpForwarding yes #默认是yes PermitTunnel yes #默认是no 改为yes 确保这些选项被设置为 yes,然后重启 SSH 服务:sudo systemctl restart ssh 7 代理转发 代理转发,例如本地端口 1080 ssh -D 1080 user@example.com SSH 代理转发 (Agent Forwarding) SSH 代理转发是一种允许在远程服务器上使用本地 SSH 代理功能的机制。通过代理转发,你可以在远程服务器上使用本地的 SSH 私钥进行身份验证,而不需要将私钥复制到远程服务器上。这对于通过中间跳板服务器访问更多服务器时非常有用。 工作原理 SSH 代理转发通过 SSH 代理 (ssh-agent) 进程,将本地机器的 SSH 代理功能转发到远程服务器。这样,远程服务器上的应用程序可以通过本地 SSH 代理进行密钥认证,而不会暴露私钥。 使用方式 使用 -A 选项启用 SSH 代理转发。语法:ssh -A user@ssh_server 示例:ssh -A user@jump_server 假设你通过 jump_server 访问另一台服务器 server2,你可以在 jump_server 上通过 SSH 代理连接到 server2,而无需在 jump_server 上存储私钥:ssh user@server2 总结 端口转发允许你通过 SSH 通道安全地转发本地或远程的网络流量,支持本地、远程和动态端口转发。 代理转发允许在远程服务器上使用本地 SSH 代理进行身份验证,避免在远程服务器上存储私钥,增加了安全性和灵活性。 这两种功能在网络安全和远程访问方面提供了极大的便利,尤其是在访问内网资源或通过跳板服务器进行管理时。注意事项如果你使用 WSL 环境,可能在某些环节遇到网络问题。远程转发时,WSL 无法将 localhsost:xxx 转发到远程端口。在纯 Linux 环境则成功。
2024年09月26日
17 阅读
0 评论
0 点赞
2024-09-25
source 命令:加载环境变量
一、命令简介source 命令在 Linux 中用于在当前 shell 环境中执行一个脚本文件。它通常用于加载环境变量或执行初始化脚本,而不启动新的 shell。 用途: source 命令允许用户在当前 shell 会话中运行指定的脚本文件,这意味着在脚本中定义的变量和函数可以在执行后继续在当前 shell 中使用。 替代命令: 也可以使用 . (点)命令来实现相同的效果,例如 . filename。 二、命令参数source filename filename: 要执行的脚本文件名,可以是相对路径或绝对路径。 三、命令示例source filename 或使用点命令:. filename 示例 创建一个脚本文件 setenv.sh:#!/bin/bash export MY_VAR="Hello, World!" 使脚本可执行并运行:chmod +x setenv.sh source setenv.sh 检查环境变量:echo $MY_VAR 输出将是:Hello, World! 注意事项 使用 source 命令时,脚本中的任何命令都会在当前 shell 环境中执行,而不会新建一个子 shell。 适用于加载配置文件(如 .bashrc, .bash_profile)或初始化工作环境。
2024年09月25日
25 阅读
0 评论
0 点赞
2024-09-25
sort 命令:文本排序
一、命令简介sort 命令是Linux和Unix系统中用于对文本文件内容进行排序的基本工具。它可以将文件的每一行作为一个单位,按照指定的规则(如字母、数字、月份名等)进行排序,并将结果输出到标准输出(通常是终端)。二、命令参数基本用法sort 选项 文件 常用选项 -f:忽略大小写 -n:按照数值顺序排序 -r:逆序排序 -k:指定排序的关键字 -t:指定字段分隔符 -o:将排序结果写入到文件中 三、命令示例排序文本soulio 男 170.3 1 张伟 男 175.5 2 李丽 女 160.2 3 王强 男 182.0 4 刘敏 女 158.7 5 XiaoFang 女 165.4 6 ShunJian 男 170.8 7 ZhouHong 女 162.6 8 1 默认排序默认情况下,sort 命令会按照字典顺序对文本文件中的行进行排序,并将结果输出到终端。sort 文件名 输出排序李丽 女 160.2 3 刘敏 女 158.7 5 王强 男 182.0 4 张伟 男 175.5 2 ShunJian 男 170.8 7 soulio 男 170.3 1 XiaoFang 女 165.4 6 ZhouHong 女 162.6 8 2 忽略大小写排序对文件内容进行排序,并忽略大小写:sort -f 文件名 3 指定字段排序指定排序的关键字(例如第三个字段):sort -k 2 文件名 soulio 男 170.3 1 ShunJian 男 170.8 7 张伟 男 175.5 2 王强 男 182.0 4 刘敏 女 158.7 5 李丽 女 160.2 3 ZhouHong 女 162.6 8 XiaoFang 女 165.4 6 4 数值排序按照数值顺序对文件内容进行排序:sort -k 3 -n 文件名 刘敏 女 158.7 5 李丽 女 160.2 3 ZhouHong 女 162.6 8 XiaoFang 女 165.4 6 soulio 男 170.3 1 ShunJian 男 170.8 7 张伟 男 175.5 2 王强 男 182.0 4 4 逆序对文件内容进行逆序排序:sort -k 3 -n -r 文件名 王强 男 182.0 4 张伟 男 175.5 2 ShunJian 男 170.8 7 soulio 男 170.3 1 XiaoFang 女 165.4 6 ZhouHong 女 162.6 8 李丽 女 160.2 3 刘敏 女 158.7 5 6 指定字段分隔符指定字段分隔符(例如逗号分隔的文件):sort -t , -k 2 文件名 7 排序结果写入新文件sort 文件名 -o 排序后文件名 sort 命令非常强大,可以结合其他命令(如 uniq、grep 等)来进行更复杂的数据处理。
2024年09月25日
18 阅读
0 评论
0 点赞
2024-09-25
smartctl 命令:查看硬盘健康状态
一、命令简介smartctl 命令用于获取硬盘的 SMART 信息。介绍硬盘SMART硬盘的 SMART (Self-Monitoring, Analysis, and Reporting Technology) 技术用于监控硬盘的健康状态,并能提供一些潜在故障的预警信息。通过查看 SMART 数据,用户可以了解硬盘的各种属性和状态,如错误率、温度、使用寿命等。安装smartctlsudo install smartmontools 检查硬盘的 SMART 状态sudo smartctl -a /dev/sda 更详细的用例请参考后继章节与硬盘相关命令 gdisk、fdisk 命令,磁盘分区管理。 mkfs 命令,格式化。 mdadm 命令,管理软 RAID。 lsblk 命令,列出块设备(包含磁盘)信息。 df 命令,磁盘余量 smartctl 命令,读取磁盘 SMART 信息 二、命令参数格式smartctl 选项 硬盘 需要sudo权限运行。选项: -a, --all:显示所有 SMART 信息。 -H, --health:显示硬盘的健康状态。 -i, --info:显示硬盘的基本信息。 -l selftest:显示自检结果。 -t <test>:启动自检,如 short(短自检)或 long(长自检)。 -c, --capabilities:显示硬盘的 SMART 能力。 -x, --xall:显示扩展 SMART 信息。 -l error:显示错误日志。 -A, --attributes:显示 SMART 属性。 -s, --smart=on|off:启用或禁用 SMART 功能。 -d, --device=TYPE:指定硬盘的接口类型,如 ata, scsi, sat, nvme 等。 参数: /dev/sdX:指定要检查的硬盘设备路径,如 /dev/sda。 test:自检类型,如 short, long。 TYPE:硬盘接口类型,如 ata, scsi, sat, nvme。 三、命令示例显示硬盘的基本信息sudo smartctl -i /dev/sdX 输出显示硬盘的 SMART 属性sudo smartctl -A /dev/sdX 输出soulio@k455l:~$ sudo smartctl -A /dev/sdb smartctl 7.2 2020-12-30 r5155 [x86_64-linux-6.5.0-35-generic] (local build) Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 100 100 051 Pre-fail Always - 6 2 Throughput_Performance 0x0027 252 252 000 Pre-fail Always - 0 3 Spin_Up_Time 0x0023 095 091 025 Pre-fail Always - 1651 4 Start_Stop_Count 0x0032 096 096 000 Old_age Always - 4478 5 Reallocated_Sector_Ct 0x0033 252 252 010 Pre-fail Always - 0 7 Seek_Error_Rate 0x002f 252 252 051 Pre-fail Always - 0 8 Seek_Time_Performance 0x0025 252 252 015 Pre-fail Offline - 0 9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 12284 10 Spin_Retry_Count 0x0033 252 252 051 Pre-fail Always - 0 11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 175 12 Power_Cycle_Count 0x0032 097 097 000 Old_age Always - 3057 181 Program_Fail_Cnt_Total 0x0022 100 100 000 Old_age Always - 9022488 183 Runtime_Bad_Block 0x0032 252 252 010 Old_age Always - 0 184 End-to-End_Error 0x0033 252 252 048 Pre-fail Always - 0 186 Unknown_Attribute 0x0032 252 252 000 Old_age Always - 0 187 Reported_Uncorrect 0x0032 252 252 000 Old_age Always - 0 188 Command_Timeout 0x0032 252 252 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0002 066 050 040 Old_age Always - 34 (Min/Max 8/50) 191 G-Sense_Error_Rate 0x0022 100 100 000 Old_age Always - 77 192 Power-Off_Retract_Count 0x0022 100 100 000 Old_age Always - 79 193 Load_Cycle_Count 0x0032 001 001 000 Old_age Always - 1103480 194 Temperature_Celsius 0x0002 064 050 000 Old_age Always - 34 (Min/Max 8/50) 195 Hardware_ECC_Recovered 0x003a 100 100 000 Old_age Always - 0 196 Reallocated_Event_Count 0x0032 252 252 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 252 252 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 252 252 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0036 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x002a 100 100 000 Old_age Always - 1663 启动短自检sudo smartctl -t short /dev/sdX 输出soulio@k455l:~$ sudo smartctl -t /dev/sdb smartctl 7.2 2020-12-30 r5155 [x86_64-linux-6.5.0-35-generic] (local build) Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org =======> INVALID ARGUMENT TO -t: /dev/sdb =======> VALID ARGUMENTS ARE: offline, short, long, conveyance, force, vendor,N, select,M-N, pending,N, afterselect,[on|off] <======= Use smartctl -h to get a usage summary 获取硬盘温度sudo smartctl -a /dev/sdX | grep Temperature 输出启用 SMART 功能sudo smartctl -s on /dev/sdX 默认就是打开的。指明硬盘类型有时我们使用 USB 外挂的硬盘,使用 smartctl 命令可能会提示“无法识别磁盘类型”。需要使用 -d 参数手动指明硬盘类型,比如 sat 类型。$ sudo smartctl -d sat -a /dev/sdc | grep Temperature 190 Airflow_Temperature_Cel 0x0022 058 047 045 Old_age Always - 42 (Min/Max 18/42) 194 Temperature_Celsius 0x0022 042 053 000 Old_age Always - 42 (0 4 0 0 0)
2024年09月25日
80 阅读
0 评论
0 点赞
1
...
7
8
9
...
26