Linux备忘
系统简介及注意事项
VMware安装虚机
创建虚机最小628M内存挂起==暂停(真实操作系统没有挂起)
真实机修改为硬盘启动 Boot->hard device
密码复杂性原则:8位以上大小写字母、数字、符号;不能是英文单词;不能是和用户相关的内容
swap应该分内存的2倍,但超过2G没有意义
/root/install.log:存储安装在系统中的软件包机器版本信息
/root/install.log.syslog:存储安装过程中留下的事件信息
/root/anaconda-ks.cfg:以Kickstart配置文件的格式记录安装过程中设置的选项信息
家目录root = /root
普通用户=/home/用户名
lo lookback 本机网卡
临时修改网卡
ipifconfig eth0 ...
注意事项
命令、文件、配置、用户名等全部都严格区分大小写
所有的内容都是以文件形式保存
不靠扩展名区分文件类型,靠文件属性,以下扩展名便于管理、约定俗成
压缩包:.gz .bz2 .tar.bz2 .tgz
二进制软件包:.rpm
网页文件:.html .php
脚本文件:.sh
配置文件:.conf
所有存储设备都必须挂载以后才能使用,包括硬盘、U盘、光盘
服务器管理和维护建议
Linux各个目录的作用boot、etc目录可以备份下
远程服务器不允许关机,只能重启
重启时应该关闭服务(大量数据访问突然断电容易烧坏硬盘)
不要在服务器访问高峰运行高负载命令
远程配置防火墙时不要把自己踢出服务器
指定合理的密码规范并定期更新
合理分配权限
定期备份重要数据和日志(etc、lib、var)
目录名 | 目录作用 |
---|---|
/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行。不过放在/bin下的命令在单用户模式下也可以执行 |
/sbin/ | 保存和系统环境设置相关的命令,只有超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看 |
/usr/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行 |
/usr/sbin | 存放根文件系统不必要的系统管理命令,例如多数服务程序。只有超级用户可以使用。大家其实可以注意到Linux的系统,在所有“sbin”目录中保存的命令只有超级用户可以使用,“bin”目录中保存的命令所有用户都可以使用 |
/boot/ | 系统启动目录,保存系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 设备文件保存位置。我们已经说过Linux中所有内容以文件形式保存,包括硬件。那么这个目录就是用来保存所有硬件设备文件的 |
/etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务的配置文件全部都保存在这个目录当中,如用户账户和密码,服务的启动脚本,常用服务的配置文件等 |
/home/ | 普通用户的家目录。建立每个用户时,每个用户要有一个默认登录位置,这个位置就是这个用户的家目录,所有普通用户的家目录就是在/home下建立一个和用户名相同的目录。如用户user1的家目录就是/home/user1 |
/lib/ | 系统调用的函数库保存位置 |
/lost+found/ | 当系统意外崩溃或机器意外关机,而产生一些文件碎片在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如/lost+found就是根分区的备份恢复目录,/boot/lost+found就是/boot分区的备份恢复目录 |
/media/ | 挂载目录。系统建议是用来挂载媒体设备的,例如软盘和光盘 |
/mnt/ | 挂载目录,早期Linux中只有这一个挂载目录,并没有细分。现在这个目录系统建议挂载额外设备,如U盘、移动硬盘和其他操作系统的分区 |
/misc/ | 挂载目录,系统建议用来挂载NFS服务的共享目录。只要是一个已经建立的空目录就可以作为挂载点,那么系统虽然准备了三个默认挂载目录,但到底在哪个目录挂载什么设备都由管理员自己决定。如/mnt/cdrom挂载光盘、/mnt/usb挂载U盘,都是可以的 |
/opt/ | 第三方安装的软件保存位置。这个目录就是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中,不过我还是更加习惯把软件放置到/usr/local/目录中,也就是说/usr/local/目录也可用来装软件 |
/proc/ | 虚拟文件系统,该目录中的数据并不保存到硬盘当中,而是保存到内存当中。主要保存系统的内核、进程、外部设备状态和网络状态等。如/proc/cpuinfo是保存CPU信息的,/proc/devices是保存设备驱动的列表的,/proc/filesystems是保存文件系统列表的,/proc/net是保存网络协议信息的 |
/sys/ | 虚拟文件系统。和/proc目录相似,都是保存在内存当中的,主要是保存与内核相关信息的 |
/root/ | 超级用户的家目录。直接在“/”下 |
/srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需的数据 |
/tmp/ | 临时目录。系统存放临时文件的目录,该目录下所有用户都可以读写。不保存重要数据,最好每次开机都清空 |
/usr/ | 系统软件资源目录。是“Unix Software Resource”的缩写,不是user的缩写。系统中安装的软件大多数保存在这里 |
/var/ | 动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件 |
SELinux安全机制
Security-Enhanced Linux
美国NSA国家安全局主导开发,一套增强Linux系统安全的强制访问控制体系
集成到Linux内核(2.6及以上)中运行
SELinux体系针对用户、进程、目录和文件提供了预设的保护策略,以及管理工具
运行模式及切换
运行模式:
enforcing:强制
permissive:宽松
disabled:彻底禁用
查看运行模式:getenforce
临时立即生效强制变宽松:setenforce 0
临时立即生效宽松变强制:setenforce 1
永久生效需重启系统:vim /etc/selinux/config SELINUX=disabled
# 安装2个排错软件包(yum provides "semanage") |
防火墙
防火墙有两种:firewalld(系统自带;底层调用的依然是iptables)、iptables
预设安全区域
- 根据所在的网络场所区分,预设保护规则集
- – public:进允许访问本机的sshd等少数几个服务(sshd、dhcp)
- – trusted:允许任何访问
- – block:阻塞任何来访请求(虽拒绝,但会给回应)
- – drop:丢弃任何来访的数据包(直接丢弃,无回应)
- 防火墙判定原则
- 查看客户端请求中来源IP地址,查看自己所有区域中规则,哪个区域中有该源IP地址规则,则进入该区域
- 如果所有区域都没找到,则进入默认区域(默认情况为public)
- iptables规则链包括下表
链名 作用 INPUT链 进入本地主机防火墙内部的数据包会应用此链中的规则 OUTPUT链 从本地主机经过防火墙发出的数据包会应用此链中的规则 FORWARD链 需要iptables转发的数据包会应用此链中的规则 PREROUTING链 到达本机并在路由转发前的数据包会应用此链中的规则,用于目的地址转换(DNAT),针对主机外到达防火墙的报文,所有的数据包进来的时候都会优先由PREROUTING链处理 POSTROUTING链 路由之后需要离开本机的数据包会应用此链中的规则,用于源地址转换(SNAT),主机内的报文要从防火墙出去,需要经过POSTROUTING链进行处理 - iptables内置了4个表如下:(表Tables是多个链的集合)
表名 作用 优先级 是否常用 Raw表 可以让数据包跳过链接跟踪和NAT 1 Mangle表 修改数据包中的内容,如TTL、Qos等 2 Nat表 实现网络地址转换 3 * Filter表 iptables默认使用的表,实现包过滤功能 4 *
查看防火墙规则列表
… … … firewall … … … ∞
# 检查是否安装 |
命令(command)
common命令
命令格式:命令 [-选项] [参数]
说明:个别命令使用不遵循此格式当有多个选项是,可以写在一起简化选项与完整选项 -a==–all
目录处理命令
… … … ls … … … ∞
# 英文原意 list;所在路径 /bin/ls;执行权限 all |
… … … mkdir … … … ∞
# 英文原意 make directories;所在路径 /bin/mkdir;执行权限 all |
… … … rmdir … … … ∞
# 英文原意 remove empty directories;所在路径 /bin/rmdir;执行权限 all |
… … … cd … … … ∞
# 英文原意 change directory;所在路径 shell内置;执行权限 all |
… … … pwd … … … ∞
# 英文原意 print working directory;所在路径 /bin/pwd;执行权限 all |
… … … cp … … … ∞
# 英文原意 copy;所在路径 /bin/cp;执行权限 all |
… … … mv … … … ∞
# 英文原意 move;所在路径 /bin/mv;执行权限 all |
… … … rm … … … ∞
# 英文原意 remove;所在路径 /bin/rm;执行权限 all |
文件处理命令
… … … touch … … … ∞
# 所在路径 /bin/touch;执行权限 all |
… … … cat … … … ∞
# 所在路径 /bin/cat;执行权限 all |
… … … nl … … … ∞
从第一行开始显示文件内容,并显示行号 |
… … … more … … … ∞
# 所在路径 /bin/more;执行权限 all |
… … … less … … … ∞
# 所在路径 /usr/bin/less;执行权限 all |
… … … head … … … ∞
# 所在路径 /usr/bin/head;执行权限 all |
… … … tail … … … ∞
# 所在路径 /usr/bin/tail;执行权限 alltail 默认显示后10行 |
链接命令
… … … ln … … … ∞
# 英文原意 link;所在路径 /bin/ln;执行权限 all |
权限管理命令
默认权限644,不具有可执行权限
谁创建的文件谁就是文件的所有者;所属组就是文件创建者的缺省组
… … … umask … … … ∞
# 英文原意 the user file-creation mask;所在路径 shell内置;执行权限 all |
… … … chmod … … … ∞
# 英文原意 change the permissions mode of a file;所在路径 /bin/chmod; 执行权限 all |
… … … chown … … … ∞
# 英文原意 change file ownership;所在路径 /bin/chown;执行权限 root |
… … … chgrp … … … ∞
# 英文原意 change file group ownership;所在路径 /bin/chgrp;执行权限 all |
… … … chcon … … … ∞
getenforce查看SELinux是打开模式情况下 |
文件搜索命令
… … … find … … … ∞
详见四剑客之find节点 |
… … … locate … … … ∞
# 所在路径 /usr/bin/locate;执行权限 all |
… … … which … … … ∞
# 所在路径 /usr/bin/which;执行权限 all |
… … … whereis … … … ∞
# 所在路径 /usr/bin/whereis;执行权限 all |
… … … grep … … … ∞
详见四剑客之grep节点 |
… … … man … … … ∞
# 英文原意 manual;所在路径 /usr/bin/man;执行权限 all |
… … … help … … … ∞
# 所在路径 shell内置命令;执行权限 all |
用户管理命令
… … … useradd … … … ∞
# 所在路径 /usr/sbin/useradd;执行权限 root |
… … … passwd … … … ∞
# 所在路径 /usr/bin/passwd;执行权限 all |
… … … who … … … ∞
# 所在路径 /usr/bin/who;执行权限 all |
… … … w … … … ∞
# 所在路径 /usr/bin/w;执行权限 all |
… … … compgen … … … ∞
# 查看用户 |
压缩解压命令
压缩格式 .gz .zip(不需要装对应软件、自带) .rar
… … … gzip/gunzip … … … ∞
# 英文原意 GNU zip/unzip;所在路径 /bin/gzip gunzip;执行权限 all |
… … … tar … … … ∞
# 所在路径 /bin/tar;执行权限 all |
压缩格式 | 扩展名 | 特点 |
---|---|---|
gzip | .gz | 速度快,压缩比例低 |
bzip2 | .bz2 | 速度中等,压缩比例中等 |
xz | .xz | 速度慢,压缩比例高 |
… … … zip/unzip … … … ∞
# 所在路径 /usr/bin/zip unzip;执行权限 all |
… … … bzip2 … … … ∞
# 所在路径 /usr/bin/bzip2;执行权限 all |
网络命令
… … … write … … … ∞
# 所在路径 /usr/bin/write;执行权限 all |
… … … wall … … … ∞
# 英文原意 write all;所在路径 /usr/bin/wall;执行权限 all |
… … … mail … … … ∞
# 英文原意 write all;所在路径 /usr/bin/wall;执行权限 all |
… … … ping … … … ∞
# 所在路径 /bin/ping;执行权限 all |
… … … telnet … … … ∞
telnet ip port |
… … … ifconfig … … … ∞
# 英文原意 interface configure;所在路径 /sbin/ifconfig;执行权限 root |
… … … ip … … … ∞
# ip命令格式: |
… … … last … … … ∞
# 所在路径 /usr/bin/last;执行权限 all |
… … … lastlog … … … ∞
# 所在路径 /usr/bin/lastlog;执行权限 all |
… … … traceroute … … … ∞
# 所在路径 /bin/traceroute;执行权限 all |
… … … netstat … … … ∞
# 所在路径 /bin/netstat;执行权限 all |
… … … ss … … … ∞
#获取socket统计信息,显示更多更详细的TCP连接状态的信息,且比netstat更快速高效 |
… … … setup … … … ∞
# 所在路径 /usr/bin/setup;执行权限 all |
… … … mount … … … ∞
# 所在路径 /bin/mount;执行权限 all |
关机重启命令
… … … shudown … … … ∞
# 所在路径 //;执行权限 |
系统运行级别
0 关机
1 单用户
2 不完全多用户,不含NFS服务
3 完全多用户
4 未分配
5 图形界面
6 重启
查看系统运行级别
cat /etc/inittab
runlevel
logout or ctrl+d 退出登录
四剑客之sed
… … … sed … … … ∞
# 轻量级流编辑器-数据的增删改查替换sed |
四剑客之awk字符截取
… … … cut … … … ∞
cut [选项] 文件名 |
… … … printf … … … ∞
printf '输出类型输出格式' 输出内容 |
… … … awk … … … ∞
awk '条件1{动作1} 条件2{动作2}…' 文件名 |
四剑客之grep
… … … grep … … … ∞
# 所在路径 /bin/grep;执行权限 all;针对文件内容,输出包含指定字符串的行 |
四剑客之find
… … … find … … … ∞
# 精确查找文件 |
… … … join … … … ∞
# 获取ecm节点总内存、k8s分配内存、内存占比 |
vim
# 建立、编辑、显示文本文件 |
配置vim适应yaml语法
# 文件和位置是固定的,用于设置vim的格式 |
set | Word | Comment |
---|---|---|
ai | autoindent | 自动缩进 |
ts | TabStop | Tab1=Space2 |
et | ExpandTab | 将tab键转换为相应个数的空格 |
cuc | CursorColumn | 光标列对齐 |
nu | number | 设置行号 |
shell命令
… … … date … … … ∞
%I 小时,12小时制(01~12) |
… … … 加减操作 … … … ∞
# 显示当前年月日 |
… … … curl … … … ∞
#获取汽油价格json格式化 |
软件包管理
软件包分类
源码包(脚本安装包)
优点:开源;可自由选择所需功能;软件编译安装,更加稳定效率更高;卸载方便
缺点:安装过程步骤多、容易出现拼写错误;编译过程时间长,比二进制长;安装过程报错较难解决
二进制包(RPM包、系统默认包)
优点:安装简单;比源码包速度快
缺点:不能看到源代码;功能选择不如源码包灵活;依赖性,需要依赖别的包
RPM包管理 - rpm命令管理
RPM包命名原则
httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd 软件包名
2.2.15 软件版本
15 软件发布的次数
el6.centos 适合的Linux平台
i686 适合的硬件平台rpm
rpm包的扩展名
RPM包依赖性
树形依赖:a->b->c
环形依赖:a->b->c->a
模块依赖:查询网站 www.rpmfind.net
RPM命令管理
包全名:操作的包是未安装的软件包时,使用包全名,而且要注意路径
包名:操作已安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库
… … … rpm安装 … … … ∞
rpm -ivh 包全名 |
… … … rpm包升级 … … … ∞
rpm -Uvh 包全名 |
… … … rpm包卸载 … … … ∞
rpm -e 包名 |
… … … rpm查询 … … … ∞
rpm -qa |
… … … rpm包校验 … … … ∞
rpm -V 已安装的包名 |
… … … rpm包中文件提取 … … … ∞
rpm2cpio 包全名 | cpio -idv .文件绝对路径 |
RPM包管理 - yum在线管理
redhat需要付费才能使用yum,centos免费
## IP地址配置 |
… … … yum 查询 … … … ∞
# 查询所有可用软件包列表 |
… … … yum 安装 … … … ∞
yum -y install 包名 |
… … … yum 升级 … … … ∞
yum -y update 包名 # 不加包名是升级所有包,慎用 |
… … … yum 卸载 … … … ∞
yum -y remove 包名 # 尽量不卸载 |
… … … yum 软件组 … … … ∞
# 列出所有可用的软件组列表 |
源码包脚本安装包
源码包和rpm包的区别
安装前:源码包是开源的
安装后:安装位置不通安装位置不同带来的影响:
rmp包安装的服务可以使用系统服务管理命令(service)来管理,例如rpm包安装的apache的启动方法:
/etc/rc.d/init.d/httpd start
service httpd start
源码包安装的服务则不能被service管理,因为没有装到默认路径中,所以只能用绝对路径进行服务的管理
/usr/local/apache2/bin/apachectl start源码包安装过程
1.安装准备
# 安装C语言编译
rpm -q gcc
# 下载源码包
http://mirror.bit.edu.cn/apache/httpd/
2.安装注意事项
# 源代码保存位置:/usr/local/src/
# 软件安装位置:/usr/local/
# 如何确定安装过程报错:安装过程停止、并出现error、warning或no的提示
3.开始安装
# 解压缩下载的源码包、进入解压缩目录
# 查看说明文件里的安装步骤
cat INSTALL 或者 cat README
./configure --prefix=/usr/local/apache2 # 软件配置与检查
定义需要的功能选项
检测系统环境是否符合安装要求
把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
make # 编译
编译报错的话,make clean可以清空编译
make instll # 编译安装
4.卸载
# 不需要卸载命令,直接删除安装目录,不会遗留任何垃圾文件
rm -rf 安装目录脚本安装包并不是独立的软件包类型,常见安装的是源码包
人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装常见脚本安装包
Webmin
是一个基于Web的Linux系统管理界面,可通过图形化的方式设置用户账号、Apache、DNS、文件共享等服务下载安装包、解压进入目录、执行./setup.sh
ctrl+backspace # 删除乱码
用户用户组管理
用户
用户配置文件
… … … /etc/passwd … … … ∞
# 用户信息文件 |
… … … /etc/shadow … … … ∞
# 影子文件 |
… … … /etc/login.defs … … … ∞
PASS_MAX_DAYS 99999 # 密码有效期(shadow文件第5字段) |
命令
… … … useradd … … … ∞
# useradd创建的所有新用户会遵循/etc/login.defs下的规定 |
… … … passwd … … … ∞
# 超级用户可以更改所有用户的密码,普通用户只能修改自己的密码passwd [选项] 用户名 |
… … … usermod … … … ∞
# 修改用户信息 |
… … … chage … … … ∞
# 修改用户密码状态,用vim shadow也能改 |
… … … userdel … … … ∞
userdel [选项] 用户名 |
… … … id … … … ∞
# 查看用户ID |
… … … su … … … ∞
# 切换用户身份su |
… … … env … … … ∞
查看当前用户的环境变量 |
用户组
用户组配置文件
… … … /etc/group … … … ∞
# 组信息文件 |
… … … /etc/gshadow … … … ∞
# 组密码文件 |
… … … groupadd … … … ∞
groupadd [选项] 组名 |
… … … groupmod … … … ∞
groupmod [选项] 组名 |
… … … groupdel … … … ∞
# 删除用户组 |
… … … gpasswd … … … ∞
# 修改用户属组,仅限附属 |
权限管理
文件类型
文件类型-rw-r–r–
r 读 4;可以查看文件内容;可以列出目录中的内容
w 写 2;可以修改文件内容;可以在目录中创建、删除文件
x 执行 1;可以执行文件;可以进入目录- 普通文件l 软链接文件普通权限
rw- r– r–
u所有者 g所属组 o其他人(除所有者、所属组以外的用户)
ACL权限
ACL解决身份不足的情况,不考虑ugo的权限
… … … dumpe2fs … … … ∞
# 查看分区ACL权限是否开启 |
… … … 开启ACL权限 … … … ∞
## 临时开启分区ACL权限 |
… … … 查看ACL权限 … … … ∞
getfacl 文件名 |
… … … 设定ACL权限 … … … ∞
setfacl 选项 文件名 |
… … … mask … … … ∞
# mask是用来指定最大有效权限的,默认情况是rwx |
… … … 删除ACL权限 … … … ∞
setfacl 选项 文件名 |
… … … 递归ACL权限 … … … ∞
# 递归是父目录在设定ACL权限时,所有的子文件、子目录也会拥有相同的ACL权限 |
… … … 默认ACL权限 … … … ∞
# 默认ACL权限:给父目录设定了默认ACL权限,当中所有“新建”的子文件都会继承 |
文件特殊权限
特殊权限 s
S代表赋权错误,无任何作用
… … … SetUID … … … ∞
SetUID功能: |
… … … SetGID … … … ∞
SetGID针对文件的作用: |
… … … Sticky BIT … … … ∞
SBIT粘着位作用 |
… … … chattr … … … ∞
chattr [+-=][选项] 文件或目录名 |
… … … lsattr … … … ∞
lsattr 选项 文件名 |
sudo
… … … sudo … … … ∞
## sudo作用 |
文件系统管理
- 分区规划
MBR 主分区 4,实际3,最大2T 扩展分区 1 逻辑分区 n
GPT 主分区 128个,最大18EB- MBR分区类型
主分区:最多能分4个
扩展分区:只能有一个,主分区+扩展分区最多有4个;扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能用逻辑分区:IDE硬盘最多支持59个逻辑分区,SCSI硬盘最多支持11个逻辑分区
- MBR分区类型
分区设备文件名
主分区1 2 3 /dev/sda1 2 3
扩展分区 /dev/sda4
逻辑分区1 2 3 /dev/sda5 6 7 # 逻辑分区固定从sda5开始文件系统:空间存储数据的规则
windows:NTFS FAT
linux:xfs(7以上才有,适合存大文件) ext4
ext2:ext的升级版本;1993年发布,支持最大16TB的分区和最大2TB的文件
ext3:ext2的升级版本;最大区别是带日志功能以在系统突然停止时提高文件系统的可靠性,支持最大16TB的分区和最大2TB的文件
ext4:ext3的升级版;大量改进性能、伸缩性、可靠性;向下兼容ext3、支持最大1EB文件系统和16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等;是CentOS6.3的默认文件系统- GPT
两个工具
fdisk 所有操作保存在内存里,对磁盘不生效,最终保存才会生效,q退出
parted 敲回车直接更改
… … … mkfs. blkid pv vg lv … … … ∞
## 识别硬盘-》分区规划-》格式化-》挂载 |
逻辑卷常用指令集
功能 物理卷管理 卷组管理 逻辑卷管理 Scan 扫描 pvscan/pvs vgscan/ygs Ivscan/lvs Create 创建 pvcreate vgcreate lvcreate Display 显示 pvdisplay vgdisplay lvdisplay Remove 删除 pvremove vgremove lvremove Extend 扩展 / vgextend lvextend
# 逻辑卷作用: |
… … … swapon … … … ∞
## 交换空间(虚拟内存) |
… … … NFS … … … ∞
Network File System网络文件系统 |
… … … autofs … … … ∞
yum install -y autofs |
… … … lsblk … … … ∞
#查看所有可用块设备信息 |
… … … df … … … ∞
df [选项] [挂载点] |
… … … du … … … ∞
#查看文件、目录大小 |
… … … fsck … … … ∞
# 文件系统修复命令 |
… … … dumpe2fs … … … ∞
# 显示磁盘状态 |
… … … mount … … … ∞
临时挂载;一个设备能挂载多个挂载点;一个挂载点只能挂载一个设备 |
… … … /etc/fstab … … … ∞
## 自动挂载(永久挂载) |
… … … fdisk … … … ∞
# 查询新硬盘 |
… … … stat … … … ∞
#查看文件信息 |
说些什么吧!