Git常用命令

初次创建仓库并提交代码

  1. 新建文件
1
echo "# naviPlayer" >> README.md
  1. 初始化本地仓库:

    1
    git init
  2. 记录本地新增文件:

    1
    git add README.md
  3. 将修改、新增文件提交到本地仓库:

    1
    git commit -m "first commit"
  4. 创建分支 main:

    1
    git branch -M main
  5. 关联远程仓库:

    1
    git remote add origin git@github.com:tux0529/naviPlayer.git
  6. 提交本地仓库到原程仓库:

    1
    git push -u origin main

Git更新提交到仓库

  1. 在本地修改相应文件(或者文件新旧替换)

  2. 记录新增文件、修改文件

    1
    git add (文件路径)
  3. 查看当前本地文件信息,查看是否还有文件未跟踪或是未添加到本地库:

    1
    git status
  4. 将修改、新增文件提交到本地仓库:

    1
    git commit -m "更改信息备注"
  5. 提交代码到当前分支

    1
    git push

中医方剂收藏

二陈汤

二陈汤,中医方剂名。为祛痰剂,具有燥湿化痰,理气和中之功效。主治湿痰证。咳嗽痰多,色白易咯,恶心呕吐,胸膈痞闷,肢体困重,或头眩心悸,舌苔白滑或腻,脉滑。临床常用于治疗慢性支气管炎、慢性胃炎、梅尼埃病、神经性呕吐等属湿痰者。

方剂名:二陈汤
方剂组成: 陈皮(或橘红)、制半夏、 茯苓、炙甘草
方剂方解:燥湿化痰,理气和中,用于脾虚痰湿阻滞之咳嗽痰多而呈清稀泡沫、胸闷呕恶、头晕心悸、苔白腻、脉滑等症、本方多用于慢性支气管炎、肺气肿之咳嗽痰稀之症。

方剂用法用量:半夏(汤洗七次)、橘红各15g,白茯苓9g,甘草(炙)4.5g。上药㕮咀,每服12g,用水一盏,生姜七片,乌梅一个,同煎六分,去滓,热服,不拘时候。现代用法:加生姜7片,乌梅1个,水煎温服。

方剂附方:杏苏散,即二陈汤加紫苏、杏仁、前胡、桔梗、枳壳、生姜、大枣、功能宣肺止咳化痰、用于外感风寒咳嗽痰多之证
温胆汤,即二陈汤加枳实、竹茹、用于痰热内扰虚烦不得眠者导痰汤,即二陈汤加枳实、胆星,用于痰多喘急时发晕厥,头痛眩晕,或咯痰粘稠,坐卧不安者

半夏白术天麻汤,即二陈汤加白术、天麻、用于痰湿中阻,头痛眩晕、恶心呕吐、胸脘痞闷、苔白滑腻脉滑之证。

方剂备注:本方是治疗湿痰的要方。湿痰之成,多因饮食生冷,脾胃不和,运化失健,以致湿聚成痰。方中半夏燥湿化痰,和胃止呕;橘红理气化痰,使气顺则痰降。气行则痰化;痰由湿生,故以茯苓健脾渗湿;甘草和中益脾。煎加生姜,既制半夏之毒,又协同半夏、橘红和胃祛痰止呕;少用鸟梅,味酸收敛,配半夏散中有收,使其不致辛散太过。凡是痰湿为患,均可用本方增损治之。

方剂功能主治:脾胃虚寒,胸腹胀满,呕逆不食,自利不渴,因伤宿食,或吐后噫败脾气。伤寒汗后,脾胃伤冷物,胸膈不快,寻常血气不和;太阴伤寒,手足温,自利不渴,腹满时痛,咽干,脉尺寸俱沉细;饮食伤脾,宿谷不化,朝食暮吐,暮食朝吐,上气复热,四肢冷痹,三焦不调,及胃虚寒气在上,忧气在下,二气并争,但出不入,呕不得食;中寒,饮食不化,吞酸哯啘,食则膨亨,胀满呕逆;脾胃不和,饮食减少,短气虚羸而复呕逆,霍乱吐泻,胸痹心痛,逆气短气,中满虚痞,膈塞不通,或大病愈后,胸中有寒,时加咳唾;霍乱吐泻,泻血不止;脏寒冷气,腹痛肠鸣,下痢青黑;食积,心腹满痛;忧思郁结,脾肺气凝,胀满上冲,饮食不下,腹满痞闷,兼食积者;冷食粘滞。

方剂临床应用:伤寒劳复《本事》:有人患伤寒得汗数日,忽身热自汗,脉弦数,心不得宁,真劳复也。予诊曰:劳心之所致,神之所舍,未复其初,而又劳伤其神,荣卫失度,当补其子,益其脾,解发其劳,庶几得愈。授以本方,佐以小柴胡得解。

三子养亲汤

  三子养亲汤,是传统的中药方剂,用于降气消食、温化痰饮之功的方剂,主要治疗老人中虚喘嗽,痰壅气滞之症。此方出自《韩氏医通》,莱菔子就是萝卜子,苏子是紫苏的种子,白芥子是芥菜的种子,三味本草都是植物的种子,种子都有油性,能滋润,且性质都是往下降的,能通便。三个药加在一起,把老人的吃喝拉撒以及平时可能有的一些小毛病全管了。如今,三子养亲汤被广泛应用于现代人的“代谢综合征”,用于去除体内有形及无形之痰。

  方剂名:三子养亲汤

  方剂组成:苏子、白芥子、莱菔子

  方剂方解:本方治证乃因伤食生痰,痰壅气滞,肺失宣降所致。治宜下气消痰,宣肺止咳。方中紫苏子下气消痰,止咳平喘;白芥子利气豁痰;莱菔子降气祛痰,行滞消食。三药合用,可使气顺痰化食消,咳逆自平。三子皆治痰之药,而又能于治痰之中各逞其长,临证当视气、痰、食三者之孰重孰轻,以定君药,余为臣药。原方三子,为事亲者设,故名“三子养亲汤”。

  用法用量:紫苏子(主气喘咳嗽),白芥子(主痰),萝卜子(主食痞兼痰)。上三味各洗净,微炒,击碎,看何证多,则以所主者为君,余次之,每剂不过三钱,用生绢小袋盛之,煮作汤饮,随甘旨,代茶水啜用,不宜煎熬太过。

  注意事项:1、本方下气作用较强,消瘦、气血两虚、阴虚者不宜服用。

  2、建议使用时间为2—4周,不建议服用过长时间。

临床应用

郭某,女,4岁。2010年4月13日诊。患儿咳嗽反复发作已2年余,每于感冒之后即咳嗽吐白痰不已。本次发病乃两日前感冒,后咳嗽不止,痰多色白,伴食欲不振,舌苔白厚腻,脉滑。曾用西药抗炎治疗无效,又遍寻老中医治疗,收效甚微,后邀余诊治。据其脉症,余辨此证乃属食滞伤风,化痰滞于肺脾,成痰壅食滞气逆之证。故拟以消食化痰,降气止咳,用三子养亲汤加味。处方。苏子6克 白芥子5克 莱菔子9克 茯苓12克 半夏6克 陈皮6克 前胡6克 紫菀6克 焦三仙各10克 内金6克。三剂后,咳嗽吐痰明显减轻,食量增加,效不更方。原方又进3剂,病告痊愈。追访:后又贪食受风发作1次,遵原法治疗而愈,以后再未发作。

  粱某,男,58岁,2001年8月2日初诊。气喘反复发作20年,加重15天。患者于20年前开始气喘,症状反复发作,逐渐加重。初病时多于冬季发病,近几年发作频繁,无规律性。此次于半月前因感冒后气喘发作,用西药抗炎、平喘、解痉等方法治疗,症状好转不明显。现症见气喘,不能平卧,夜间为甚,痰白黏而少,无发热,无明显咳嗽。诊见面色暗红少泽,舌质暗红偏淡,舌苔白,脉虚数。X线胸部正位片示两肺纹理粗乱。中医诊为哮喘,证属寒痰内积,瘀血夹杂,肺气不足。西医诊断:支气管哮喘。治法:温化寒痰,活血通络,降逆平喘。方用三子养亲汤加味。处方:苏子7克 炒莱菔子7克 白芥子7克 前胡10克 陈皮5克 半夏10克 干姜7克 五味子7克 艾叶10克 桔梗10克 枳壳7克 地龙7克。三剂,水煎服,每日一剂。

Xcode安装多个版本并切换版本

安装Xcode

我们有时候为了适配不同设备,需要安装多个xcode版本,新的版本,老的版本。Xcode各版本兼容性可查看官方这个页面。然后在这个页面下载对应版本,下载到的文件是自解压格式xip,双击自动解压到当前目录为Xcode.app。加上版本号之后移动到/Applications目录下,如下载的14.3.1版,可以重命名为Xcode14.3.app。

  1. 显示当前使用的xcode:xcode-select -p ,显示如下:
1
/Applications/Xcode.app/Contents/Developer
  1. 查看xcode版本号: xcodebuild -version
1
2
Xcode 14.2
Build version 14C18
  1. 切换版本:
1
sudo xcode-select -s /Applications/Xcode14.3.app/Contents/Developer

安装Command Line Tools

一般Xcode安装后,第一次打开时,会弹窗提示安装Command Line Tools,直接安装即可。

如果当时没有安装,后面也可以单独安装。

1
2
3
xcode-select --install	// 安装命令

xcode-select --version // 查看版本

有时Command Line Tools出了问题,可以先尝试恢复默认设置来解决:

1
2
// 恢复默认设置(需要sudo权限)
sudo xcode-select --reset

还是解决不了,可以考虑删掉后重新安装:

1
2
3
4
5
// 强制删除安装目录下的文件
sudo rm -rf /Library/Developer/CommandLineTools

// 重新安装
xcode-select --install

除了终端命令的安装方式,也可以到苹果开发者官网的下载专区搜索Command Line Tools并下载安装包。你也可以去xcodereleases网站找到各种版本Xcode的下载链接。

HL-2260D打印机粉盒重置

HL-2260D打印机粉盒重置

  • 长按电源键关机;
  • 打开前鼓架盖;
  • 按住Go键不放,再按电源键,待上面3灯同时亮起,同时放开Go键和电源键;
  • 按10次Go键,关上鼓架盖,待机器重置;

信息系统管理工程师主观题考点

信息系统管理工程师主观题考点

信息系统开发基础

信息系统

1. 信息系统组成部分?

  • 计算机硬件系统;
  • 计算机软件系统、
  • 数据及其存储介质、
  • 通信系统、
  • 非计算机的信息收集和处理设备;
  • 规章制度;
  • 工作人员。

2. 信息系统主要类型?

  • 面向作业处理的系统;
  • 面向管理控制的系统;
  • 面向决策计划的系统;

3. 信息系统对企业的影响?

  • 促使组织机构扁平化;
  • 组织机构更加灵活有效;
  • 虚拟办公室;
  • 增加企业流程重组的成功率;

4. 信息系统有哪些开发阶段?

  • 系统规划阶段: 可行性研究,制定初步任务计划。输出可行性分析报告和项目计划书。
  • 系统分析阶段: 解决做什么的问题。分析用户需求,再将用户需求转换为逻辑模型。输出需求规格说明书、逻辑模型。
  • 系统设计阶段: 解决这么做的问题。分概要设计、详细设计,将逻辑模型转换为物理模型形成系统设计说明书,作为系统实施的依据。输出设计文档、物理模型。
  • 系统实施阶段: 把物理模型转换为可实际运行的系统。内容为物理系统的实施、程序设计、系统调试、人员培训、系统切换。输出可运行的系统。
  • 系统运行和维护: 系统运行、系统运行管理、系统维护。是信息系统生命周期中花钱最多、延续时间最长的阶段。

项目管理

1. 战略管理和项目管理的区别和联系?

  • 区别:

    • 战略管理立足于长远和宏观,考虑的是企业的核心竞争力,以及围绕核心竞争力的企业流程再造、业务外包和供应链管理等问题;
    • 项目管理则立足于一定的时期,相对微观,主要考虑有限的目标、学习型组织和团队合作等问题
  • 联系:

    • 战略管理指导项目管理,项目管理支持战略管理,没有项目管理,公司的战略目标就无法顺利实现

2. 项目的定义?

  • 基本概念: 在既定资源和要求的约束下,为实现某种目的而相互联系的一次性工作任务,包含如下三个层次:

    • 一定的资源约束:时间、经费、人力等资源;
    • 一定的目标;
    • 一次性任务;
  • 基本特征: 明确的目标、独特的性质、有限的生命周期、特定的委托人、实施的一次性、组织的临时性和开放性、不确定性和风险性、结果的不可逆性。

3. 信息系统项目?

  • 信息系统项目 是智力密集、劳动密集型项目,受人力资源影响最大、项目团队的结构、责任心和稳定性对项目的质量和是否成功有决定性的影响。

  • 特点:

    • 目标不明确,任务边界模糊,质量要求主要有项目团队定义;
    • 开发过程中,客户需求易变化,导致项目计划的不断变更;
    • 客户的需求不断被激发、不断被进一步明确;
    • 客户需求随项目进展而变化;
    • 项目的进度、费用等计划会不断更改;

4. 项目管理

  • 项目管理9大体系:

    • 项目范围管理;
    • 项目进度管理;
    • 项目质量管理;
    • 项目成本管理;
    • 项目人力资源管理;
    • 项目沟通管理;
    • 项目采购管理;
    • 项目风险管理;
    • 项目综合管理;
  • 基本特点:

    • 项目管理是一项复杂的工作;
    • 项目管理具有创造性;
    • 项目管理需要集权领导并建立专门的项目组织;
    • 项目负责人在项目管理中起着非常重要的作用;

系统分析

系统分析阶段是信息系统开发最重要的阶段。

1.系统分析的任务?

  • 主要任务: 理解和表达用户对系统的应用需求。

    • 了解用户需求。
    • 确定系统逻辑模型。
    • 完成系统分析报告。为系统设计提供依据。

2. 系统分析的步骤?

  • 现行系统的详细调查
  • 进行需求分析
  • 提出新系统的逻辑模型
  • 编写需求规格说明书。

3. 系统说明书

系统说明书是系统分析阶段工作的全面总结,是这一阶段的主要成果。系统说明书应达到的基本要求是:全面、系统、准确、详实、清晰第表达系统开发的目标、任务和系统功能。

4. 系统分析报告作用

  • 描述了目标系统的逻辑模型,可作为开发人员进行系统设计和实施的基础;
  • 作为用户和开发人员之间的协议或合同,为双方的交流和监督提供基础。
  • 作为目标系统验收和评价的依据。

系统设计

1. 系统设计的目标?

  • 系统的可靠性
  • 较高的系统运行效率
  • 可变更性
  • 经济性

2. 系统设计的原则?

  • 系统性原则
  • 简单性原则
  • 开放性原则
  • 管理可接受原则
  • 其他原则

3. 系统设计的内容?

  • 总体设计: 也叫概要设计

    • 总体布局设计(网络拓扑结构设计、资源配置设计);
    • 模块化结构设计(划分功能模块、模块功能和职责、模块间的调用关系、模块间的信息传递)。
  • 详细设计:

    • 代码设计
    • 数据库设计
    • 输入输出设计
    • 用户界面设计
    • 处理过程设计

4. 系统的处理过程设计的描述方式?

  • 图形:

    • 系统流程图
    • IPO图
    • HIPO图
    • 控制结构图
    • 数据流程图
    • 模块结构图
    • 程序框图

5. 模块结构设计原则?

  • 高聚合低耦合
  • 系统分解有层次
  • 适宜的深度和宽度比例
  • 模块大小适中
  • 适度控制模块的扇入扇出
  • 较小的数据冗余

系统实施

系统实施

  • 目标: 实现系统设计阶段提出的物理模型,按实施方案完成一个可以实际运行的信息系统,并交付用户使用

  • 主要活动: 根据系统设计所提供的控制结构图、数据库设计、系统配置方案及详细设计资料,编制和调试程序,调试系统、进行系统切换等工作,将技术设计转化为物理实际系统。

  • 实施内容:

    • 硬件配置
    • 软件编码
    • 人员培训
    • 数据准备
  • 注意事项:

    • 尽可能选择成熟的软件产品
    • 选择好信息系统的开发工具
  • 关键因素:

    • 进度安排(进度计划是实施的基本保证)
    • 人员组织(程序编码是实施阶段的主要任务)
    • 任务分解
    • 开发环境构建

系统测试

1. 系统测试的目标

  • 为了发现错误而执行程序的过程。
  • 好的测试方案能够发现迄今为止尚未发现的错误
  • 成功的测试将发现至今尚未发现的错误。

2. 测试过程

  • 拟定测试计划
  • 编制测试大纲
  • 设计和生成测试用例
  • 实施测试
  • 生成测试报告

3. 测试原则

  • 所有测试有应追溯到用户需求;
  • 尽早的不断的测试;
  • 避免开发人员人员来承担,除开单元测试;
  • 在设计测试方案时,不仅要确定输入数据而且要确定输出结果;
  • 在设计测试用例时,不仅要包括合理有效的输入条件,也要包括不合理无效的输入条件;
  • 测试程序时,既要测试程序是否做了该做的事,也要测试是否做了不该做的事;
  • 充分重视测试中的群集现场;
  • 严格按照测试计划进行测试,避免测试的的随意性;
  • 妥善保存测试计划、用例

4. 什么是动态测试

动态测试也称为动态分析。

  • 主要特征: 是计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况进行分析,判断期望结果和实际结果是否一致。

  • 包括:

    • 功能确认
    • 接口测试
    • 覆盖率分析
    • 性能分析
    • 内存分析
  • 压力测试: 在动态分析中,通过最大资源条件进行系统压力测试,以判断系统的实际承受能力,尤其是在通讯比较复杂的系统中尤为重要。

  • 黑盒测试法: 功能性测试,不了解软件代码结构,根据功能设计用例,测试软件功能。

  • 白盒测试法: 结构性测试,明确代码流程,根据代码逻辑设计用例,进行用例覆盖。

  • 灰盒测试法: 既有黑盒,也有白盒。

5. 静态测试

  • 主要特征: 是在用计算机测试源程序时,计算机并不真正运行被测试的程序。

  • 包括:

    • 代码检查
    • 静态结构分析
    • 代码质量度量等
  • 方式: 可以由人工进行,也可以借助软件工具自动进行。

  • 桌前检查: 程序员检查自己编写的程序,在程序编译后,单元测试前。

  • 代码审查: 由若干个程序员和测试人员组成评审小组,通过召开程序评审会来进行审查。

  • 代码走查: 也是采用开会来对代码进行审查,但并非简单的检查代码,而是由测试人员提供测试用例,让程序员扮演计算机的角色,手动运行测试用例,检查代码逻辑。

6. 测试中可能发现的错误

  • 功能错误
  • 系统错误
  • 过程错误
  • 数据错误
  • 编程错误

7. 硬件测试

在进行信息系统开发中,通常需要根据项目的情况选购硬件设备。在设备到货后,应在各个相关厂商配合下进行初验测试,初验通过后将硬件与软件、网络等一起进行系统测试。初验测试所做的工作主要如下:

  • 配置检测:
  • 硬件设备的外观检查:
  • 硬件测试:

8. 网络测试

如果信息系统不是单机,需要在局域网或广域网运行,按合同会选购网络设备。在网络设备到货,应在各个相关厂商配合下进行初验测试。初验通过后网络将与软件、硬件等一起进行系统测试。初验测试所做的工作如下:

  • 网络设备的外观检查:
  • 硬件测试:
  • 网络连通测试:

9. 软件测试

软件测试实际上分为四步,按下面顺序进行:

  • 单元测试:对源程序每一个程序单元进行测试,验证每个模块是否满足系统设计说明书的要求;
  • 组装测试:将已测试过的模块组合成子系统,重点测试各模块之间的接口和联系;
  • 确认测试:对整个软件进行验收,根据系统分析说明书来考察软件是否满足要求;
  • 系统测试:将软件、硬件、网络等系统等各个部分连接起来,对整个系统进行总的功能、性能等方面的测试。

10. 白盒测试用例设计

  • 语句覆盖SC:
  • 判定覆盖DC:
  • 条件覆盖CC:
  • 条件判定组合覆盖CDC:
  • 多条件覆盖MCC:
  • 修正判定条件覆盖MCDC:
  • 路径覆盖:所有可行路径都覆盖了,覆盖层级最高。

信息化

1. 国家信息化

在国家统一规划和组织下,在农业、工业、科学技术、国防和社会生活各个方面应用现场信息技术,深入开发,广泛利用信息资源,发展信息产业,加速实现国家现代化进程。

2. 国家信息化建设的信息化政策法规体系

  • 信息技术发展政策:
  • 信息产业发展政策:
  • 电子政务发展政策:
  • 信息化法规建设:

3. 国家信息化的4层含义

  • 一是实现四个现代化离不开信息化,信息化要服务于现代化;
  • 二是国家统一规划,统一组织;
  • 三是各个领域要广泛应用现代信息技术,开发利用信息资源;
  • 四是信息化是一个不断发展的过程。

4. 国家信息化体系六要素

  • 信息技术应用:
  • 信息资源的开发利用:
  • 信息网络
  • 信息技术和产业
  • 信息化人才
  • 信息化政策法规和标准化规范

5. 企业信息化

  • 定义: 指挖掘先进的管理理念,应用先进的计算机网络技术去整合企业现有的生产、经营、设计、制造、管理,及时的为企业的“三层决策”提供准确有效的数据信息,以便对需求做出迅速的反应,奇本质是加强企业的“核心竞争力”。

  • 根本目的: 就是实现企业战略目标与信息系统整体部署的有机结合,这种结合当然是可以从不同的层次或者角度出发来考虑,但这种不同层次和角度的结合能够给企业带来的最终效益是不一样的。IT战略有助于确保IT活动支持总体经营战略,使该组织实现其经营的目标和目的。

  • 企业信息管理系统不是把资源整合起来就可以了,而是需要一个有效的信息资源管理体系,其中最为关键的是从事信息资源管理的人才队伍建设。

  • 其次是架构的问题,在信息资源建设阶段,规划是以建设进程为主线,在信息资源管理阶段,规划应是以架构为主线,主要涉及的是这个信息化运营体系的架构,这个架构要消除以往分散建设所导致的信息孤岛,实现大范围内的信息共享、交换和使用,提升系统效率,达到信息资源的最大增值。

  • 三层体系:

    • 战术层
    • 战略层
    • 决策层

6. 主流的企业信息化系统

  • 企业资源计划(ERP):
  • 客户关系管理(CRM):
  • 供应链管理(SCM):
  • 知识管理系统(ABC):
  • 企业业务流程重组(BPR):

7. U/C矩阵

U/C矩阵是一张表格,用来表达过程与数据两者之间的关系。U代表Use,表示过程对数据类的使用。C代表Create,表示过程对数据类的产生。

8. 电子商务(EC)

是指对整个贸易活动实现电子化。即交易各方通过计算机和通讯网络进行信息的发布、传递、存储、统计,以电子交易方式而不是通过纸介质信息交换或直接面谈方式进行商业交易。

参与电子商务的实体有四类:顾客、商户、银行、认证中心

分为下面三种模式:

  • 企业对消费者B2C(网上商城);
  • 企业对企业B2B(1688);
  • 消费者对消费者C2C(咸鱼);

9. 信息资源管理

  • 定义: 为了确保信息资源的有效利用,以现代信息技术为手段,对信息资源实施计划、预算、组织、指挥、控制、协调的人类管理活动。

  • 主要内容:

    • 信息系统的管理:包括信息系统开发项目、信息系统运行与维护的管理、信息系统评价等。
    • 信息资源开发、利用的标准、规范、法律制度的制定与实施
    • 信息产品与服务的管理
    • 信息资源的安全管理
    • 信息资源管理中的人力资源管理

系统管理综述

1. 企业IT管理的三个层次

  • 战略层:IT战略规划。IT战略制定,IT治理,IT投资管理。
  • 战术层:IT系统管理。IT管理流程,组织设计,管理制度,管理工具。
  • 运作层:IT技术及运作管理。IT技术管理,服务支持,日常维护等。

2. 企业IT战略规划

  1. IT战略规划目标的制定要具有战略性;
  2. IT战略规划要体现企业核心竞争力要求;
  3. IT战略规划目标的制定要具有较强的业务结合性;
  4. IT战略规划对信息技术的规划必须具有策略性;
  5. IT战略规划对成本的投资分析要有战术性;
  6. IT战略规划要对资源的分配和切入时机进行充分的可行性评估。

3. 企业IT系统管理

  • 定义: IT的高效运作和管理,而不是IT战略规划。

  • 核心目标: 管理客户(业务部门)的IT需求;如何有效地利用IT资源恰当地满足业务部门的需求。

  • 基本目标:

    1. 全面掌握企业IT环境,方便管理异构网络,从而实现对企业业务的全面管理。
    2. 确保企业IT环境的整体可靠性和安全性,及时处理各种异常信息,在出现问题时及时进行修复,保证企业IT环境的整体性能。
    3. 确保企业IT环境的整体可靠性和安全性,对涉及安全操作的用户进行全面跟踪和管理;提供 一种客观的手段来评估组织在使用IT方面面临的风险,并确定这些风险释放得到了有效控制。
    4. 提高服务水平,加强服务的可管理性并及时产生各类情况报告,及时、可靠的维护各类服务数据。
  • 要求:

    1. 企业系统管理应可以让企业实现对所有IT资源统一监控和管理的愿望,应采用一致性的管理模式来推动企业现代化跨平台体系机构的建立;
    2. 企业IT系统管理应适合于企业大型、复杂、分布式的环境,不但控制了所有技术资源,而且直接可以从 业务角度出发管理整个企业,管理能力可以延伸到关键的非信息设备。企业可以随时部署应用监控系统,用来规划企业商务目标、维持企业高水平服务,提高业务系统商务响应能力;
    3. 企业IT系统管理应可以将整个企业基础结构以一个真实世界化的视图呈现给我们,让不同经验的人理解,让企业集中精力面对自己的业务而非平台之间的差异,这有助于大大提高企业的工作效率;
    4. 企业IT系统管理应是全集成的解决方案,覆盖网络资源、性能与能力、事件与安全、软件分布、存储、工作流、帮助台、变更管理和其他的用于传统和分布式计算环境的功能,并可以用于互联网和企业内部网。
  • 关键IT资源:

    • 硬件资源
    • 软件资源(软件+文档)
    • 网络资源(通信线路+网络服务器+网络互联设备等)
    • 数据资源(文件、资料、图表和数据)
  • 通用体系结构:

    • IT部门管理;
    • 业务部门(客户)IT支持
    • IT基础架构管理

4. 良好的自动化管理工具(系统管理工具)的作用

  1. 可以有效的监控操作系统环境、网络环境、数据存储环境、信息安全环境和业务应用环境;
  2. 可以准确的定位和综合诊断系统异常的原因并提出修复方案;
  3. 可以有力的为业务系统保驾护航,让业务应用高枕无忧从而使企业IT部门可以将更多精力投入在服务和推动业务方面

5. 企业级的系统管理需要考虑因素

  1. 符合业界的一些最佳实践标准
  2. 应提供集成统一的管理体系;
  3. 应包括端到端的可靠性和性能管理能力;
  4. 应能够将IT管理与业务优先级紧密的联系起来,从而打破IT部门与业务部门之间的隔阂;
  5. 应着重考虑服务水平的管理,从而为用户提供更优的服务。

6. IT服务理念

  • 以客户(企业的业务部门)为中心提供IT服务;
  • 提供高质量、低成本的IT服务;
  • 提供的服务可度量、可计费。

7. 服务级别管理

  • 服务级别管理是定义、协商、订约、检测和评审提供给客户服务质量水准的流程。直接面对的不是IT服务的用户(业务部门内某个具体的职员),而是IT服务付费的客户(某个具体的业务部门);
  • 主要目标: 根据客户的业务需求和相关的成本预算,制定恰当的服务级别目标,并将其以服务级别协议的形式确定下来。
  • 服务级别协议(SLA) 中确定的服务级别目标,即是IT服务部门监控和评价时机服务品质的标准,也是协调IT部门和业务部门有争议的依据;
  • 服务级别协议设定了IT服务的数量、质量和费用相关标准。SLA不仅用于企业内部IT部门和业务部门之间,也用于企业和第三方服务提供商之间(外包、应用开发服务、系统集成服务)。

8. 服务级别确认流程

服务级别确认流程

9. 服务级别的主要作用

  • 作为IT部门连接业务部门的枢纽,准确了解业务部门的服务需求,节约组织成本,提高IT投资收益;
  • 对服务质量进行量化考核;
  • 监督服务质量;
  • 明确职责,对违反服务级别协议的行为进行惩罚。

10。 服务级别管理的要点

  1. 强调IT对业务的价值。
    1. 在考虑服务级别需求时,要充分考虑业务部门潜在的、隐含的需求,以免因遗漏而影响业务的正常运作;
    2. 在确定服务级别目标时,要确定合适的服务级别、服务质量。
  2. 让业务部门的人员参与进来;
  3. 服务级别管理要具体落实。需要更长时间,更复杂、更艰难的监测、评审。
  4. 对IT部门来说,至关重要的是创建能够提供的服务级别协议;对业务部门来说,SLA与业务要求相吻合,才有生命力和执行的必要。

IT财务管理

1. IT财务管理流程

  • IT投资预算;
  • IT会计核算;
  • IT服务计费。

2. IT预算三个方面

  • 技术成本(硬件和基础设施);
  • 服务成本(软件开发与维护、故障处理、帮助台支持);
  • 组织成本(会议、日常开支)。

3. IT投资预算的目的

  • 是对IT投资项目进行事前规划和控制;
  • 通过预算可以帮助高级管理人员预测IT项目的经济可行性;
  • 可以作为IT服务实施和运作过程中的控制依据;
  • 编制预算要紧密结合IT能力管理。

4. 会计核算

  • 目标: 通过量化IT服务运作过程中所耗费的成本以及收益,为IT服务管理人员提供考核依据和决策信息;
  • 包括的活动: IT服务项目成本核算、投资评价、差异分析和处理。分别实现了对IT项目成本和收益的事中和事后控制;
  • 对成本要素进行定义是IT服务项目成本核算的第一步,成本要素一般可按部门、客户或产品等划分标准进行定义,对于IT服务部门而言,理想的方法是按服务要素结构进行定义;
  • 对于IT项目投资评价的主要指标:投资回报率(ROI)、资本报酬率(ROCE)
  • 为了达到控制的目的,IT会计人员需要将每月、每年的实际数据与相应的预算、计划数据进行比较,发现差异,调查分析差异产生的原因,并对差异进行适当的处理。
  • IT会计人员需要注意的差异包括:成本差异、收益差异、服务级别差异、工作量差异。

5. IT服务计费

  • IT服务计费是负责向使用IT服务的部门(客户)收取相应的费用;
  • 通过收费,构建一个内部市场,并以价格机制作为合理配置资源的手段,迫使业务部门有效的控制自身需求、降低总体服务成本,从而提高了IT投资效益;
  • IT服务计费的顺利运作需要以IT会计核算所提供的成本核算数据作为基础。

6. IT部门的职责

  • IT部门的核心职责在于始终提供并保持高质量的服务;

  • 有效控制不断上升的服务需求成本;

  • 制定出符合业务发展的服务水平协议;

  • 自动制定出能够反应业务动态变化的服务计划。

  • 具体职责包括:

    • IT战略规划
    • 企业应用系统规划
    • 网络及基础设施
    • 数据库管理
    • 安全管理
    • IT日常运作
    • 终端用户支持

7. IT部门的角色转换

?????

成本中心

利润中心

8. IT部门作为独立的利润中心优势

  • 对企业而言,可以是企业集中精力在业务方面,降低成本、提高边际利润;
  • 对于IT部门而言,可称为独立核算的经济实体,通过市场化运作实现自身盈利,对内部人员形成有效激励,更好的利用资源,创造更多社会价值;
  • 对的业务部门而言,在市场需求阶段考虑约束,要考虑成本因素,行为更具经济性,有利于整体效率提升。

9. 系统管理计划

  • 运作方的系统管理规划:

    • 系统日常操作管理,
    • IT人员管理,
    • IT财务管理,
    • 故障管理
    • 性能和能力管理
    • 资源管理
    • 安全管理
  • 用户方的系统管理计划包括:

    • 帮助服务台
    • 用户参与服务级别管理
    • IT性能和可用性管理
    • 用户参与IT管理
    • 终端用户安全管理
    • 终端用户软件许可协议

10. 运作管理规章制度

  1. 与用户相关的IT支持作业方面的规范制度。 如日常作业调度手册、系统备份及恢复手册、性能监控及优化手册、输出管理手册、帮助服务台运作手册、常见故障处理方法、终端用户计算机使用制度。
  2. 由IT部门执行的以提供高质量IT服务为目的的管理流程。 如服务级别管理手册、安全管理制度、IT财务管理制度、IT服务计费几成本管理、IT资源及配置管理、新系统转换流程、IT能力规划管理。

11. 系统运作报告内容

  1. 系统日常操作日志;
  2. 性能能力规划报告;
  3. 故障管理报告;
  4. 安全审计日志。

12. IT组织的设计原则

  1. IT部门首先应设立清晰的远景目标。 一个简洁清晰的远景是IT管理框架的原动力,描述了IT部门在企业中的位置和贡献。
  2. 组织机构调整,清晰部门职责。 根据IT部门的服务内容重点的思考和划分部门职能,进行组织机构调整,清晰部门职责,做到重点业务突出,核心业务专人负责。
  3. 建立目标管理制度、项目管理制度。 使整个组织的目标能够落实和分解,建立有利于组织生产的项目管理体制。
  4. 建立现代人力资源管理体系。 作为组织机构调整、目标管理制度和项目管理体制的配套工程,建立科学的现代人力资源管理体系,特别是薪酬和考核体系。
  5. 通过薪酬和考核体系的建立,促进信息中心的绩效得以提高。
  6. IT组织的柔性化管理,能够较好的适应企业对IT服务的需求变更及技术发展。

13. IT组织设计需要考虑的因素

  1. 客户位置,是否需要本地帮助服务台、本地系统管理员或技术支持人员;如果实行远程管理IT服务的话,是否会拉开IT服务人员与客户之间的距离。
  2. IT员工工作地点。不同地点的员工是否存在沟通和协调困难;哪些职能可以集中化;哪些职能应该分散在不同位置(是否为客户安排本地系统管理员)。
  3. IT服务组织的规模。是否所有服务管理职能能够得到足够的支持,对所提供的服务而言这些职能是否都是必要的。
  4. IT基础架构的特性。组织支持单一的还是多厂商架构;为支持不同的硬件和软件,需要哪些专业技能;服务管理职能和角色能否根据单一平台划分。

14. IT组织和岗位职责设计

按IT管理的三个层次:IT战略规划、IT系统管理、IT技术管理及支持来进行IT组织及岗位职责设计。

  1. IT战略及投资管理。 由公司的高层、IT部门的主管及核心管理人员组成,主要职责是制定IT战略规划以及支撑业务发展,对重大IT投资项目予以评估决策。
  2. IT系统管理。 公司整个IT活动的管理,包括:IT财务管理、服务级别管理、IT资源管理、性能及能力管理、系统安全管理、新系统运行切换,从而保证高质量的为业务部门(客户)提供IT服务。
  3. IT技术及运作支持。 IT基础设施的建设及业务部门IT支持服务,包括:IT基础设施建设、IT日常作业管理、帮助服务台管理、故障管理及用户支持、性能和可用性保障。从而保证业务部门(客户)IT服务的可用性和持续性。

15. IT人员的教育与培训

IT部门的人力资源管理是从部门的人力资源规划及考核激励开始的,用于保障企业各IT活动的人员配备。

然而,在做好了IT部门的人力资源规划基础上,更为重要的是建设IT人员教育与培训体系以及为员工制度职业生涯发展规划,让员工与IT部门和企业共同成长。

16. 外包对企业的好处

  • 可以扬长避短,集中精力发展企业的核心业务;
  • 可以为企业节省人员开支;
  • 可以减少企业的人力资源管理成本;
  • 可以使企业获得更为专业,更为全面的热情服务。

17. 第三方外包的管理内容

  1. 外包商的选择;
  2. 外包合同的管理;
  3. 外包的风险控制。

18. 外包成功的关键因素

  • 良好的社会形象和信誉;
  • 相关行业经验丰富;
  • 能够引领或紧跟信息技术发展;
  • 具有良好的技术能力,经营管理能力,发展能力;
  • 加强战术和战略优势,建立长期战略关系;
  • 聚焦于战略思维,流程再造和管理的贸易伙伴关系。

19. 外包商的资格审查

  1. 技术能力: 外包商提供的信息技术产品是否具备创新性、开发性、安全性、兼容性,是否拥有较高的市场占有率,能否实现信息数据的共享;外包商是否具有信息技术方面的资格认证,如信息产业部颁发的系统集成商证书、认定的软件厂商证书等;外包商是否了解行业特点,能够拿出真正使适合本企业业务的解决方案;信息系统的设计方案中是否运用了稳定、成熟的信息技术,是否符合行业发展的要求,是否充分体现了以客户为中心的服务理念;是否具备对大型设备的运行、维护、管理经验和多系统整合能力;是否拥有对高新技术深入理解的技术专家和项目管理人员。
  2. 经营管理能力: 了解外包商的领导层结构、员工素质、客户数量、社会评价;项目管理水平,如软件工程工具、质量保证体系、成本控制、配置管理方法、管理和技术人员的老化率和流动率;是否具备能够证明其良好运营管理能力的成功案例;员工间是否具备团队合作精神;外包商客户的满意程度。
  3. 发展能力: 分析外包服务商以审计的财务报告、年度报告和其他各项财务指标,了解其盈利能力;考察外包企业从事外包业务的时间、市场份额以及波动因素;评价外包服务商的技术费用支出以及在信息技术领域内的产品创新,确定他们在技术方面的投资水平是否能够支持对企业的外包项目。

20. 外包合同管理

关键核心文件:服务等级协议(SLA)

21. 外包类型

根据客户与外包商建立的外包关系,可以将信息技术外包划分为:

  1. 市场关系外包:合同相对较短,可以更换外包商;
  2. 中间关系外包:维持合理的协议性,直至完成主要任务;
  3. 伙伴关系外包:合同反复签订,长期的互利关系。

22.外包风险控制

  1. 加强对外包合作的管理。 对于企业IT管理者而言,在签署外包合同之前应该谨慎而细致的考虑到外包合同的方方面面,在项目实施过程中,也要能够积极制定计划和处理随时出现的问题。使得外包合同能够不断适应变化,实现双赢局面。
  2. 对整个项目体系的规划。 企业必须对自身的需求和存在的问题非常清楚,从而协调好与外包商长期的合作关系,IT部门也要让员工积极的参与到外包项目中去,企业应该委派代表去参与完成项目。
  3. 对新技术敏感。 企业必须尽快掌握出现的新技术,并了解其潜在的应用,企业的IT部门应该注意供应商的技术简介、参加高技术研讨会,并了解组织现在采用的新技术的情况,不断评估组织的软硬件方案,弄清市场上同类产品的发展潜力。
  4. 不断学习。 企业IT部门应该在其内部倡导良好的学习氛围,以加快用户对持续变化的IT环境的适应速度。

23. 系统日常操作范围

  1. 性能和可用性保障: 减少故障时间,提高工作效率,有效控制成本。
  2. 系统作业调度: 统一协调,有利于业务支持。
  3. 帮助服务台: 全面用户支持解决方案。
  4. 输出管理: 确保适当的信息以适当的格式提供给全企业范围内的适当人员。
  5. 故障管理及用户支持。

24. IT在作业管理的问题上面临的两种挑战

  • 支持大量作业的巨型任务,通常会涉及多个系统或应用;
  • 对商业目标变化的快速响应。

25. 系统日常操作手册

  • 作业调度的时间
  • 优先级
  • 帮助服务台的请求
  • 服务流程
  • 性能的监控方法
  • 报告内容
  • 输出管理

26. 操作结果管理及改进内容

  1. 操作日志记录了足以形成数据的信息, 并为关键性的运作提供审核追踪记录,通过定期检查系统日志和其他审核跟踪记录来发现非正常操作和未经授权的访问。
  2. 进程安排报告用于追踪并衡量任务的完成非正常终止,特殊要求和紧急要求,以保障工作表现符合进程安排任务量中的规定。
  3. 利用工具(批处理和实时工具)来主动的监控、测量和报告系统的性能和容量(包括平均响应时间、每日交易数、停电、平均无故障时间、磁盘空间使用、网络性能),并且定期将包含有关性能、容量和可用性的数据的趋势报告提交给IT管理层。
  4. 故障报告应包括事故的原因、纠正措施、防范措施、违背服务标准的统计测量情况(处理中的问题、响应速度、问题类型、维修时间),并定期提交IT管理层。

27. 操作人员管理内容

  1. 识别系统日常操作的范围;
  2. 编写系统日常操作手册;
  3. 管理操作结果并予以改进;
  4. 加强操作人员的管理。

28. 操作人员管理注意事项

  • 清晰划分IT日常操作管理职能与其他的IT职能;
  • IT日常操作管理职能,应由专职部门执行;
  • IT操作人员完全了解自己的职务内容和职责,并得到了培训;
  • 人手足够;
  • 注意协作,沟通。

29. 身份管理的问题

  • 管理和维护困难;
  • 密码安全策略难以实施;
  • 用户使用不方便;
  • 安全问题发生后,难以追查到责任人。

30. 统一用户管理优点

  1. 用户使用更加方便;
  2. 安全控制力度得到加强;
  3. 减轻管理人员的负担;
  4. 安全性得到提高。

31. 企业用户管理的功能

  1. 用户账号管理:处理用户信息,统一的用户管理可以仅使用一个接口;用户的密码管理;配套正式流程。
  2. 用户权限管理:确定是否允许用户执行所请求操作的流程;用户授权;
  3. 企业外部用户管理:账号的分配、撤销权限管理问题;
  4. 用户安全审计:安全行为统计监控。

授权通常采用基于角色的访问控制(RBAC)

32. 用户安全审计方法

  1. 利用日志工具来检测和报告较差和易猜的密码;
  2. 定期检查和重新认证用户对系统的访问;
  3. 利用日志工具检测对网络或关键系统进行的反复的未授权访问;
  4. 对于所有系统主动限制、监测和审核超级用户(或系统管理员)的活动。

33. 用户安全管理审计功能

  1. 用户安全审计数据的收集,包括:抓取关于用户账号使用情况的数据;
  2. 保护用户安全审计数据,包括:使用时间戳、存储的完全性,防止数据的丢失;
  3. 用户安全审计数据分析,包括:检查、异常探测、违规分析、入侵分析。

34. 用户管理的方法

现代计算机常用的身份认证方式主要有:

  • 用户密码方式
  • IC卡认证
  • 动态密码
  • USB Key认证

35. 用户管理报告

  • 了解系统通常会发生什么;
  • 哪些资源是用户要访问的;
  • 什么时间是访问的高峰时段;
  • 例外情况处理:登录/访问时间地点异常、审核失败等。

36. IT计费管理目的

  • 迫使业务部门有效控制需求,降低TCO;
  • 助于IT财务重点关注不符合成本效益的服务项目。

37. 良好的收费内部核算体系

  1. 适当的核算收费政策;
  2. 可以准确公平的补偿提供服务所承担的成本;
  3. 树立IT服务与业务部门(客户)的态度,确保组织IT投资的回报;
  4. 考虑收费核算对IT服务的供应者与服务的使用者两方面的利益。

38. IT核算的目的

  • 优化IT服务供应者与使用者的行为
  • 最大化的实现组织的目标。

39. 计费定价方法

  1. 成本法服务价格已提供服务发生的成本为标准成本可以是总成本,包括这叫也可以是边际成本在线,有ID投资水平下,每增加一单位服务,是发生的成本
  2. 成本加成定价法:IT服务的价格统一提供服务的成分加成的定价方法,IT服务价格=IT服务成本X(1+X%);
  3. 现行价格法,参考现有组织内部其他各个部门之间或者外部的类似组织服务价格确定;
  4. 市场价格法,IT服务的价格按照外部市场供应的价格,确定IT服务的需求者可以与供应商校服价格进行谈判协商;
  5. 固定价格法,合同价格法,IT服务的价格是在与客户谈判的基础上由IT部门制定的,一般在一定时期内保持不变。

40. 成本核算最主要的工作

  • 定义成本要素;
  • 成本项目的进一步细分;

对IT部门而言,最理想的方法是按照服务要素结构定义成本要素结构。

资源管理

1. COBIT中定义的IT资源

  1. 数据。最广泛意义上的对象(外部和内部的)、结构及非结构化的、图像、各类数据;
  2. 应用系统。人工处理以及计算机程序的总和;
  3. 技术。包括硬件、操作系统、数据库管理系统、网络、多媒体;
  4. 设备。包括所拥有的支持信息系统的所有资源;
  5. 人员。包括员工技能,意识,以及计划、组织、获取、交付、支持、和监控信息系统及服务的能力。

2. 资产管理的价值

  • 整合IT资产管理及其部署;
  • 资产目录和发现;
  • 资产对账;
  • 软件许可管理;
  • 软硬件的维护、移植和处理;
  • IT财务管理。

3. IT资产管理内容

  1. 为所有的内外部资源(台式机、服务器、网络、存储设备)提供广泛的发现和性能分析功能,实现资源的合理使用和重部署;
  2. 提供整体软件许口管理(目录和使用),包括更复杂的数据库和分布式应用;
  3. 提供合同和厂商管理,可以减少文档工作,如核对发票、控制租赁协议、改进并简化谈判过程。
  4. 影响分析、成本分析和财政资产管理(包括ROI报表),为业务环境提供适应性支持,降低操作环境成本。

4. 配置管理

  • 配置管理是专门负责提供IT基础架构的配置及运行情况信息的流程。
  • 配置项:最基本的信息单元,所有软/硬件和各种文档;
  • 配置管理数据库CMDB:IT基础架构中特定组件的配置信息;各配置项相关关系的信息。

5. 配置管理作为一个控制中心,其主要目标表现在四个方面

  1. 计算所有IT资产;
  2. 为其他IT系统管理流程提供准确信息;
  3. 作为故障管理、变更管理和新系统转换的基础;
  4. 验证基础架构记录的正确性,并纠正发现的错误。

6. 通过实施配置管理流程,可为客户和服务提供方带来多方面的效益

  1. 有效管理IT组件;
  2. 提供高质量的IT服务;
  3. 更好地遵守法规;
  4. 帮助制定财务和费用计划。

7. 软件资源包括

  • 操作系统
  • 中间件
  • 市场上买来的应用
  • 本公司开发的应用
  • 分布式环境软件
  • 服务与计算机应用的软件以及所提供的服务

文档包括

  • 应用表格
  • 合同
  • 手册
  • 操作手册。

8. 企业网络资源

  1. 通信线路。企业网络传输介质目前常用的传输介质有双绞线同轴电缆、光纤;
  2. 通信服务。企业网络服务器,运行网络操作系统,提供硬盘、文件数据及打印机共享服务功能,是网络控制的核心。目前常见的网络服务器有:Netware、UNIX windows NT;
  3. 网络设备。主要有网络传输介质互联设备(T形连接器、调制解调器)、网络物理层互联设备(中继器、集线器)、网络连接层互联设备(网桥、交换器)、应用层互联设备(网关、多协议路由器);
  4. 网络软件。如网络控制软件、网络服务软件。

9. 网络维护管理的五大功能

  1. 网络的失效管理,
  2. 网络的配置管理,
  3. 网络的性能管理,
  4. 网络的安全管理,
  5. 网络的计费管理。

10. 网络维护管理系统的四个组成要素

  1. 若干被管理的代理
  2. 至少一个网络维护管理器
  3. 一个公共网络维护管理协议;
  4. 一种或多种管理信息库。

11. 网络维护管理协议内容

  • 网络维护管理器与被管理代理间的通信方法
  • 规定了管理信息库的存储结构
  • 信息库中关键字的含义以及各种事件的处理方法。

12. 网络管理协议

  • SNMP:简单网络管理协议;
  • CMIS/CMIP:通用管理信息服务/通用管理信息协议

13. 网络配置管理

  • 涉及网络设备的设置转换收集和修复;
  • 为了便于日常管理,一般采用网络设备配置图与连接图的方式,将整个系统的网络情况绘制成一张网络系统配置连接图;
  • 两种主要的网络配置工具:设备供应商提供的工具和第三方公司提供的工具。

14. 网络管理包含的五部分内容

  • 网络性能管理:衡量及利用网络性能,实现网络性能监控和优化。网络性能变量包括:网络吞吐量、用户的响应次数和线路利用。网络管理员通过对网络、系统产生的报表数据进行实时的分析和管理。
  • 网络设备和应用配置管理:监控网络和系统配额制信息,从而可以跟踪和管理各种版本的硬件和软件元素的网络操作。
  • 网络应用和计费管理:衡量网络利用、个人或小组网络活动,主要负责网络使用规则和账单等。
  • 网络设备和应用故障管理:负责监测、日志、通告用户、自动解决网络问题,以确保网络的高效运行。
  • 安全管理:控制网络资源访问权限,从而不会导致网络遭到破坏。只有被授权的用户才有权访问敏感信息。安全管理主要涉及访问控制或网络资源管理。访问控制管理是指安全性处理过程。即妨碍或促进用户或系统间的通讯,支持各种资源。认证过程,主要包括认证和自主访问控制两个步骤。

15. 网络管理系统包含

  • 探测器Probe(或代理),主要负责收集众多网络节点上的数据;
  • 控制台Console,主要负责集合并分析探测器收集的数据,提取有用信息的报告。

16. 网络审计支持

网络审计不管从审计软件和数据库方面都要利用安全技术,并建立一套安全机制,以保障网络设计的安全,对于安全机制主要包括三个方面:

  • 接入管理:接入管理主要用于处理好身份鉴别(身份真伪和权限)和接入控制,以控制信息资源的使用;
  • 安全建设:主要功能有安全报警设置、安全报警报告以及检查跟踪;
  • 安全恢复: 主要是及时恢复因网络故障而丢失的信息。

对于安全技术而言,主要可以使用防火墙、数据认证、数据加密技术;还可以将不断发展的新型安全技术应用于网络审计中,如将隧道技术应用于虚拟专用网(VPN)。

安全管理

1. 信息安全基本要素

  • 保密性:确保信息不暴露给未授权的实体,包括最小授权原则(只赋给使用者恰好够用的权限,防止其看到其他保密的数据)、防暴露(将物理数据库文件名和扩展名都修改为一串乱码,防止他人轻易找到复制)、信息加密、物理保密。
  • 完整性:保证数据传输过程中是正确无误的,接收和发送的数据相同,包括安全协议教、校验码、密码校验、数字签名,公证等手段。
  • 可用性:保证合法的用户能以合法的手段来访问数据,包括综合保障(IP过滤、业务流控制、路由选择控制、审计跟踪)。
  • 可控性:控制授权范围内的信息流向及行为方式,整个网络处于可控状态下。
  • 不可抵赖性: 信息数据参与者不能否认自己发送的数据,参与者身份真实有效。

2. 安全保护五个等级

  1. 用户自主保护级(第一级):对用户实施访问控制,使用护自己具备自主的安全保护能力。
  2. 系统审计保护级(第二级):审计跟踪日志,通过登录规程、审计与安全性相关的事件和隔离资源,使用户对自己的行为负责。
  3. 安全标记保护级(第三级):指定安全标记,提供有安全策略模型、数据标记,以及主体对客观体强制访问控制的非形式化描述;具有准确的标记输出信息的能力。
  4. 结构化保护级(第四级):将安全保护机制划分为关键部分和非关键部分。加强了鉴别机制,支持系统管理员和操作员的职能,提供可信设施管理,增强了配置管理控制。
  5. 访问验证保护级(第五级):增加了访问验证功能。

3. 信息系统的安全保障措施

  1. 安全策略:用于描述一个组织高层的安全目标,确定组织安全策略是一个组织实现安全管理和技术措施的前提。
  2. 安全组织: 安全组织作为安全工作的管理、实施和运行维护体系,主要负责安全策略、制度、规划的制定和实施等。
  3. 安全人员: 人是信息安全的核心,信息的建立和使用者都是人,不同级别的保障能力级别的信息系统对人员的可信度要求也不一样。
  4. 安全技术: 是信息系统里面部署的各类安全产品,属于技术类安全控制措施,不同保障能力级别的信息系统应选择具备不同安全保障能力级别的安全技术与产品。
  5. 安全运作:包括生命周期中各个安全环节的要求,包括安全服务的响应时间、安全工程的质量保证、安全培训力度。

4. 灾难恢复措施

  1. 灾难预防措施,做灾难恢复备份,自动备份系统的重要信息。
  2. 灾难演习制度,每过一段时间进行一次灾难演习,以熟练灾难恢复的操作过程。
  3. 灾难恢复,使用最近的一次备份进行灾难恢复,可分为两类:全盘恢复和个别文件恢复。

5. 备份策略

  • 完全备份,可将指定目录下载,所有数据都备份在磁盘或磁带中,占用比较大的磁盘空间。
  • 增量备份,仅对上一次备份(任意备份策略)后的数据的变动进行备份。
  • 差异备份,仅对上一次完全备份后的数据变动进行备份。

6. 风险管理

  • 项目风险是可能导致项目背离既定计划的不确定事件、不利事件和弱点。
  • 项目的风险管理包括:风险识别、风险分析(评估)、风险管理。
  • 风险管理是指识别、评估、降低风险到可以接受的程度,并实施适当机制控制风险,保持在此程度之内的过程。
  • 风险评估的目的是确定信息系统的安全保护等级以及信息系统在现有条件下的安全保障能力级别,进而确定信息系统的安全保护需求。
  • 风险管理则根据风险评估的结果,从管理(包括策略与组织)、技术、运行,三个层面采取相应的安全控制措施,提高信息系统的安全保障能力级别,使得信息系统的安全保障能力级别高于或者等于信息系统的安全保护等级。

7. 项目的风险管理内容

  1. 一个风险管理计划,至少应强调主要的项目风险(财务、进度、组织、业务调整)、潜在的风险影响、风险管理的可能的解决方案,降低风险的措施。
  2. 一个风险预防计划和应急计划,包括降低风险所必需的资源、时间和成本概算。
  3. 一各在整个项目周期内自始至终对风险进行测定、跟踪及报告的程序。
  4. 应急费用,并将其列入预算。

8. 控制风险

  1. 降低风险:降低风险发生的可能性及影响与安装防护措施;
  2. 避免风险:通过一定手段和措施避免风险的发生,如修改项目计划,放宽时间;
  3. 转嫁风险,将风险转接到第三方,如购买保险;
  4. 接受风险:高风险带来高收益,基于投入/产出的综合考虑。

9. 物理安全是信息安全的最基本保障,主要包括:

  • 环境安全;
  • 设施和设备安全;
  • 介质安全。

10. 健全的环境安全管理包括:

  1. 专门用来放置计算机设备的设施或房间;
  2. 对IT资产的恰当的环境保护,包括计算机设备、通信设备、个人计算机、局域网设备;
  3. 有效的环境控制机制,包括火灾探测和灭火系统、湿度控制系统、双层地板、隐藏的线路铺设、安全设置水管位置(远离敏感设备)、不间断电源和后备点力供应;
  4. 定期对计算机设备周边环境进行检查;
  5. 定期对环境保护措施进行测试;
  6. 定期接受消防管理部门的检查;
  7. 对检查中发现的问题进行处理的流程。

11. 设施和设备安全

设备的管理包括:购置、使用、维修和存储管理4个方面。

设备安全包括:防盗、防毁、防电磁信息辐射泄漏、防止线路截获、抗电磁干扰及电源保护。

采购装备安全设备时,应遵循的原则:

  1. 严禁采购和使用未经国家信息安全测评机构认可的其他信息安全产品;
  2. 尽量采用我国自主开发研制的信息安全技术和设备;
  3. 严禁直接采用境外密码设备;
  4. 必须采用境外信息安全产品时,该产品必须通过国家信息安全评测机构的认可;
  5. 严禁使用未经国家密码管理部门批准和未经国家信息安全质量认证的国内密码设备。

12. IDS入侵检测系统

IDS是实时监测和防止黑客入侵系统及网络资源的检测系统。主要包括:

  1. 监控中心;
  2. 基于网络的入侵检测器;
  3. 基于主机的入侵检测器;
  4. 人为漏洞检测器(误用检测)。

13. 介质安全

包括介质数据的安全及其本身的安全。常见的不安全情况:

  1. 损坏:自然灾害(地震、火灾、洪灾)、物理破坏(硬盘损坏、设备使用寿命到期、外力破损)、设备故障(停电断电、电磁干扰)。
  2. 泄漏;电子辐射(侦听微机操作过程)、乘机而入(合法用户进入安全进程后中途离开)、痕迹泄露(密码、密钥保密不善,被非法用户获得)。
  3. 意外失误:操作失误,意外疏漏,采取应付突发事件的计划来指导工作。

14. 容错方法

  1. 使用空闲备件:配置一个备用部件,平时处于空闲状态,当原部件出现错误时则取代原来部件的功能。
  2. 负载均衡:使两个部件共同承担一个任务,当其中的一个出现故障时,另一个就承担两个部件的全部负载。
  3. 镜像:两个部件执行完全相同的工作,当其中一个出现故障时,另一个则继续工作。
  4. 复现:也称为延迟镜像,即辅助系统从原系统接受数据时存在着延迟,原系统出现故障时,辅助系统就接替原系统的工作,但也相应存在着延时。
  5. 热可更换:某一部件出现故障时,可以立即拆除该部件并替换上一个好的部件,这样就不会导致系统瘫痪。

15. 信息系统的安全保障措施

  1. 健全的管理措施:建立健全的安全事件管理机构,明确人员的分工和责任。
  2. 灾难恢复措施:在系统正常运行时,就通过各种备份措施为灾害和故障做准备。
  3. 备份策略: 制定安全事件响应与处理计划及事件处理过程示意图,以便迅速恢复被破坏的系统。

16. 系统安全性保护措施

  1. 物理安全控制。物理安全控制是指为保证系统各种设备和环境设施的安全而采取的措施。
  2. 人员及管理控制。主要指用户合法身份的确认和检验,用户合法身份检验是防止有意或无意的非法进入系统的最常用的措施。
  3. 存取控制。通过用户鉴别,获得使用计算机权的用户,应根据预先定义好的用户权限进行存取,称为存取控制。
  4. 数据加密。 数据加密由加密(编码)和解密(解码)两部分组成。加密是将明文信息进行编码,使它转换成一种不可理解的内容,这种不可理解的内容成为密文。解密是加密的逆过程,即将密文还原成原来可以理解的形式。

17. 数据安全措施

  • 数据库安全;
  • 终端识别;
  • 文件备份;
  • 访问控制。

18. 访问控制

是指防止对计算机及计算机系统进行非授权访问的存取,主要采用两种方式实现:

  1. 限制访问系统的人员;
  2. 限制进入系统的用户所能做的操作。

前者通过用户识别与验证来实现,后者依靠存取控制实现。访问控制手段包括:用户识别代码、密码、登录控制、资源授权(用户配置文件、资源配置文件、控制列表)、授权核查、日志和审计。

访问控制主要包括六种类型:

  1. 防御型控制用于阻止不良事件的发生;
  2. 探测性控制用于探测已经发生的不良事件;
  3. 矫正型控制用于矫正已经发生的不良事件;
  4. 管理型控制用于管理系统的开发、维护和使用,针对系统的策略、规程、行为规范、个人的角色和义务、个人职能和人事安全决策。
  5. 技术型控制适用于为信息技术系统和应用提供自动保护的硬件和软件控制手段;
  6. 操作型控制是用于保护操作系统应用的日常规程和机制。

访问控制的手段可分为三个层次:物理类、管理类、技术类控制手段,每个层次又可分为防御型和探测型。

访问控制的手段分类说明

  1. 防御型控制
物理类控制手段 管理类控制手段 技术类控制手段
文书备份 安全知识培训 访问控制软件
围墙和栅栏 职务分离 防病毒软件
保安 职员雇佣手续 库代码控制系统
证件识别系统 职员离职手续 口令
加锁的门 监督管理 智能卡
双供电系统 灾难恢复和应急计划 加密
生物识别型门禁系统 计算机使用的登记 拨号访问控制和回叫系统
工作场所的选择
灭火系统
  1. 探测型控制
物理类控制手段 管理类控制手段 技术类控制手段
移动监测探头 安全评估和审计 日志审计
烟感和温感探头 性能评估 入侵探测系统
闭路监控 职务轮换
传感和报警系统 背景调查

19. 运行管理:

  1. 出入管理:根据安全总局和涉密范围进行分区控制;对机房和区域的进出口进行严格控制。
  2. 终端管理:目的是增强对终端用户管理的有效性;提高终端用户的满意度;降低系统运营管理成本;提升企业竞争力。终端管理包括 3 个模块:事件管理、配置管理、软件分发。
  3. 信息管理: 对信息提供信息分类和信息控制,将所有的抽象的信息记录下来并存档。

20. 防犯罪管理

主要威胁:

  • 在已授权的情况下,对网络设备及信息资源进行非正常使用或越权使用;
  • 利用各种假冒或欺骗的手段,非法获取合法用户的使用权限;
  • 使用非法手段篡改计算机系统的数据或程序;
  • 改变系统的正常运行方法,减慢系统的响应时间,甚至于破坏计算机系统线路窃听。

21. 禁止使用国外密码算法和安全产品

国家明确规定严格禁止直接使用国外的密码算法和安全产品,这主要有两个原因:

  • 一是国外禁止出口密码算法和产品,所谓出口的安全的密码算法,国外都有破译手段;
  • 二是恐怕国外的算法或产品中存在“后门”,关键时刻危害我国安全。

22. 网络安全产品

  • WEB应用防火墙;
  • 入侵检测系统;
  • 防病毒软件;
  • 备份/恢复技术。

性能和能力管理

系统维护、运行和评价

Sublime text 4的设置

  • 让状态栏显示文档编码: show_encoding设置为true;
  • 在状态栏中显示行结尾形式:"show_line_endings": true;
  • 在检测不到文档编码时默认以什么编码打开:"fallback_encoding": "Chinese (GB18030)";
  • 在查找后不要关闭查找工具条:"close_find_after_find_all": false;
  • 在替换所有后不要关闭查找工具条:"close_find_after_replace_all": false;
1
2
3
4
5
6
7
8
9
10
11
12
{
"ignored_packages":
[
"Vintage",
],
"show_encoding": true,
"show_line_endings": true,
"fallback_encoding": "Chinese (GB18030)",
"close_find_after_find_all": false,
"close_find_after_replace_all": false,
}

Ubuntu Server 常用管理

1.重启网络服务:

sudo /etc/init.d/networking restart

或者:

service networking restart

2.设置Nameserver(2种方法):

  • 修改/etc/resolv.conf,但此文件会被resolvconf重写,故应该修改resolvconf配置文件/etc/resolvconf/resolv.conf.d/head, 增加:nameserver 202.96.209.133
  • 修改/etc/network/interfaces,DNS对应的参数名为dns-nameservers,这里设置的优先级比上一种方法高。如果两种方法都设置了,则都会出现在/etc/resolv.conf中。

3.将用户加入 group:

usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组)
如:usermod -G git git (git只属于git组)

usermod -a -G groupname username (把用户添加到这个组,之前所属组不影响)
如:usermod -a -G www git (git属于之前git组,也属于www组)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
xxx@xxxx:~$ cat /etc/group|grep user1
user1:x:999:user1
xxx@xxxx:~$ cat /etc/group|grep sudo
sudo:x:27:
xxx@xxxx:~$ usermod -G 27 user1
xxx@xxxx:~$ cat /etc/group|grep sudo
sudo:x:27:user1
xxx@xxxx:~$ cat /etc/group|grep user1
user1:x:999:
xxx@xxxx:~$ usermod -a -G 999 user1
xxx@xxxx:~$ cat /etc/group|grep user1
user1:x:999:user1
xxx@xxxx:~$ cat /etc/group|grep sudo
sudo:x:27:user1
1
xxx@xxxx:~$ useradd -r -m -s /bin/bash -G 27 test1 

4.修改时区和时间:

  1. 首先查看时区:

    1
    2
    redtux@redtux-PC:~$ date -R
    Thu, 31 May 2018 00:03:22 +0800
  2. 修改时区,执行sudo tzselect,按提示选择时区.

  3. 复制文件到/etc目录下 sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  4. 更新时间 sudo ntpdate time.windows.com

5.搜索文件夹并删除

1
find ./* -name "@eaDir" -type d -print0 | xargs -0 rm -rf

6.gdisk硬盘分区工具

gdisk是fdisk分区工具的GPT版,MBR分区格式只能支持最大2T的硬盘,大于2T的硬盘必须采用GPT格式,gdisk就是针对GPT格式的升级版。

gdisk

  -l /dev/sdX 查看分区信息

gdisk

  (?|m) 帮助

  n 建立分区

  d 删除分区

  c 更改分区名字

  I 显示分区的详细信息

  p 显示分区信息

  t 转换分区类型

  a 将指定分区设置/取消 活动分区

  l 查看分区类型

  o 重建分区表

  v 验证分区表,显示剩余没有被分区划分的扇区数量

  q 退出不保存,不保存,所有的修改都不生效

  w 退出并保存

执行gdisk /dev/sdx对sdx硬盘进行编辑,分区表编辑完成保存后,需要重新启动系统,否则系统内核还不知道硬盘分区已经改变了,这个时候你ls /dev/sd*查看到的分区情况还是编辑之前的。或者可以先执行partprobe命令试一下看系统是否检测到硬盘分区的变化。

7.blkid 列出所有分区的uuid

硬盘根据插拔接口顺序不同可能是sda,也可能是sdb,这样重启后会不能正确的挂载所有的硬盘,为解决这个问题,UUID被文件系统设计者采用,使其可以持久唯一标识一个硬盘分区。其实方式很简单,就是在文件系统的超级块中使用128位存放UUID。这个UUID是在使用文件系统格式化分区时计算生成的,例如Linux下的文件系统工具mkfs就在格式化分区的同时,生成UUID并把它记录到超级块的固定区域中。

使用mkfs对分区格式化后,会显示分区的uuid,如果我们没有记录下来后面怎么查呢,这个就要用到blkid工具了,他可以列出系统中所有硬盘分区的uuid。

8.rsync 远程同步工具

rsync 是一个常用的 Linux 应用程序,用于文件同步。

它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代cp和mv命令。

它名称里面的r指的是 remote,rsync 其实就是”远程同步”(remote sync)的意思。与其他文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。

用法参考文章

-r 参数

本机使用 rsync 命令时,可以作为cp和mv命令的替代方法,将源目录同步到目标目录。

1
$ rsync -r source destination

上面命令中,-r表示递归,即包含子目录。注意,-r是必须的,否则 rsync 运行不会成功。source目录表示源目录,destination表示目标目录。

如果有多个文件或目录需要同步,可以写成下面这样。

1
$ rsync -r source1 source2 destination

上面命令中,source1、source2都会被同步到destination目录。

-a 参数

-a参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新,所以-a比-r更有用。下面的用法才是常见的写法。

1
$ rsync -a source destination

目标目录destination如果不存在,rsync 会自动创建。执行上面的命令后,源目录source被完整地复制到了目标目录destination下面,即形成了destination/source的目录结构。

如果只想同步源目录source里面的内容到目标目录destination,则需要在源目录后面加上斜杠。

1
$ rsync -a source/ destination

上面命令执行后,source目录里面的内容,就都被复制到了destination目录里面,并不会在destination下面创建一个source子目录。

-n 参数

如果不确定 rsync 执行后会产生什么结果,可以先用-n或–dry-run参数模拟执行的结果。

1
$ rsync -anv source/ destination

上面命令中,-n参数模拟命令执行的结果,并不真的执行命令。-v参数则是将结果输出到终端,这样就可以看到哪些内容会被同步。

–delete 参数

默认情况下,rsync 只确保源目录的所有内容(明确排除的文件除外)都复制到目标目录。它不会使两个目录保持相同,并且不会删除文件。如果要使得目标目录成为源目录的镜像副本,则必须使用–delete参数,这将删除只存在于目标目录、不存在于源目录的文件。

1
$ rsync -av --delete source/ destination

上面命令中,–delete参数会使得destination成为source的一个镜像。

–exclude 参数

有时,我们希望同步时排除某些文件或目录,这时可以用–exclude参数指定排除模式。

1
2
3
$ rsync -av --exclude='*.txt' source/ destination
# 或者
$ rsync -av --exclude '*.txt' source/ destination

上面命令排除了所有 TXT 文件。

注意,rsync 会同步以”点”开头的隐藏文件,如果要排除隐藏文件,可以这样写–exclude=”.*”。

如果要排除某个目录里面的所有文件,但不希望排除目录本身,可以写成下面这样。

1
$ rsync -av --exclude 'dir1/*' source/ destination

多个排除模式,可以用多个–exclude参数。

1
$ rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination

多个排除模式也可以利用 Bash 的大扩号的扩展功能,只用一个–exclude参数。

1
$ rsync -av --exclude={'file1.txt','dir1/*'} source/ destination

如果排除模式很多,可以将它们写入一个文件,每个模式一行,然后用–exclude-from参数指定这个文件。

1
$ rsync -av --exclude-from='exclude-file.txt' source/ destination

–include 参数

–include参数用来指定必须同步的文件模式,往往与–exclude结合使用。

1
$ rsync -av --include="*.txt" --exclude='*' source/ destination

上面命令指定同步时,排除所有文件,但是会包括 TXT 文件。

增量备份

rsync 的最大特点就是它可以完成增量备份,也就是默认只复制有变动的文件。

除了源目录与目标目录直接比较,rsync 还支持使用基准目录,即将源目录与基准目录之间变动的部分,同步到目标目录。

具体做法是,第一次同步是全量备份,所有文件在基准目录里面同步一份。以后每一次同步都是增量备份,只同步源目录与基准目录之间有变动的部分,将这部分保存在一个新的目标目录。这个新的目标目录之中,也是包含所有文件,但实际上,只有那些变动过的文件是存在于该目录,其他没有变动的文件都是指向基准目录文件的硬链接。

–link-dest参数用来指定同步时的基准目录。

1
$ rsync -a --delete --link-dest /compare/path /source/path /target/path

上面命令中,–link-dest参数指定基准目录/compare/path,然后源目录/source/path跟基准目录进行比较,找出变动的文件,将它们拷贝到目标目录/target/path。那些没变动的文件则会生成硬链接。这个命令的第一次备份时是全量备份,后面就都是增量备份了。

下面是一个脚本示例,备份用户的主目录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash

# A script to perform incremental backups using rsync

set -o errexit
set -o nounset
set -o pipefail

readonly SOURCE_DIR="${HOME}"
readonly BACKUP_DIR="/mnt/data/backups"
readonly DATETIME="$(date '+%Y-%m-%d_%H:%M:%S')"
readonly BACKUP_PATH="${BACKUP_DIR}/${DATETIME}"
readonly LATEST_LINK="${BACKUP_DIR}/latest"

mkdir -p "${BACKUP_DIR}"

rsync -av --delete \
"${SOURCE_DIR}/" \
--link-dest "${LATEST_LINK}" \
--exclude=".cache" \
"${BACKUP_PATH}"

rm -rf "${LATEST_LINK}"
ln -s "${BACKUP_PATH}" "${LATEST_LINK}"

上面脚本中,每一次同步都会生成一个新目录${BACKUP_DIR}/${DATETIME},并将软链接${BACKUP_DIR}/latest指向这个目录。下一次备份时,就将${BACKUP_DIR}/latest作为基准目录,生成新的备份目录。最后,再将软链接${BACKUP_DIR}/latest指向新的备份目录。

Udisk 管理工具

udisksctl: The udisks command line tool

udisksctl status
udisksctl info {–object-path OBJECT | –block-device DEVICE | –drive DRIVE}
udisksctl mount {–object-path OBJECT | –block-device DEVICE} [–filesystem-type TYPE] [–options OPTIONS…] [–no-user-interaction]
udisksctl unmount {–object-path OBJECT | –block-device DEVICE} [–force] [–no-user-interaction]
udisksctl unlock {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction] [–key-file PATH] [–read-only]
udisksctl lock {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction]
udisksctl loop-setup –file PATH [–read-only] [–offset OFFSET] [–size SIZE] [–no-user-interaction]
udisksctl loop-delete {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction]
udisksctl power-off {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction]
udisksctl smart-simulate –file PATH {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction]
udisksctl monitor
udisksctl dump
udisksctl help

命令手册

完全卸载U盘

1
udisksctl power-off --block-device /dev/sdx

自建Nextcloud私有云盘

安装

从Nextcloud官方网站下载server的安装包,复制到/var/www目录解压。

详细安装过程参考官方文档

1、按照官方文档安装完善php模块

必须要安装的模块

  • PHP (see System requirements for a list of supported versions)

  • PHP module ctype

  • PHP module curl

  • PHP module dom

  • PHP module fileinfo (included with PHP)

  • PHP module filter (only on Mageia and FreeBSD)

  • PHP module GD

  • PHP module hash (only on FreeBSD)

  • PHP module JSON (included with PHP >= 8.0)

  • PHP module libxml (Linux package libxml2 must be >=2.7.0)

  • PHP module mbstring

  • PHP module openssl (included with PHP >= 8.0)

  • PHP module posix

  • PHP module session

  • PHP module SimpleXML

  • PHP module XMLReader

  • PHP module XMLWriter

  • PHP module zip

  • PHP module zlib

选择合适的数据库模块:

  • PHP module pdo_sqlite (>= 3, usually not recommended for performance reasons)

  • PHP module pdo_mysql (MySQL/MariaDB)

  • PHP module pdo_pgsql (PostgreSQL)

推荐安装的模块:

  • PHP module bz2 (recommended, required for extraction of apps)

  • PHP module intl (increases language translation performance and fixes sorting of non-ASCII characters)

2、Apache配置文件

新增配置文件vim /etc/apache2/sites-available/nextcloud.conf,复制以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost *:80>
DocumentRoot /var/www/nextcloud/
ServerName your.server.com

<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews

<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>

保存,然后运行:

1
a2ensite nextcloud.conf

启用必要的Apache模块:

1
2
3
4
5
6
a2enmod rewrite

a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime

If you’re running mod_fcgi instead of the standard mod_php also enable:

1
a2enmod setenvif

最后重启Apache:

1
service apache2 restart

现在就可以访问http://your.server.com安装Nextcloud。

Redis缓存配置

修改配置文件nextcloud/config/config.php

Small/Private home server

Only use APCu:

1
'memcache.local' => '\OC\Memcache\APCu',

Organizations with single-server

Use Redis for everything except local memcache:

1
2
3
4
5
6
7
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
],

Organizations with clustered setups

Use APCu for local cache and either Redis cluster …:

1
2
3
4
5
6
7
8
9
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis.cluster' => [
'seeds' => [ // provide some/all of the cluster servers to bootstrap discovery, port required
'cache-cluster:7000',
'cache-cluster:7001',
],
]

APCu is disabled by default on CLI which could cause issues with nextcloud’s cron jobs. Please make sure you set the apc.enable_cli to 1 on your php.ini config file or append --define apc.enable_cli=1 to the cron job call.

1
vim /etc/php/8.1/cli/php.ini

在末尾添加apc.enable_cli=1,否则当你运行occ命令的时候也会提示你APCu不可用。

OCC命令的使用

直接运行occ命令,不带任何选项,就会列出occ命令的所有可用的选项和用法:

1
sudo -u www-data php8.1 /var/www/nextcloud/occ

返回信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
Nextcloud 24.0.12

Usage:
command [options] [arguments]

Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--no-warnings Skip global warnings, show command output only
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
check check dependencies of the server environment
help Display help for a command
list List commands
status show some status information
upgrade run upgrade routines after installation of a new release. The release has to be installed before.
activity
activity:send-mails Sends the activity notification mails
app
app:check-code check code to be compliant
app:disable disable an app
app:enable enable an app
app:getpath Get an absolute path to the app directory
app:install install an app
app:list List all available apps
app:remove remove an app
app:update update an app or all apps
background
background:ajax Use ajax to run background jobs
background:cron Use cron to run background jobs
background:webcron Use webcron to run background jobs
background-job
background-job:execute Execute a single background job manually
broadcast
broadcast:test test the SSE broadcaster
circles
circles:check Checking your configuration
circles:maintenance Clean stuff, keeps the app running
circles:manage:config edit config/type of a Circle
circles:manage:create create a new circle
circles:manage:destroy destroy a circle by its ID
circles:manage:details get details about a circle by its ID
circles:manage:edit edit displayName or description of a Circle
circles:manage:join emulate a user joining a Circle
circles:manage:leave simulate a user joining a Circle
circles:manage:list listing current circles
circles:manage:setting edit setting for a Circle
circles:members:add Add a member to a Circle
circles:members:details get details about a member by its ID
circles:members:level Change the level of a member from a Circle
circles:members:list listing Members from a Circle
circles:members:remove remove a member from a circle
circles:members:search Change the level of a member from a Circle
circles:memberships index and display memberships for local and federated users
circles:remote remote features
circles:shares:files listing shares files
circles:sync Sync Circles and Members
circles:test testing some features
config
config:app:delete Delete an app config value
config:app:get Get an app config value
config:app:set Set an app config value
config:import Import a list of configs
config:list List all configs
config:system:delete Delete a system config value
config:system:get Get a system config value
config:system:set Set a system config value
dav
dav:create-addressbook Create a dav addressbook
dav:create-calendar Create a dav calendar
dav:delete-calendar Delete a dav calendar
dav:list-calendars List all calendars of a user
dav:move-calendar Move a calendar from an user to another
dav:remove-invalid-shares Remove invalid dav shares
dav:retention:clean-up
dav:send-event-reminders Sends event reminders
dav:sync-birthday-calendar Synchronizes the birthday calendar
dav:sync-system-addressbook Synchronizes users to the system addressbook
db
db:add-missing-columns Add missing optional columns to the database tables
db:add-missing-indices Add missing indices to the database tables
db:add-missing-primary-keys Add missing primary keys to the database tables
db:convert-filecache-bigint Convert the ID columns of the filecache to BigInt
db:convert-mysql-charset Convert charset of MySQL/MariaDB to use utf8mb4
db:convert-type Convert the Nextcloud database to the newly configured one
encryption
encryption:change-key-storage-root Change key storage root
encryption:decrypt-all Disable server-side encryption and decrypt all files
encryption:disable Disable encryption
encryption:enable Enable encryption
encryption:encrypt-all Encrypt all files for all users
encryption:list-modules List all available encryption modules
encryption:migrate-key-storage-format Migrate the format of the keystorage to a newer format
encryption:set-default-module Set the encryption default module
encryption:show-key-storage-root Show current key storage root
encryption:status Lists the current status of encryption
federation
federation:sync-addressbooks Synchronizes addressbooks of all federated clouds
files
files:cleanup cleanup filecache
files:recommendations:recommend
files:repair-tree Try and repair malformed filesystem tree structures
files:scan rescan filesystem
files:scan-app-data rescan the AppData folder
files:transfer-ownership All files and folders are moved to another user - outgoing shares and incoming user file shares (optionally) are moved as well.
files_external
files_external:applicable Manage applicable users and groups for a mount
files_external:backends Show available authentication and storage backends
files_external:config Manage backend configuration for a mount
files_external:create Create a new mount configuration
files_external:delete Delete an external mount
files_external:export Export mount configurations
files_external:import Import mount configurations
files_external:list List configured admin or personal mounts
files_external:notify Listen for active update notifications for a configured external mount
files_external:option Manage mount options for a mount
files_external:verify Verify mount configuration
group
group:add Add a group
group:adduser add a user to a group
group:delete Remove a group
group:info Show information about a group
group:list list configured groups
group:removeuser remove a user from a group
integrity
integrity:check-app Check integrity of an app using a signature.
integrity:check-core Check integrity of core code using a signature.
integrity:sign-app Signs an app using a private key.
integrity:sign-core Sign core using a private key.
l10n
l10n:createjs Create javascript translation files for a given app
log
log:file manipulate logging backend
log:manage manage logging configuration
log:tail Tail the nextcloud logfile
log:watch Watch the nextcloud logfile
maintenance
maintenance:data-fingerprint update the systems data-fingerprint after a backup is restored
maintenance:mimetype:update-db Update database mimetypes and update filecache
maintenance:mimetype:update-js Update mimetypelist.js
maintenance:mode set maintenance mode
maintenance:repair repair this installation
maintenance:repair-share-owner repair invalid share-owner entries in the database
maintenance:theme:update Apply custom theme changes
maintenance:update:htaccess Updates the .htaccess file
notification
notification:generate Generate a notification for the given user
notification:test-push Generate a notification for the given user
preview
preview:repair distributes the existing previews into subfolders
preview:reset-rendered-texts Deletes all generated avatars and previews of text and md files
security
security:bruteforce:reset resets bruteforce attemps for given IP address
security:certificates list trusted certificates
security:certificates:import import trusted certificate in PEM format
security:certificates:remove remove trusted certificate
serverinfo
serverinfo:update-storage-statistics Triggers an update of the counts related to storages used in serverinfo
sharing
sharing:cleanup-remote-storages Cleanup shared storage entries that have no matching entry in the shares_external table
sharing:expiration-notification Notify share initiators when a share will expire the next day.
support
support:report Generate a system report
tag
tag:add Add new tag
tag:delete delete a tag
tag:edit edit tag attributes
tag:list list tags
text
text:reset Reset a text document
theming
theming:config Set theming app config values
trashbin
trashbin:cleanup Remove deleted files
trashbin:expire Expires the users trashbin
trashbin:restore Restore all deleted files
trashbin:size Configure the target trashbin size
twofactorauth
twofactorauth:cleanup Clean up the two-factor user-provider association of an uninstalled/removed provider
twofactorauth:disable Disable two-factor authentication for a user
twofactorauth:enable Enable two-factor authentication for a user
twofactorauth:enforce Enabled/disable enforced two-factor authentication
twofactorauth:state Get the two-factor authentication (2FA) state of a user
update
update:check Check for server and app updates
user
user:add adds a user
user:add-app-password Add app password for the named user
user:delete deletes the specified user
user:disable disables the specified user
user:enable enables the specified user
user:info show user info
user:lastseen shows when the user was logged in last time
user:list list configured users
user:report shows how many users have access
user:resetpassword Resets the password of the named user
user:setting Read and modify user settings
versions
versions:cleanup Delete versions
versions:expire Expires the users file versions
workflows
workflows:list Lists configured workflows

扫描所有用户文件更新:

1
sudo -u www-data php8.1 /var/www/nextcloud/occ files:scan --all

扫描特定用户文件更新:

1
sudo -u www-data php8.1 /var/www/nextcloud/occ files:scan username

扫描特定目录文件更新:

1
sudo -u www-data php8.1 /var/www/nextcloud/occ files:scan --path=/path/to/scan

后台服务优化

后台服务有三种方式:AJAX,Webcron,Cron

systemd

If systemd is installed on the system, a systemd timer could be an alternative to a cronjob.

This approach requires two files: nextcloudcron.service and nextcloudcron.timer. Create these two files in /etc/systemd/system/.

nextcloudcron.service should look like this:

1
2
3
4
5
6
7
[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

Replace the user www-data with the user of your http server and /var/www/nextcloud/cron.php with the location of cron.php in your nextcloud directory.

The KillMode=process setting is necessary for external programs that are started by the cron job to keep running after the cron job has finished.

Note that the .service unit file does not need an [Install] section. Please check your setup because we recommended it in earlier versions of this admin manual.

nextcloudcron.timer should look like this:

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

The important parts in the timer-unit are OnBootSec and OnUnitActiveSec. OnBootSec will start the timer 5 minutes after boot, otherwise you would have to start it manually after every boot. OnUnitActiveSec will set a 5 minute timer after the service-unit was last activated.

Now all that is left is to start and enable the timer by running this command:

1
systemctl enable --now nextcloudcron.timer

When the option --now is used with enable, the respective unit will also be started.

客户端下载

直接从这里下载https://download.nextcloud.com/desktop/releases/

Microsoft Office及Windows的KMS激活步骤

Docker 部署KMS 服务器

Docker镜像地址: https://hub.docker.com/r/mogeko/vlmcsd

此程序的单独地址: https://github.com/Wind4/vlmcsd

部署KMS服务器,使用Docker ,端口为 1688。

1
# docker run -d -p 1688:1688 --restart=always --name vlmcsd mikolatero/vlmcsd
1
2
3
4
5
6
7
docker logs vlmcsd

2019-07-27 08:14:00: Listening on [::]:1688

2019-07-27 08:14:00: Listening on 0.0.0.0:1688

2019-07-27 08:14:00: vlmcsd svn1112-2-gf1a3c7f, built 2019-07-26 18:11:51 UTC started successfully

查看日志,确定正常工作。

Microsoft Office KMS激活步骤:

  1. 以管理员用户打开命令行工具;
  2. 切换到office的安装目录,例如office2016安装路径为C:\\Program Files\\Microsoft Office\\Office16
  3. 设置kms服务器:cscript ospp.vbs /sethst:[kms.03k.org](http://kms.03k.org),返回信息;
1
2
3
4
5
6
7
8
9
10
---Processing--------------------------

---------------------------------------

Successfully applied setting.

---------------------------------------

---Exiting-----------------------------

  1. 激活office:`cscript ospp.vbs /act`。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

---Processing--------------------------

---------------------------------------

Installed product key detected - attempting to activate the following product:

SKU ID: d450596f-894d-49e0-966a-fd39ed4c4c64

LICENSE NAME: Office 16, Office16ProPlusVL_KMS_Client edition

LICENSE DESCRIPTION: Office 16, VOLUME_KMSCLIENT channel

Last 5 characters of installed product key: WFG99

<Product activation successful>

---------------------------------------

---------------------------------------

---Exiting-----------------------------

Microsoft Windows KMS激活步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 卸载已安装密钥
slmgr.vbs /upk

# 安装需要激活的版本密钥
# 这里以专业版为例,Windows 10 和 11 通用
# 更多版本的系统密钥见下文
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX

# 设置 KMS 激活服务器
# 请将 192.168.7.186 替换为实际 KMS 服务器网址或 IP
slmgr /skms 192.168.7.186

# 激活
slmgr /ato

所有WINDOWS版本的GVLK密钥对照表

最新的参看微软官方网站

GVLK密钥是专门用于KMS激活的密钥,如果想使用KMS激活,那么必须先将系统的KEY替换为对应版本的GVLK密钥。

KMS不仅可以激活Windows 8、Windows 8.1和Windows 7、Windows 10这类我们常用的系统,还可以激活各种版本的Windows Server系统。

以下是GVLK密钥版本对照表,可配合KMS服务器进行使用。

WINDOWS SERVER 半年频道版本

Windows Server 版本 1909、版本1903 和版本 1809

操作系统版本 KMS 客户端安装程序密钥
Windows Server Datacenter 6NMRW-2C8FM-D24W7-TQWMY-CWH2D
Windows Server Standard N2KJX-J94YW-TQVFB-DG9YT-724CC

WINDOWS SERVER LTSC/LTSB 版本

Windows Server 2019

操作系统版本 KMS 客户端安装程序密钥
Windows Server 2019 Datacenter WMDGN-G9PQG-XVVXX-R3X43-63DFG
Windows Server 2019 Standard N69G4-B89J2-4G8F4-WWYCC-J464C
Windows Server 2019 Essentials WVDHN-86M7X-466P6-VHXV7-YY726

Windows Server 2016

操作系统版本 KMS 客户端安装程序密钥
Windows Server 2016 Datacenter CB7KF-BWN84-R7R2Y-793K2-8XDDG
Windows Server 2016 Standard WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY
Windows Server 2016 Essentials JCKRF-N37P4-C2D82-9YXRT-4M63B

WINDOWS 10,所有支持的半年频道版本

有关受支持的版本和服务终止日期的信息,请参阅 Windows 生命周期情况说明书。

操作系统版本 KMS 客户端安装程序密钥
Windows 10 专业版 W269N-WFGWX-YVC9B-4J6C9-T83GX
Windows 10 专业版 N MH37W-N47XK-V7XM9-C7227-GCQG9
Windows 10 专业工作站版 NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J
Windows 10 专业工作站版 N 9FNHH-K3HBT-3W4TD-6383H-6XYWF
Windows 10 专业教育版 6TP4R-GNPTD-KYYHQ-7B7DP-J447Y
Windows 10 专业教育版 N YVWGF-BXNMC-HTQYQ-CPQ99-66QFC
Windows 10 教育版 NW6C2-QMPVW-D7KKK-3GKT6-VCFB2
Windows 10 教育版 N 2WH4N-8QGBV-H22JP-CT43Q-MDWWJ
Windows 10 企业版 NPPR9-FWDCX-D2C8J-H872K-2YT43
Windows 10 企业版 N DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4
Windows 10 企业版 G YYVX9-NTFWV-6MDM3-9PT4T-4M68B
Windows 10 企业版 G N 44RPN-FTY23-9VTTB-MP9BX-T84FV

WINDOWS 10 LTSC/LTSB 版本

Windows 10 LTSC 2019

操作系统版本 KMS 客户端安装程序密钥
Windows 10 企业版 LTSC 2019 M7XTQ-FN8P6-TTKYV-9D4CC-J462D
Windows 10 企业版 N LTSC 2019 92NFX-8DJQP-P6BBQ-THF9C-7CG2H

Windows 10 LTSB 2016

操作系统版本 KMS 客户端安装程序密钥
Windows 10 企业版 LTSB 2016 DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ
Windows 10 企业版 N LTSB 2016 QFFDN-GRT3P-VKWWX-X7T3R-8B639

Windows 10 LTSB 2015

操作系统版本 KMS 客户端安装程序密钥
Windows 10 企业版 2015 LTSB WNMTR-4C88C-JK8YV-HQ7T2-76DF9
Windows 10 企业版 2015 LTSB N 2F77B-TNFGY-69QQF-B8YKP-D69TJ

早期版本的 WINDOWS SERVER

Windows Server 版本 1803

操作系统版本 KMS 客户端安装程序密钥
Windows Server Datacenter 2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG
Windows Server Standard PTXN8-JFHJM-4WC78-MPCBR-9W4KR

Windows Server 版本 1709

操作系统版本 KMS 客户端安装程序密钥
Windows Server Datacenter 6Y6KB-N82V8-D8CQV-23MJW-BWTG6
Windows Server Standard DPCNP-XQFKJ-BJF7R-FRC8D-GF6G4

Windows Server 2012 R2

操作系统版本 KMS 客户端安装程序密钥
Windows Server 2012 R2 Server Standard D2N9P-3P6X9-2R39C-7RTCD-MDVJX
Windows Server 2012 R2 Datacenter W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9
Windows Server 2012 R2 Essentials KNC87-3J2TX-XB4WP-VCPJV-M4FWM

Windows Server 2012

操作系统版本 KMS 客户端安装程序密钥
Windows Server 2012 BN3D2-R7TKB-3YPBD-8DRP2-27GG4
Windows Server 2012 N 8N2M2-HWPGY-7PGT9-HGDD8-GVGGY
Windows Server 2012 单语言版 2WN2H-YGCQR-KFX6K-CD6TF-84YXQ
Windows Server 2012 特定国家/地区版 4K36P-JN4VD-GDC6V-KDT89-DYFKP
Windows Server 2012 Server 标准版 XC9B7-NBPP2-83J2H-RHMBY-92BT4
Windows Server 2012 MultiPoint 标准版 HM7DN-YVMH3-46JC3-XYTG7-CYQJJ
Windows Server 2012 MultiPoint 高级版 XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G
Windows Server 2012 Datacenter 48HP8-DN98B-MYWDG-T2DCC-8W83P

Windows Server 2008 R2

操作系统版本 KMS 客户端安装程序密钥
Windows Server 2008 R2 Web 版 6TPJF-RBVHG-WBW2R-86QPH-6RTM4
Windows Server 2008 R2 HPC 版 TT8MH-CG224-D3D7Q-498W2-9QCTX
Windows Server 2008 R2 标准版 YC6KT-GKW9T-YTKYR-T4X34-R7VHC
Windows Server 2008 R2 企业版 489J6-VHDMP-X63PK-3K798-CPX3Y
Windows Server 2008 R2 Datacenter 74YFP-3QFB3-KQT8W-PMXWJ-7M648
面向基于 Itanium 系统的 Windows Server 2008 R2 GT63C-RJFQ3-4GMB6-BRFB9-CB83V

Windows 2008 Server

操作系统版本 KMS 客户端安装程序密钥
Windows Web Server 2008 WYR28-R7TFJ-3X2YQ-YCY4H-M249D
Windows Server 2008 标准版 TM24T-X9RMF-VWXK6-X8JC9-BFGM2
不带 Hyper-V 的 Windows Server 2008 标准版 W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ
Windows Server 2008 企业版 YQGMW-MPWTJ-34KDK-48M3W-X4Q6V
不带 Hyper-V 的 Windows Server 2008 企业版 39BXF-X8Q23-P2WWT-38T2F-G3FPG
Windows Server 2008 HPC RCTX3-KWVHP-BR6TB-RB6DM-6X7HP
Windows Server 2008 Datacenter 7M67G-PC374-GR742-YH8V4-TCBY3
不带 Hyper-V 的 Windows Server 2008 数据中心版 22XQ2-VRXRG-P8D42-K34TD-G3QQC
面向基于 Itanium 系统的 Windows Server 2008 4DWFP-JF3DJ-B7DTH-78FJB-PDRHK

早期版本的 WINDOWS

Windows 8.1

操作系统版本 KMS 客户端安装程序密钥
Windows 8.1 专业版 GCRJD-8NW9H-F2CDX-CCM8D-9D6T9
Windows 8.1 专业版 N HMCNV-VVBFX-7HMBH-CTY9B-B4FXY
Windows 8.1 企业版 MHF9N-XY6XB-WVXMC-BTDCT-MKKG7
Windows 8.1 企业版 N TT4HM-HN7YT-62K67-RGRQJ-JFFXW

Windows 8

操作系统版本 KMS 客户端安装程序密钥
Windows 8 专业版 NG4HW-VH26C-733KW-K6F98-J8CK4
Windows 8 专业版 N XCVCF-2NXM9-723PB-MHCB7-2RYQQ
Windows 8 企业版 32JNW-9KQ84-P47T8-D8GGY-CWCK7
Windows 8 企业版 N JMNMF-RHW7P-DMY6X-RF3DR-X2BQT

Windows 7

操作系统版本 KMS 客户端安装程序密钥
Windows 7 专业版 FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
Windows 7 专业版 N MRPKT-YTG23-K7D7T-X2JMM-QY7MG
Windows 7 专业版 E W82YF-2Q76Y-63HXB-FGJG9-GF7QX
Windows 7 企业版 33PXH-7Y6KF-2VJC9-XBBR8-HVTHH
Windows 7 企业版 N YDRBP-3D83W-TY26F-D46B2-XCKRJ
Windows 7 企业版 E C29WB-22CC8-VJ326-GHFJW-H9DH4

Qt实现弹出窗口,点击其他位置消失

Qt实现弹出窗口,点击其他位置消失

一开始时想的很美好,写button的点击事件,然后在弹窗界面中写eventFilter(QEvent *e)事件

1
2
3
4
5
6
7
8
if (event->type() == QEvent::ActivationChange)
{
if(QApplication::activeWindow() != this)
{
this->close();
}
}
return QWidget::event(event);

但是这样写发现一个问题,当我想实现点击按钮也可以关闭dialog时,不行了,因为EventFilter是第一触发事件,当我点按钮是,判断当前的活动窗口不是dialog,他先关闭,然后触发按钮的点击事件,再打开了dialog。很麻烦。

后来有了解到Qt有一个popup的属性

1
info->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);

这样设置了之后,窗口是无边框且是点击其他位置关闭,但是还是会有上面的问题,没解决。

再后来,在一篇blog中看到了Qt::WA_NoMouseReplay属性
机翻一下:用于弹出窗口小部件。指示在弹出小部件关闭时不应重播最近的鼠标按下事件。该标志由小部件的作者设置,并在小部件每次接收到新的鼠标事件时由Qt内核清除。
大意就是它会拦截鼠标事件不会传递,专用于弹窗事件。
呜呜呜,原来Qt早就搞定了这个事件,找了半天,还是Qt不熟悉。
具体使用,在弹出的窗口里重写mousePressEvent(QMouseEvent *e)事件:

1
2
3
4
5
void InfoDialog::mousePressEvent(QMouseEvent *e)
{
setAttribute(Qt::WA_NoMouseReplay);
QDialog::mousePressEvent(e);
}