月度归档:2014年03月

NTLM认证协议及SSPI的NTLM实现

没错,NTLM就是微软应用最广泛的认证协议之一。 NTLM是NT LAN Manager的缩写,这也说明了协议的来源。NTLM 是 Windows NT 早期版本的标准安全协议。Windows 2000内置三种基本安全协议之一。 NTLM适用范围非常广,既可用于域内的认证服务, 也可用于没有AD的环境,让两台独立电脑相互认证。

你可能知道NTLM可以认证用户身份,但是你可能不知道NTLM可以提供会话安全服务(NTLM Session security)。 

本文也会分成几篇来写, 现在计划可能包含下面几个大方面的内容:

1.  NTLM协议的认证

包括 NTLMv1  和 NTLMv2 两个版本。  涉及到NTLM的认证全过程,以及NTLM 的 EPA(Extended Protection for Authentication)实现。

2. NTLM Session Security

即NTLM的会话安全,或者说是NTLM的SSPI实现。 这一部分内容可能不是很常用,能找到的资料也比较少。 这里先简单的说两句。 我们都知道NTLM可以用于认证,实际上,认证过后,NTLM还能提供安全服务。 比如提供对后续通信的安全签名,防篡改,或者对后续通信进行安全可信赖加密,防止被窃听。这一部分实际上是微软SSPI服务内容。 SSPI是Security Support Provider Interface(Microsoft安全支持提供器接口)。  SSPI是一个安全框架,很多协议都对它有实现。 比如我们熟知的Kerberos认证协议,它也有SSPI实现的部分。

3. NTLM消息的实例

这一部分,我们会找一个具体的实例来解释认证的全过程。


值得注意的是 NTLM 现在已经不光用于windows平台了,Linux 或者 java 平台也可以进行 NTLM 认证,使用 NTLM 的安全服务(但是Java平台对NTLM的会话安全支持貌似有问题)。

作为一个开始,我们先来介绍几个基础概念, 概念清楚了,然后再看技术细节。

1. 什么是认证。

认证就是承认和证明的意思。 就是你能证明你的身份。 比如你要访问一个受保护的资源,服务器需要认证你的身份。 你可以声称你是系统管理员, 但是怎么证明你就是管理员呢。 方法很多,这里有个简单直接的方法就是证明你知道管理员的密码。

认证的问题转化为: 怎么证明你知道你所声称的用户的密码?.

一个简单暴力的证明方法是,让你直接提供密码给服务器,然后服务器去数据库里面比对,看你提供的密码对不对。如果对,认证通过。否则失败。 常见的所谓Windows Forms认证,或者叫做windows basic 认证就是这种方式。 简单直接。 但是密码需要在网络上传输,安全问题就不说了,你懂的。

怎样在不直接提供密码的情况下,间接证明你知道密码呢?  NTLM就是干这个的了。

  • 什么是NTLM 认证。

NTLM是一种在不直接提供密码的情况下,间接证明客户端知道用户密码的方法。

NTLM认证最常见的应用场景恐怕就是用在浏览器(http协议)上的认证了。 但是实际上,NTLM 只规定了认证的流程,和认证消息格式。 并不跟具体的协议相关。 所以跟http就更没有必然联系了。 浏览器只是在http协议头上携带了NTLM的消息而已,通过了认证。 我们知道http通常是明文的,所以如果直接传输密码非常不安全,NTLM就有效的防止了这个问题。

怎么理解这个问题呢,举个夸张点的例子,  如果不嫌烦,客户端和服务端甚至可以通过传递小纸条的方式传递NTLM消息,来认证身份。 而纸条的内容是明文的, 中间传递者都可以随意查看,但是却无法知道密码,也无法伪造。

现在可以开始技术细节了, 我们还是采取由大及小的方式。 先从整体介绍,再逐步深入。

  • NTLM 的 认证消息,及认证流程。

前面说过了,NTLM消息并不和任何传输协议绑定, 它的认证消息理论上可以通过任何方式传递,所以我们的讨论都集中在协议本身,而不去关心下层的传输方式。

我们先看一个图:

image

NTLM认证共需要三个消息完成:

(1).  Type1 消息。 Negotiate 协商消息。

客户端在发起认证时,首先向服务器发送协商消息。 协商需要认证的主体,用户,机器以及需要使用的安全服务等等信息。 并通知服务器自己支持的协议内容,加密等级等等。

 

(2). Type2 消息。 Challenge 挑战消息。

服务器在收到客户端的协商消息之后, 会读取其中的内容,并从中选择出自己所能接受的服务内容,加密等级,安全服务等等。 并生成一个随机数challenge, 然后生成challenge消息返回给客户端。

 

(3). Type3 消息。 Authenticate认证消息。

客户端在收到服务端发回的Challenge消息之后, 读取熬服务端所支持的内容,和随机数challenge。  决定服务端所支持的内容是否满足自己的要求。 如果满足,则使用自己的密码以及服务器的随机数challenge通过复杂的运算,期间可能需要自己生成一个客户端随机数client challenge也加入运算, 并最终生成一个认证消息。并发回给服务器。

 

(4). 服务器在收到 Type3的消息之后, 回经过几乎同样的运算,并比较自己计算出的认证消息和服务端发回来的认证消息是否匹配。如果匹配,则证明客户端掌握了正确的密码,认证成功。 允许客户端使用后续服务。  如果不匹配,则认证失败。

 

  1. NTLM 认证消息的结构.

NTLM的消息很简单, 只有三种, Type1,  Type2 和 Type3.   它们都有相似的结构。  认证消息都是二进制的,但是通常我们见到的都是它们的Base64的编码格式。 类似这种:

TlRMTVNTUAADAAAAGAAYAHAAAACSAJIAiAAAAAAAAAAAAAAAGgAaAEgAAAAOAA4AYgAAAAAAAAAAAAAABYKIogAAAAAAAAAPYQBkAG0AaQBuAGkAcwB0AHIAYQB0AG8AcgBOAEUASQBMAC0AUABDALZLpLeO2n6Sx1s9JjrAfQOqf2QsmfTeP9cjC86k7BsjZEsKzjOoYBcBAQAAAAAAAEDGE3IuR88Bqn9kLJn03j8AAAAAAgAEAEsAQQABAAoARgBTAFcARQBCAAQADABrAGEALgBjAG8AbQADABgAZgBzAHcAZQBiAC4AawBhAC4AYwBvAG0ABQAMAGsAYQAuAGMAbwBtAAcACAC0gtdyLkfPAQAAAAAAAAAA

所以,如果你看到这种形式不要吃惊,把他们用Base64解码即可。

协议中的数字都是采用小端的方式存储。

(1).  消息头

这三种消息都具有相似的消息头:

image

 

 

(2) Flags 标记。

这三种消息一般都会携带一个 4字节的int值, 作为消息的Flags。 Flags在三种消息中的位置不一样,所以没有当做消息头来介绍。 不过,这个flags非常重要。这里先单独来介绍:

(下面是我的代码片段,重点标志我做了注释,后面用到的时候会进一步介绍)


flagsExps[0x1] = "Unicode"; flagsExps[0x2] = "OEM"; flagsExps[0x4] = "Request Target"; flagsExps[0x8] = "r10(must be zero)"; flagsExps[0x10] = "Negotiate Sign"; // 需要协商签名服务 flagsExps[0x20] = "Negotiate Seal"; // 需要协商加密服务 flagsExps[0x40] = "Negotiate Datagram Style"; //UDP 非连接模式 flagsExps[0x80] = "Negotiate Lan Manager Key"; // 在某些特定的NTLMv1下使用 Lan manager key 后面会详细介绍 //================================ flagsExps[0x100] = "Negotiate Netware(r9 must be zero)"; flagsExps[0x200] = "Negotiate NTLM"; flagsExps[0x400] = "r8(should be zero)"; flagsExps[0x800] = "Negotiate Anonymous"; //使用匿名登录 flagsExps[0x1000] = "Negotiate Domain Supplied"; flagsExps[0x2000] = "Negotiate Workstation Supplied"; flagsExps[0x4000] = "Negotiate Local Call(r7)"; flagsExps[0x8000] = "Negotiate Always Sign"; //=============================== flagsExps[0x10000] = "Target Type is a Domain."; flagsExps[0x20000] = "Target Type is a Server."; flagsExps[0x40000] = "Target Type Share(r6)"; flagsExps[0x80000] = "Negotiate NTLM2 Key(EXTENDED_SESSIONSECURITY)"; //使用扩展会话安全 flagsExps[0x100000] = "Request Init Response(NTLMSSP_NEGOTIATE_IDENTIFY)"; flagsExps[0x200000] = "Request Accept Response(r5, must be zero)"; flagsExps[0x400000] = "Request Non-NT Session Key"; flagsExps[0x800000] = "Negotiate Target Info"; //协商 携带 TargetInfo //=============================== flagsExps[0x1000000] = "r4(must be zero)"; flagsExps[0x2000000] = "NTLMSSP_NEGOTIATE_VERSION(协商携带操作系统版本号, 一般会忽略此项,仅供调试用途 )"; flagsExps[0x4000000] = "r3(must be zero)"; flagsExps[0x8000000] = "r2(must be zero)"; flagsExps[0x10000000] = "r1(must be zero)"; flagsExps[0x20000000] = "Negotiate 128"; // 协商128位加密 flagsExps[0x40000000] = "Negotiate Key Exchange"; //协商交换key, 在会话安全中,使用交换key来加密内容,而不是直接使用会话key flagsExps[0x80000000] = "Negotiate 56"; //协商56位加密

(3). Type 1 消息

我这里使用下面参考文档2中的一个图来介绍:

image

 

a . 前面首先是 8个字节+4个字节的 协议头。前面已经介绍过了。注意,消息类型为1

b . 然后是四个字节的Flags。 前面也介绍过了。  这个Flags中表达了客户端想要使用的NTLM的认证服务, 以及客户端自己所支持的服务。

 

c. 然后,是若干个可选的security buffer。

注意上图中的 security buffer, 安全缓冲区。 它是一个8字节固定大小的结构体。它看起来像是这个样子:

image

它其实是一个缓冲区指针。 它指向一个区域, 这个区域相对于Type1消息起始的偏移量为 offset, 这个区域的大小长度为 MaxLength, 其中的有效使用大小为:Length.

 

如果 Flags 中包含 0x1000 标记, 则需要提供域。把域名写入到这个缓冲区中。 字符集由Flags中的 OEM或者Unicode决定。

 

如果Flags中包含0x2000标记,则需要提供workstation的名字。  方法同上。

 

d. 然后是8字节的操作系统版本号。

如果Flags中包含0x2000000, 则需要提供 操作系统的版本号。

操作系统版本号的写法,请参考 参考文档1 的 2.2.2.10 节。

image

 

e. 然后,就是携带的前面security buffer中所指向的数据了。

 

在Type1的消息中,只有前面的 a 和 b项,是必须的, 后面的都是可选的。

 

 

 

(4) Type2 消息

服务端在收到 Type1消息之后, 会生成Type2消息返回给客户端。

这个也比较简单,我们还是用 参考文档2 中的一个图来介绍:

 

image

 

a . 前面首先还是 8个字节+4个字节的 协议头。前面已经介绍过了。 注意此时的消息类型已经是 2了。

b . 然后是四个字节的Flags。 前面也介绍过了。  这个Flags中表达了服务端所能接受的服务。

 

c. 上图中的TargetName 是要访问的机器名。 存储方法是security buffer. 前面介绍过了,不多说了。

 

d. Flags 不多说了。

 

e. Challenge, 这是一个服务端生成的8字节的随机数, 客户端会用来计算key. 后面会详细介绍用法。

 

f. Context, 这是一个8字节的值,其实是两个连续的32位值。 表示一个内部handle。 当服务端发现客户端就是自身的时候(在用一台电脑上),就会生成一个内部的安全handle,填充到这个字段。并且在Flags中设置  0x4000标记。 表示这是一个本地认证。

 

g. TargetInformation 也是一个security buffer。 其存储方式前面介绍过。 但是它的buffer中的内容需要介绍一下。基本上,TargetInformation是由一系列连续的 AV_PAIR 结构体连接起来的。

而AV_PAIR的结构如下:

(请参考下面 参考文档1 的 2.2.2.1节)

image

 

i) 先是两个字节的int16值, 表示 id, 表示这个AV结构的类型。

目前有如下类型:

image

image

 

 

ii) 然后是两个字节的int16值,表示值的长度。

 

iii) 然后就是值。 它的长度在上面指定的。

 

这个TargetInformation 结构非常重要。 后面Type3中还会用到。

 

h. 然后是8字节的操作系统版本号。 Type1中已经介绍过了。 不多说了。

 

然后后面就是要携带的数据了。

 

到这里先告一段落吧, 这里介绍了 NTLM 的概念以及认证流程。 并详细介绍了Type1和Type2消息, 以及Flags每个标志位的意义。 这大概覆盖了NTLM内容的30%左右的内容。  Type3消息是整个认证中最为复杂和关键的部分,我们将在下一篇中独立介绍。

希望大家多多支持。

欢迎访问我的个人独立博客: http://byNeil.com , 希望和大家多多交流共同进步。

 

 

参考文档:

  1. MS-NLMP-NT-LAN-Manager-NTLM-Authentication-Protocol-Specification

  2. The NTLM Authentication Protocol and Security Support Provider

  3. freebsd-freebsd  源码实现

  4. Mozilla Firefox source code Developer Guide - MDN-firefox 源码

  5. Heimdal NTLM 开源工程

  6. samba.org-pub-unpacked-samba_3_current-librpc-idl-ntlmssp.idl

byNeil
byNeil.com

原文来自 Blog by Neil, post NTLM认证协议及SSPI的NTLM实现 转载请注明出处。本站保留一切权力

ubuntu 安装 hubicfuse

 

如果你没有gcc,请先安装gcc:

apt-get  install  build-essential

 

1. 从github上clone源码:

https://github.com/TurboGit/hubicfuse

https://github.com/TurboGit/hubicfuse.git

2.执行./conbigure

configure: error: 'Unable to find libxml2. Please make sure library and header files are installed.'

缺少 libxml2

<span class="lnum">   1:  </span>apt-get install libxml2-dev

 

然后,发现还是缺少libxml2

找到这个帖子:

https://github.com/redbo/cloudfuse/issues/20

 

apt-get install pkg-config

 

然后:

configure: error: 'Unable to find libcurl. Please make sure library and header files are installed.'

apt-get install libcurl4-openssl-dev

 

然后:

apt-get install  libcurl3  libcurl3-openssl-dev  libcurl3-dev

 

然后缺少: libfuse

configure: error: 'Unable to find libfuse.  Please make sure library and header files are installed.'

apt-get install libfuse-dev

 

缺少json:

找到这个网址:

http://webcache.googleusercontent.com/search?q=cache:XxNdg6n75boJ:linuxprograms.wordpress.com/2010/05/20/install-json-c-in-linux/+&cd=6&hl=en&ct=clnk

先update一下:

apt-get update

 

apt-get install libjson0 libjson0-dev

 

然后 ./configure

 

ok, 搞定。

 

然后:

make
make install

 

 

然后,新建,并编辑 ~/.cloudfuse  文件

 

然后:

mkdir /mnt/hubic

执行:

hubicfuse /mnt/hubic -o noauto_cache,sync_read,allow_other

 

 

如果是openvz的虚拟机,会出现这个错误。  可能是主机没有添加fuse模块,需要写信给客服,让打开fuse模块,不是所有的厂商都愿意给你打开fuse。

fuse: device not found, try 'modprobe fuse' first

 

如果是xen的服务器,就已经成功了。

 

image
byNeil
byNeil.com

原文来自 Blog by Neil, post ubuntu 安装 hubicfuse 转载请注明出处。本站保留一切权力

ubuntu配置crontab, 编辑crontab文件,执行定时任务

 

1. 创建或编辑用户的配置文件:

$ crontab -e [username]

 

用户的配置文件在:

/var/spool/cron/crontabs

image

每个用户都有自己的文件。我这里只有一个root

 

2. 在里面添加行, 每行一个任务。

具体行内语法请参考:http://docs.oracle.com/cd/E24847_01/html/819-6951/sysrescron-1.html#sysrescron-62861

 

修改完之后,重新加载cron配置:

service cron reload

 

3. 查看当前用户的任务列表:

crontab -l

byNeil
byNeil.com

原文来自 Blog by Neil, post ubuntu配置crontab, 编辑crontab文件,执行定时任务 转载请注明出处。本站保留一切权力

vmware player 调整虚拟磁盘的大小

用vmware player的虚拟机, 今天要装一个软件,发现虚拟机磁盘不够用了。 于是需要扩展虚拟机的磁盘大小。

虚拟机本来只有一个磁盘,一个分区,就是c盘。在数据不丢失的情况下, 现在想要把c盘变大。

 

第一步,需要把虚拟机关机,

记住是要完全关机,而不是休眠。

 

第二步,打开虚拟机的设置菜单,选中磁盘选项。

并打开Utilities菜单,找到Expand

 

clipboard

 

在弹出的菜单中,输入想要调整的大小:

 

clipboard[5]

 

 

之后点击Expand, 然后系统会出现进度条,提示正在扩展。 估计是要更新虚拟磁盘结构。

 

稍等之后,就提示成功。

 

第三步, 重启虚拟机, 打开我的电脑, 你发现c盘并没有扩大。

别担心, 需要在管理菜单中扩展一下:

 

image

 

 

image

 

 

我这里已经扩展过了,所以 “Extend Volume” 是灰色的。 

点击扩展之后,你的c盘就变大了。

 

blog.byneil.com

byNeil
byNeil.com

原文来自 Blog by Neil, post vmware player 调整虚拟磁盘的大小 转载请注明出处。本站保留一切权力

密码太长导致mysql:ERROR] Slave I/O: error connecting to master ‘replication@******:3306’ – retry-time: 60 retries: 2, Error_code: 1045

配置mysql主从备份,遇到在从服务器上slave启动不成功。

查看错误日志,

ERROR] Slave I/O: error connecting to master 'replication@*****:3306' - retry-time: 60  retries: 2, Error_code: 1045

 

第一想法是密码错误了。  于是先停止slave,重设master。

stop slave;

CHANGE MASTER TO MASTER_HOST='108.***.***.***',
MASTER_USER='repl_user2',
MASTER_PASSWORD='hfn98kMnsdfposdfasdfsadfsdjntuyuzcndfasdfsfsdfdsfsdfsdfsdf',

MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=107;

然后重启 slave:

start slave;

 

之后发现还是:

Slave_IO_Running: NO

 

网上搜了很多, 说这个1045错误代码就是密码不对。如此重试了几次,确保密码复制粘贴没错。

手动用远程登录也没有问题,证明用户名和密码都没错。

 

查看日志,也没有详细信息。

在mysql的data目录下游荡,希望有什么有用的信息:

 

image

 

我们知道 master.info 记录的刚才设置的master信息的。 实在没有别的思路了,看看master.info 吧。

image

 

可以看到,里面记录了刚才设的master信息。

 

一眼看过去觉得有点不对。

哪里不对?  发现这里记录的密码长度变短了。

 

我再前面change master语句中给出的密码是很长的:

hfn98kMnsdfposdfasdfsadfsdjntuyuzcndfasdfsfsdfdsfsdfsdfsdf

但是这里记录的密码只有前面一段:

hfn98kMnsdfposdfasdfsadfsdjntuyuzcn

 

可以发现, 密码被截断了。

 

我知道了。应该是问题在这。于是去主服务器把密码改短。 再回来试试。

果然就成功了。

 

不知道为什么会被截断,但是希望能帮到你。 有知道的希望指点一下。

blog.byneil.com
byNeil
byNeil.com

解决:Microsoft.PowerShell_profile.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details.

在执行powershell启动脚本的时候. 会报这个错

Microsoft.PowerShell_profile.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details.

原因是因为windows默认启用了安全策略, 禁止启动脚本.

查看策略:

PS C:\Windows\System32> Get-ExecutionPolicy

Restricted
PS C:\Windows\System32>

需要关闭它:

PS C:\Windows\System32> Set-Executionpolicy -ExecutionPolicy Unrestricted

这样就好了.

参考: http://www.christiano.ch/wordpress/2009/07/26/solution-microsoft-powershell_profile-ps1-cannot-be-loaded-because-the-execution-of-scripts-is-disabled-on-this-system-please-see-get-help-about_signing-for-more-details/

 
byNeil
byNeil.com

转载:Ubuntu查看系统的信息命令大全

 

 

系统信息
# uname -a              # 查看内核/操作系统/CPU信息
# cat /etc/issue        # 查看操作系统版本
#cat /proc/version      #包含GCC的版本信息
# cat /proc/cpuinf     # 查看CPU信息
# hostname             # 查看计算机名
# lspci -tv             # 列出所有PCI设备
# lsusb -tv             # 列出所有USB设备
# lsmod                 # 列出加载的内核模块
# env                   # 查看环境变量

资源信息
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载

磁盘信息
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况

网络信息
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息

进程信息
# ps -ef # 查看所有进程
# top # 实时显示进程状态

用户信息
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务

 

原文:http://www.icultivator.com/p/2840.html

byNeil
byNeil.com

原文来自 Blog by Neil, post 转载:Ubuntu查看系统的信息命令大全 转载请注明出处。本站保留一切权力

useradd,groupadd 添加用户和用户组

  • id 命令可以查看当前用户的详细信息:
root@vm:~# id
uid=0(root) gid=0(root) groups=0(root)

image

  • /etc/group 文件中记录着所有的用户组:
root@vm:~# cat /etc/group

image

  • /etc/passwd 文件中记录了所有的用户的信息
root@vm:~# cat /etc/passwd

image

添加用户组:

root@vm:~# groupadd backupuser

禁止用户组访问网络:

iptables -A OUTPUT -m owner --gid-owner backupuser -p all  -j DROP

保存 iptables设置:

iptables-save  > ip.conf

恢复iptables设置:

iptables-restore  < ip.conf

需要写入开机脚本,确保每次重启生效。

/etc/rc.local

添加用户,指定组, –m 自动生成home文件夹

useradd user1 -g backupuser -m

未完, 待续…….

byNeil
byNeil.com

原文来自 Blog by Neil, post useradd,groupadd 添加用户和用户组 转载请注明出处。本站保留一切权力

fstab,mtab,mount,fdisk 查看系统磁盘详情

 

fstab 文件想必大家都很熟悉,记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。

 

root@t1:/home# cat /etc/fstab
proc  /proc       proc    defaults    0    0
none  /dev/pts    devpts  rw,gid=5,mode=620    0    0
none  /run/shm    tmpfs   defaults    0    0

 

image

除了 fstab 文件之外,还有一个 mtab 文件,和 fstab 文件一样在 /etc 文件下,位于 /etc/mtab。

mtab 文件记录的是,当前已挂载的分区信息。每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。 原文来自 blog.byneil.com

 

root@t1:/home# cat /etc/mtab
/dev/simfs / simfs rw,relatime,usrquota,grpquota 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /dev/pts devpts rw,nosuid,noexec,relatime,mode=600,ptmxmode=000 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
none /run tmpfs rw,nosuid,noexec,relatime,size=419432k,mode=755 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,relatime 0 0

 

image

 

 

df 可以查看当前系统的已挂在的磁盘信息:

 

image

 

fdisk –l  查看系统所有已分区和未分区的磁盘, 并能划分磁盘分区。

image

 

mount –l 也能查看当前系统的挂载情况

 

image

原文来自 blog.byneil.com

byNeil
byNeil.com

原文来自 Blog by Neil, post fstab,mtab,mount,fdisk 查看系统磁盘详情 转载请注明出处。本站保留一切权力

联通宽带又在调皮了。给我分配内网ip

刚才偶然看了一下路由器, 不知什么时候起,联通开始分配内网ip了?

来自 blog.byneil.com

image

byNeil
byNeil.com

原文来自 Blog by Neil, post 联通宽带又在调皮了。给我分配内网ip 转载请注明出处。本站保留一切权力