分类目录归档:未分类

Markdown快速入门手册

本文用于快速掌握Markdown语法,并用于备查。

为什么用Markdown

Markdown的优点

  • 写作中添加简单符号即完成排版,所见即所得。让你专注于文字而不是排版。
  • 格式转换方便,Markdown 的文本你可以轻松转换为 html、pdf等。
  • 可以保存称纯文本

Markdown简要规则

标题

用1~6位递增的’#’,定义一段文字为标题

# 标题一 H1 
## 标题二 H2
### 标题三 H3
#### 标题四 H4
##### 标题五 H5
###### 标题六 H6

列表

用‘*’ ‘+’或‘-’,定义一段文字为无序列表

用‘1. ’‘2. ’…‘n. ’,定义一段文字为有序列表

分割线

用3位以上的‘*’ ‘+’或‘-’,定义一行分割线


未完待续。。。

Mac下office 2016 15.13.1版本自签名后闪退崩溃问题修复

问题背景

Mac下office 2016可以通过自签名的方法完成“激活”。但是如果用过其它的“激活”方法的话,会损坏文件的完整性,office 2016会频繁崩溃闪退。

解决思路

重新安装office 2016,覆盖原安装文件;重新自签名“激活”。

解决步骤

1. 微软官网下载office2016 15.13.1 更新包

地址:https://support.microsoft.com/zh-cn/kb/3082420

2. 分别安装Word、Excel、PowerPoint、Outlook

3. 安装自签名的方法重新“激活”

解决完成!现在可以畅快地享受office 2016了。

Docker入门

关注Docker这项技术差不多一年多了,最近关于Docker的使用案例越来越多,于是就想动手实验下这项技术。自己整理了一个入门手册,分享给大家。

Docker是什么

Docker是一种容器技术,它可以将应用和环境等进行打包,形成一个独立的,类似于iOS的APP形式的“应用”,这个应用可以直接被分发到任意一个支持Docker的环境中,通过简单的命令即可启动运行。Docker是一种最流行的容器化实现方案。和虚拟化技术类似,它极大的方便了应用服务的部署;又与虚拟化技术不同,它以一种更轻量的方式实现了应用服务的打包。使用Docker可以让每个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过他们彼此之间共享同一个操作系统。Docker的优势在于,它可以在更细的粒度上进行资源的管理,也比虚拟化技术更加节约资源。

vm-vs-docker-architecture虚拟化和Docker架构对比,来自Docker官网

基本概念

开始试验Docker之前,我们先来了解一下Docker的几个基本概念:

镜像:我们可以理解为一个预配置的系统光盘,这个光盘插入电脑后就可以启动一个操作系统。当然由于是光盘,所以你无法修改它或者保存数据,每次重启都是一个原样全新的系统。Docker里面镜像基本上和这个差不多。

容器:同样一个镜像,我们可以同时启动运行多个,运行期间的产生的这个实例就是容器。把容器内的操作和启动它的镜像进行合并,就可以产生一个新的镜像。

开始

Docker基于LXC技术实现,依赖于Linux内核,所以Docker目前只能在Linux以原生方式运行。目前主要的Linux发行版在他们的软件仓库中内置了Docker:

Ubuntu:

  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Precise 12.04 (LTS)
  • Ubuntu Saucy 13.10

CentOS:

  • CentOS 7

Docker要求64位环境,这些操作系统下可以直接通过命令安装Docker,老一些操作系统Docker官方也提供了安装方案。下面的实验基于CentOS 7进行。关于其他版本操作系统上Docker的安装,请参考官方文档:https://docs.docker.com/installation/

在CentOS 7上安装Docker

使用yum从软件仓库安装Docker:

首先启动Docker的守护进程:

如果想要Docker在系统启动时运行,执行:

Docker在CentOS上好像和防火墙有冲突,应用防火墙规则后可能导致Docker无法联网,重启Docker可以解决。

Docker仓库

Docker使用类似git的方式管理镜像。通过基本的镜像可以定制创建出来不同种应用的Docker镜像。Docker Hub是Docker官方提供的镜像中心。在这里可以很方便地找到各类应用、环境的镜像。

由于Docker使用联合文件系统,所以镜像就像是夹心饼干一样一层层构成,相同底层的镜像可以共享。所以Docker还是相当节约磁盘空间的。要使用一个镜像,需要先从远程的镜像注册中心拉取,这点非常类似git。

我们很容易就能从Docker Hub镜像注册中心下载一个最新版本的ubuntu镜像到本地。国内网络可能会稍慢,DaoCloud提供了Docker Hub的国内加速服务,可以尝试配置使用。

运行一个容器

使用Docker最关键的一步就是从镜像创建容器。有两种方式可以创建一个容器:使用docker create命令创建容器,或者使用docker run命令运行一个新容器。两个命令并没有太大差别,只是前者创建后并不会立即启动容器。

以ubuntu为例,我们启动一个新容器,并将ubuntu的Shell作为入口:

这时候我们成功创建了一个Ubuntu的容器,并将当前终端连接为这个Ubuntu的bash shell。这时候就可以愉快地使用Ubuntu的相关命令了~可以快速体验一下。

参数-i表示这是一个交互容器,会把当前标准输入重定向到容器的标准输入中,而不是终止程序运行。-t指为这个容器分配一个终端。

好了,按Ctrl+D可以退出这个容器了。

在容器运行期间,我们可以通过docker ps命令看到所有当前正在运行的容器。添加-a参数可以看到所有创建的容器:

每个容器都有一个唯一的ID标识,通过ID可以对这个容器进行管理和操作。在创建容器时,我们可以通过–name参数指定一个容器名称,如果没有指定系统将会分配一个,就像这里的“trusting_morse”(什么鬼。。)。

当我们按Ctrl+D退出容器时,命令执行完了,所以容器也就退出了。要重新启动这个容器,可以使用docker start命令:

同样,-i参数表示需要交互式支持。

注意:每次执行docker run命令都会创建新的容器,建议一次创建后,使用docker start/stop来启动和停用容器。

存储

在Docker容器运行期间,对文件系统的所有修改都会以增量的方式反映在容器使用的联合文件系统中,并不是真正的对只读层数据信息修改。每次运行容器对它的修改,都可以理解成对夹心饼干又添加了一层奶油。这层奶油仅供当前容器使用。当删除Docker容器,或通过该镜像重新启动时,之前的更改将会丢失。这样做并不便于我们持久化和共享数据。Docker的数据卷这个东西可以帮到我们。

在创建容器时,通过-v参数可以指定将容器内的某个目录作为数据卷加载:

在容器中会多一个/home/www挂载点,在这个挂载点存储数据会绕过联合文件系统。我们可以通过下面的命令来找到这个数据卷在主机上真正的存储位置:

你会看到输出了一个指向到/var/lib/docker/vfs/dir/…的目录。cd进入后你会发现在容器中对/home/www的读写创建,都会反映到这儿。事实上,/home/www就是挂载自这个位置。

有时候,我们需要将本地的文件目录挂载到容器内的位置,同样是使用数据卷这一个特性,-v参数格式为:

host_dir是主机的目录,container_dir是容器的目录。

容器和容器之间是可以共享数据卷的,我们可以单独创建一些容器,存放如数据库持久化存储、配置文件一类的东西,然而这些容器并不需要运行。

在需要使用这个数据容器的容器创建时–volumes-from [容器名]的方式来使用这个数据共享容器。

网络

Docker容器内的系统工作起来就像是一个虚拟机,容器内开放的端口并不会真正开放在主机上。可以使我们的容器更加安全,而且不会产生容器间端口的争用。想要将Docker容器的端口开放到主机上,可以使用类似端口映射的方式。

在Docker容器创建时,通过指定-p参数可以暴露容器的端口在主机上:

现在我们就将容器的22端口开放在了主机上,注意主机上对应端口是自动分配的。如果想要指定某个端口,可以通过-p [主机端口]:[容器端口]参数指定。

容器和容器之间想要网络通讯,可以直接使用–link参数将两个容器连接起来。例如WordPress容器对some-mysql的连接:

环境变量

通过Docker打包的应用,对外就像是一个密闭的exe可执行文件。有时候我们希望Docker能够使用一些外部的参数来使用容器,这时候参数可以通过环境变量传递进去,通常情况下用来传递比如MySQL数据库连接这种的东西。环境变量通过-e参数向容器传递:

关于Docker到现在就有了一个基本的认识了。接下来我会给大家介绍如何创建镜像,以及如何利用公有云直接发布的基于Docker的应用。

创建镜像

Docker强大的威力在于可以把自己开发的应用随同各种依赖环境一起打包、分发、运行。要创建一个新的Docker镜像,通常基于一个已有的Docker镜像来创建。Docker提供了两种方式来创建镜像:把容器创建为一个新的镜像、使用Dockerfile创建镜像。

将容器创建为镜像

为了创建一个新的镜像,我们先创建一个新的容器作为基底:

现在我们可以对这个容器进行修改了,例如我们可以配置PHP环境、将我们的项目代码部署在里面等:

当执行完操作之后,我们按Ctrl+D退出容器,接下来使用docker ps -a来查找我们刚刚创建的容器ID:

可以看到我们最后操作的那个ubuntu容器。这时候只需要使用docker commit即可把这个容器变为一个镜像了:

这时候docker容器会被创建为一个新的Ubuntu镜像,版本名称为myubuntu。以后我们可以随时使用这个镜像来创建容器了,新的容器将自动包含上面对容器的操作。

如果我们要在另外一台机器上使用这个镜像,可以将一个镜像导出:

现在我们可以把刚才创建的镜像打包为一个文件分发和迁移了。要在一台机器上导入镜像,只需要:

这样在新机器上就拥有了这个镜像。

注意:通过导入导出的方式分发镜像并不是Docker的最佳实践,因为我们有Docker Hub。

Docker Hub提供了类似GitHub的镜像存管服务。一个镜像发布到Docker Hub不仅可以供更多人使用,而且便于镜像的版本管理。关于Docker Hub的使用,之后我会单独写一篇文章展开介绍。另外,在一个企业内部可以通过自建Docker Registry的方式来统一管理和发布镜像。将Docker Registry集成到版本管理和上线发布的工作流之中,还有许多工作要做,在我整理出最佳实践后会第一时间分享。

使用Dockerfile创建镜像

使用命令行的方式创建Docker镜像通常难以自动化操作。在更多的时候,我们使用Dockerfile来创建Docker镜像。Dockerfile是一个纯文本文件,它记载了从一个镜像创建另一个新镜像的步骤。撰写好Dockerfile文件之后,我们就可以轻而易举的使用docker build命令来创建镜像了。

Dockerfile非常简单,仅有以下命令在Dockerfile中常被使用:

命令 参数 说明
# 注释说明
FROM <image>[:<tag>] 从一个已有镜像创建,例如ubuntu:latest
MAINTAINER Author <some-one@example.com> 镜像作者名字,如Max Liu <some-one@example.com>
RUN <cmd>或者[‘cmd1’, ‘cmd2’…] 在镜像创建用的临时容器里执行单行命令
ADD <src> <dest> 将本地的<src>添加到镜像容器中的<dest>位置
VOLUME <path>或者[‘/var’, ‘home’] 将指定的路径挂载为数据卷
EXPOSE <port> [<port>…] 将指定的端口暴露给主机
ENV <key> <value> 或者 <key> = <value> 指定环境变量值
CMD [“executable”,”param1″,”param2″] 容器启动时默认执行的命令。注意一个Dockerfile中只有最后一个CMD生效。
ENTRYPOINT [“executable”, “param1″, “param2″] 容器的进入点。

下面是一个Dockerfile的例子:

这里其他命令都比较好理解,唯独CMD和ENTRYPOINT我需要特殊说明一下。CMD命令可用指定Docker容器启动时默认的命令,例如我们上面例子提到的docker run -it ubuntu:latest sh -c ‘/bin/bash’。其中sh -c ‘/bin/bash’就是通过手工指定传入的CMD。如果我们不加这个参数,那么容器将会默认使用CMD指定的命令启动。ENTRYPOINT是什么呢?从字面看是进入点。没错,它就是进入点。ENTRYPOINT用来指定特定的可执行文件、Shell脚本,并把启动参数或CMD指定的默认值,当作附加参数传递给ENTRYPOINT。

不好理解是吧?我们举一个例子:

假设这个镜像内已经准备好了mysql-client,那么通过这个镜像,不加任何额外参数启动容器,将会给我们一个mysql的控制台,默认连接到192.168.100.128这个主机。然而我们也可以通过指定参数,来连接别的主机。但是不管无论如何,我们都无法启动一个除了mysql客户端以外的程序。因为这个容器的ENTRYPOINT就限定了我们只能在mysql这个客户端内做事情。这下是不是明白了~

因此,我们在使用Dockerfile创建文件的时候,可以创建一个entrypoint.sh脚本,作为系统入口。在这个文件里面,我们可以进行一些基础性的自举操作,比如检查环境变量,根据需要初始化数据库等等。下面两个文件是我在SimpleOA项目中添加的Dockerfile和entrypoint.sh,仅供参考:

https://github.com/starlight36/SimpleOA/blob/master/Dockerfile
https://github.com/starlight36/SimpleOA/blob/master/docker-entrypoint.sh

在准备好Dockerfile之后,我们就可以创建镜像了:

关于Dockerfile的更详细说明,请参考https://docs.docker.com/reference/builder/

杂项和最佳实践

在产品构建的生命周期里使用Docker,最佳实践是把Docker集成到现有的构建发布流程里面。这个过程并不复杂,可以在持续集成系统构建测试完成后,将打包的步骤改为docker build,持续集成服务将会自动将构建相应的Docker镜像。打包完成后,可以由持续集成系统自动将镜像推送到Docker Registry中。生产服务器可以直接Pull最新版本的镜像,更新容器即可很快地实现更新上线。目前Atlassian Bamboo已经支持Docker的构建了。

由于Docker使用联合文件系统,所以并不用担心多次发布的版本会占用更多的磁盘资源,相同的镜像只存储一份。所以最佳实践是在不同层次上构建Docker镜像。比如应用服务器依赖于PHP+Nginx环境,那么可以把定制好的这个PHP环境作为一个镜像,应用服务器从这个镜像构建镜像。这样做的好处是,如果PHP环境要升级,更新了这个镜像后,重新构建应用镜像即可完成升级,而不需要每个应用项目分别升级PHP环境。

新手经常会有疑问的是关于Docker打包的粒度,比如MySQL要不要放在镜像中?最佳实践是根据应用的规模和可预见的扩展性来确定Docker打包的粒度。例如某小型项目管理系统使用LAMP环境,由于团队规模和使用人数并不会有太大的变化(可预计的团队规模范围是几人到几千人),数据库也不会承受无法承载的记录数(生命周期内可能一个表最多会有数十万条记录),并且客户最关心的是快速部署使用。那么这时候把MySQL作为依赖放在镜像里是一种不错的选择。当然如果你在为一个互联网产品打包,那最好就是把MySQL独立出来,因为MySQL很可能会单独做优化做集群等。

使用公有云构建发布运行Docker也是个不错的选择。国内DaoCloud提供了从构建到发布到运行的全生命周期服务。特别适合像微擎这种微信公众平台、或者中小型企业CRM系统。上线周期更短,比使用IAAS、PAAS的云服务更具有优势。

参考资料:

深入理解Docker Volume http://dockone.io/article/128
WordPress https://registry.hub.docker.com/_/wordpress/
Docker学习—镜像导出 http://www.sxt.cn/u/756/blog/5339
Dockerfile Reference https://docs.docker.com/reference/builder/
关于Dockerfile http://blog.tankywoo.com/docker/2014/05/08/docker-2-dockerfile.html

该文转自starlight36.com

Mac平台开发几个网络抓包工具(sniffer)

Cocoa Packet Analyzer

http://www.tastycocoabytes.com/cpa/

Cocoa Packet Analyzer is a native Mac OS Ximplementation of a network protocol analyzer and packet sniffer. CPA supportsthe industry-standard PCAP packet capture format for reading, capturing andwriting packet trace files.

这是我开始在做iphone的时候在网络上找到的一个很好用的简单的的抓包工具,我因为是tcp通讯,用这个足够了。

Wireshark

http://www.wireshark.org/download.html

非常专业的抓包、分析工具,自不多说,是开源并且跨平台,各种协议通吃的工具,http,tcp都行,非常好的分析工具。我是觉得非常好用。

Httpscoop

http://www.tuffcode.com/index.html

http协议,可惜是个收费的主,能找到破解版的也不错

Charles Web Proxy

http://www.charlesproxy.com/

web开发的工具,貌似不适合手机开发使用,没试过。firefox插件httpfox应该也是。

tcpdump

最强大的是什么,当然是命令行了,和ssh配合,直接在手机上进行操作,真实环境测试,非常好用,可惜使用的门槛有点高,这里就不做详细介绍。

Linux配置ssh证书无密码登录

1:创建新用户
useradd命令(也可以使用adduser)用来创建新的用户帐号,其命令格式如下:
useradd命令常用选项
-d 设置新用户的登陆目录
-e 设置新用户的停止日期,日期格式为MM/DD/YY
-f 帐户过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能。预设值为-1
-g 使新用户加入群组
-G 使新用户加入一个新组。每个群组使用逗号“,”隔开,不可以夹杂空白字
-s 指定新用户的登陆Shell
-u 设定新用户的ID值
成功创建一个新用户以后,在/etc/passwd文件中就会增加一行该用户的信息,其格式如下:
(用户名〕:〔密码〕:〔UID〕:〔GID〕:〔身份描述〕:〔主目录〕:〔登陆Shell〕
其中个字段被冒号“:”分成7各部分。
由于小于500的UID和GID一般都是系统自己保留,不用做普通用户和组的标志,所以新增加的用户和组一般都是UID和GID大于500的。
例如使用如下命令:
〔root@localhost root〕# useradd user1

将会创建一个名为userl的用户,关于用户管理命令已经介绍过,在此也不做更多的介绍了。
执行useradd命令的结果。
Linux创建用户命令2:设置和修改用户口令passwd
passwd命令用来设置和修改用户命令,只有超级用户和用户自己可以修改密码,其他的普通用户没有修改其他用户密码的权利。其命令如下:
# passwd〔用户名〕
为避免输入密码是被人注意到有多少位,Linux并不采用类似Windows的密码回显〔显示为*号〕,所以,输入的这些字符是看不见的。例如,为新建的userl用户设置密码可使用如下命令:
〔root@localhost root〕# passwd user1

根据系统的提示信息输入两次密码,系统会显示:
passwd ::all authentication tokens updated successfully
表示修改密码成功了。新建用户的工作只有在该用户设置了口令后才算完成,否则无法使用该用户名登陆。
修改用户信息usermod
Linux创建用户命令3:usermod命令用来修改用户信息
其命令格式如下:
# usermod〔选项〕〔用户名〕
常用命令选项
-d 更新使用者新的登陆目录
-e 设置新用户的停止日期,日期格式为MM/DD/YY
-f 帐户过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能。预设值为-1
-g 更新使用者新用户加入群组
-G 定义使用者为一堆groups的成员。每个群组使用“??”隔开,不可以夹杂空白字
-l 变更用户登陆时的名称,同时使用者目录名也会跟着更动成新的名称
-s 指定新用户Shell
-u 用户ID值,必须为唯一的ID值。用户目录树下所用的文档目录其userID会自动变更,放在拥护目录外的文档则要自行手动更动
例如,下面的命令修改用户信息:
〔root@localhost root〕# usermod –d/home/user2 –s/bin/bash user2
将用户名user2的主目录路径设置在/home/user1,登陆的Shell设置为/usr/bin/gcc。
一般情况下usermod命令会参照命令指令的部分修改用户帐号信息。但usermod不允许改变正在线上的使用者帐号名称,因此,当用usermod来改变用户帐号信息时,必须确认这名没在电脑上执行任何程序。
Linux创建用户命令4:新建组群groupadd
groupadd命令用来建立新的用户组,其命令格式如下:
# groupadd〔选项〕〔用户名称〕
常用选项有:
-g:GID值。除非使用-o参数不然该值必须是唯一,不可相同,数值不可为负。
GID值预设为最小不得小于500而逐次增加。0—499传统上是保留系统帐号使用。
-f:新增的一个已经存在的群组帐号,系统会出现错误讯息然后结束groupadd.
如果是这样的情况,不会新增这个群组(如果是这个情况,系统不会在新增一次)。也可同时加上-g选项,当你加上一个GID时,此时GID就不用是唯一值,可不加-o参数,建好的群组会显示建立后的结果(adding a group as neither –g or –o options were specified),这是Red Hat Linux额外增设的选项。

一、权限控制机制
Linux系统是个多用户系统,能做到不同的用户能同时访问不同的文件,因此一定要有文件权限控制机制。Linux系统的权限控制机制和Windows的权限控制机制有着很大的差别。Linux的文件或目录被一个用户拥有时,这个用户称为文件的拥有者(或文件主),同时文件还被指定的用户组所拥有,这个用户组称为文件所属组。一个用户可以是不同组的成员,这可以由管理员控制。文件的权限由权限标志来决定,权限标志决定了文件的拥有者、文件的所属组、其他用户对文件访问的权限。

用户和权限

1. 基本概念

(1)文件主:Linux为每个文件都分配了一个所有者,称为文件主,并赋予文件主唯一的注册名。对文件的控制取决于文件主或超级用户(root)。

文件的所属关系是可以改变的,你可以将文件或目录的所有权转让给其他用户,但只有文件主或root才有权改变文件的所属关系。可以用chown命令更改某个文件或目录的所有权。例如,超级用户把自己的一个文件复制给用户user1,为了让用户user1能够访问这个文件,超级用户(root)应该把这个文件的属主设为user1,否则,用户user1无法访问这个文件。如果改变了文件或目录的所有权,原文件主将不再拥有该文件或目录的控制权

(2)用户组:Linux下,每个文件又属于一个用户组。当创建一个文件或目录时,系统会赋予它一个用户组关系,chgrp命令可以改变文件的组关系。

(3)访问权限:Linux系统中的每个文件和目录都有访问权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。

2. 访问权限

Linux系统中规定了3种不同类型的用户:文件主(user)、同组用户(group)、可以访问系统的其他用户(others)。

访问权限规定3种访问文件或目录的方式:读(r)、写(w)、可执行或查找(x)

(1)文件访问权限

读权限(r)表示只允许指定用户读取相应文件的内容,禁止对它做任何的更改操作。写权限(w)表示允许指定用户打开并修改文件。执行权限(x)表示允许指定用户将该文件作为一个程序执行。

(2)目录访问权限

在ls命令后加上-d选项,可以了解目录文件的使用权限。读权限(r)表示可以列出存储在该目录下的文件,即读目录内容。写权限(w)表示允许你从目录中删除或创建新的文件或目录。执行权限(x)表示允许你在目录中查找,并能用cd命令将工作目录切换到该目录。用chmod命令可改变文件或目录的访问权限。例如:

1.chmod命令

功能:chmod命令用于改变或设置文件或目录的访问权限。

格式:chmod[选项]模式文件或目录名

说明:只有文件主或超级用户root才有权用chmod改变文件或目录的访问权限。

选项参数:

◆-c:若文件或目录权限确实已经更改,才显示其更改动作。

◆-f:若文件或目录权限无法被更改也不要显示错误信息。

◆-v:显示权限变更的详细资料。

◆-R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递归式的方式逐个变更)。

设定文件权限时,在模式中常用以下的字母代表用户或用户组:

◆u(user)表示文件的所有者。

◆g(group)表示文件的所属组。

◆o(others)表示其他用户。

◆a(all)代表所有用户(即u+g+o)。

权限用以下字符表示:r表示读权限;w表示写权限;x表示执行权限。最后要指明是增加(+)还是取消(-)权限,或是只赋予权限(=)。

2.chown命令

功能:改变某个文件或目录的拥有者和所属的组。

格式:chown[选项]用户或组文件名

说明:只有文件主和超级用户才可以使用该命令。同时改变文件主和文件所属的组时,用户名和用户组名由冒号分开。在文件名中可以包含通配符。

参数选项:

◆-R递归式地改变指定目录及其所有子目录、文件的文件主。

3.chgrp命令

功能:改变文件或目录的所属组。

格式:chgrp[选项]组名文件名

说明:如果用户不是该文件的文件主或超级用户,则不能改变该文件或目录的所属组。chown可以同时改变文件拥有者和所属组,chgrp只具有改变所属组的功能。

参数选项:

◆-R递归式地改变指定目录及其下面的所有子目录和文件的用户组。

4.umask命令

功能:用来设置新建文件权限的掩码。

格式:umask[模式]

说明:模式为新建文件权限的掩码值。

文件访问权限可以通过chmod命令来修改。当用户创建一个新文件后,如果不使用chmod修改权限,则这个文件的权限是什么呢?这个文件的权限由系统默认权限和默认权限掩码共同确定,它等于系统默认权限减去默认权限掩码。Linux系统中目录的默认权限是777,文件的默认权限是666。因此,有以下公式:

◆新目录的权限=777-默认权限掩码

◆新文件的权限=666-默认权限掩码

◆注意:基于安全原因,Linux系统不允许文件的默认权限有执行权。不带任何参数的umask命令显示当前的默认权限掩码值。下面讲解Linux用户管理。

二、Linux用户管理
Linux是一个多任务、多用户的操作系统,要能做到不同的用户能同时访问不同的文件,允许不同的用户从本地登录或远程登录,这时用户必须拥有一个合法的账号,Linux系统正是通过账号来实现对用户的访问进行控制的,因此,需要对用户与组进行有效的管理。Linux操作系统下的用户:

1.用户

Linux下的用户可以分为三类:超级用户、系统用户和普通用户。超级用户的用户名为root,它具有一切权限,只有进行系统维护(例如建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。系统用户是Linux系统正常工作所必需的内建的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,系统用户不能用来登录,如bin、daemon、adm、lp等用户。

而普通用户是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。每个用户都有一个数值,称为UID。超级用户的UID为0,系统用户的UID一般为1~499,普通用户的UID为500~60000之间的值。

2.账号系统文件

Linux系统采用纯文本文件来保存账号的各种信息,其中最重要的文件有/etc/passwd、/etc/shadow、/etc/group这几个。我们可以使用vi或其他编辑器来更改它们,也可以使用专门的命令来更改它们。账号的管理实际上就是对这几个文件的内容进行添加、修改和删除记录行的操作,不管以哪种形式管理账号,了解这几个文件的内容十分必要。

(1)/etc/passwd文件:是账号管理中最重要的一个文件,它是一个纯文本文件。每一个注册用户在该文件都有一个对应的记录行,这一记录行记录了此用户的必要信息。

例1:显示/etc/passwd文件。

#cat/etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:

从passwd文件中可以看到,第一行是root用户,紧接的是系统用户,普通用户通常在文件的尾部。passwd文件中的每一行由7个字段的数据组成,字段之间用“:”分隔,其格式如下:

◆账号名称:密码:UID:GID:个人资料:主目录:Shell

说明如下:

◆账号名称:用户登录Linux系统时使用的名称。

◆密码:这里的密码是经过加密后的密码,而不是真正的密码,若为“x”,说明密码经过了shadow的保护。

◆UID:用户的标识,是一个数值,Linux系统内部使用它来区分不同的用户。

◆GID:用户所在组的标识,是一个数值,Linux系统内部使用它来区分不同的组,相同的组具有相同的GID。

◆个人资料:可以记录用户的个人信息,如姓名、电话等信息(上例中test用户本项为空)。

◆主目录:通常是/home/username,这里username是用户名,用户执行“cd~”命令时当前目录会切换到个人主目录。

◆Shell:定义用户登录后使用的Shell,默认是bash。

(2)/etc/shadow文件:任何用户对passwd文件都有读的权限,虽然密码已经经过加密,但还是不能避免有人会获取加密后的密码。为了安全,Linux系统对密码提供了更多一层的保护,即把加密后的密码重定向到另一个文件/etc/shadow。密码如果经过shadow保护,在/etc/passwd文件中,每一记录行的密码字段会变成“x”,并且在/etc目录下存在文件shadow。只有超级用户能够读取shadow的内容。

(3)pwconv和pwunconv文件:安装Linux系统时,系统缺省采用shadow来保护密码。?如果安装Linux时未启用shadow,可以使用pwconv命令启用shadow。注意用root用户登录来执行该命令,执行的结果是/etc/passwd文件中的密码字段被改为“x”,同时产生/etc/shadow文件。相反,如果要取消shadow功能,可使用pwunconv命令。

以上讲解的是Linux用户管理

三、组的管理
1.Linux的组

Linux的组有私有组、系统组、标准组之分。建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组只容纳了一个用户。而标准组可以容纳多个用户,组中的用户都具有组所拥有的权利。系统组是Linux系统自动建立的。一个Linux用户可以属于多个组,用户所属的组又有基本组和附加组之分。在用户所属组中的第一个组称为基本组,基本组在/etc/passwd文件中指定;其他组为附加组,附加组在/etc/group文件中指定。属于多个组的用户所拥有的权限是它所在的组的权限之和。

Linux系统关于组的信息存放在文件/etc/group中。

例:显示文件/etc/group内容。

#cat/etc/group

root:x:0:root,test

bin:x:1:root,bin,daemon

……

test:x:500:

group1:x:1000:

user1:x:501:

group文件中的每一行记录了一个组的信息,每行包括4个字段,字段之间用“:”分隔。

◆格式为组名:组的密码:GID:组成员。

◆字段说明:

◆组名:组的名称,如root、bin等。

◆组的密码:设置加入组的密码,一般情况下不使用组密码,该字段通常没用。

◆GID:组的标识符,为数值,类似UID。

◆组成员:组所包含的用户,用户之间用“,”分隔。

2.用户组的添加、修改、删除

(1)添加组

可以手工编辑/etc/group文件来完成组的添加,也可以用命令groupadd来添加组,

命令格式:groupadd组名

例:添加组group1。

#groupaddgroup1

(2)修改组属性

使用groupmod命令来修改组名或GID。在groupmod-g命令后加上组的新ID号和组名来修改GID。在groupmod-n命令后加上新组名和原组名来修改组名。

3.删除组

使用groupdel命令来删除组。

◆格式:groupdel组名

◆说明:组被删除后,应使用chown命令将被删除用户组的目录与文件变为它隶属的用户组。

◆要改变组中的成员用户或改变组的密码使用gpasswd命令。

◆格式:gpasswd[参数][用户名]组名

◆不带参数时,即修改组密码。

参数选项:

◆-a:将用户加入到组中。

◆-d:将用户从组中删除。

四、Linux用户管理器
用户管理器是一个图形界面形式的管理工具,利用用户管理器可以方便地管理用户和用户组。根用户root可以选择“主菜单”→“系统设置”→“用户和组群”(或者在Shell提示符下键入redhat-config-users),就打开“RedHat用户管理器”窗口.

1.创建用户账号

在Linux用户管理器窗口中单击“添加用户”按钮,打开“创建新用户”对话框。

2.修改用户属性

若要修改用户属性,首先在Linux用户管理器窗口中选择一个已存在的用户账号,然后单击“属性”按钮,则出现“用户属性”窗口,在窗口中有“用户数据”、“账号信息”、“口令信息”和“组群”四个选项卡。用户可以选择相应的选项卡进行相关属性的修改。

3.修改用户组属性

在“组群”选项卡中,选择一个已存在的用户组,并单击“属性”按钮打开“组群属性”窗口,在该窗口中修改设置用户组的属性,将需加入本组的用户分别打上对号即可。

五、总结
用户管理命令:

useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;

组管理命令:

groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck注: 校验组配置文件是否合法和完整
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。

Windows Thin PC虚拟机安装最佳系统

Q:为什么要用windows thin pc  呢? A:主要是这年头ssd又贵空间又不够!!!! 其次这是个精简版 剔除了99%的普通用户不需要的冗余组件. 我用了很久没有任何问题, 短小精悍, 安装源文件只有1.5G, 装好的系统只有3G, 再加上一套Office和日常软件, 总共才5G. 开机内存占用只有300多M, 简直就是为虚拟机定做的.

尽管你在Windows Thin PC上拥有IE、Windows Media Player、记事本远程桌面客户端、Windows协助工具、系统管理工具、磁盘碎片清理工具等,但是一些Windows增值程序却不见了,比如Windows DVD Maker、Media Center。这样做是为了节省硬盘和内存空间,出于同一目的,Windows Thin PC默认采用的Aero效果为Aero Basic。

Windows Thin PC还大大减少了你的字体文件夹,它只包括41种字体。而Windows 7旗舰版则包含了134种。

另外,Windows Thin PC禁用了虚拟内存和休眠,使用户可以节约更多磁盘空间。

开始吧

1、从网上下载ParallelsDesktop (推荐正版99一年也不贵啊)WIN7 THIN PC英文版、中文包等,这个简单就略。(下载地址在最后)

2、安装WIN7 THIN PC英文版

完成后启动

 

3、安装中文包

Windows Thin PC 简体中文包的安装方法:

1.下载Windows Thin PC 简体中文语言包lp.cab放到C盘的根目录

2.以管理员身份运行CMD命令输入:
dism /online /add-package /packagepath:C:\lp.cab

3.完成后输入:
bcdedit /set {current} locale zh-cn

4.完成后再输入:
bcdboot %WinDir% /l zh-cn
完成后重启计算机进入控制面板进行设置即可。

4、激活它~

先将3个证书文件复制到C:根目录下面 然后以管理员身份打开dos命令行 在依次运行下面的命令就可以激活了

slmgr.vbs /ilc c:\pkeyconfig-embedded.xrm-ms
slmgr.vbs /ilc c:\Security-SPP-Component-SKU-Embedded-VLBA-ul.xrm-ms
slmgr.vbs /ilc c:\Security-SPP-Component-SKU-Embedded-VLBA-ul-oob.xrm-ms
slmgr.vbs /ipk XGY72-BRBBT-FF8MH-2GG8H-W7KCW
slmgr.vbs /xpr

 

 

PS : 此方法绝对可以激活 首先 文件目录放对 执行操作的权限要是管理员 最后执行命令的顺序要正确

附上本人设置一张ps 我8g内存

PS:安装时跳过激活码的输入

Windows Thin PC下载地址 http://download.microsoft.com/do … 415_EVAL_x86fre.iso

Windows Thin PC中文包下载地址 lp.cab

PS:用了1年多的Windows Thin PC,终于还是放弃了。

放弃的原因是:Windows Thin PC不支持安装Office 2013及Visio 2013。由于工作原因,不得不舍弃该虚拟机,现在常用虚拟机使用Windows 8.1。

日本亚马逊Jshoppers转运海淘kindle paperwhite图文攻略

        对paperhiwte垂涎已久,介绍一下从日本Amazon经过Jshoppers转运公司购买paperwhite的过程。这也是我的第一次海淘经历,非常顺利,也很简单。

        先介绍一下基本情况:Amazon出的kindle paperwhite(kpw)没有中国版(当然现在知乎上有一位”匿名用户”说2013年4月16日将进入中国,而且售价是599!这个大家自己判断吧!),所以如果想购买只能买其他版本,比如美版和日版,淘宝上的美版大概是890元左右,最贵的时候达到了1000左右!日版的大概是730,而且一般需要等1周左右。这样催生了我海淘的想法,主要是觉得挺有意思。

        整个流程就是现在日本Amazon上购买paperwhite,写地址的时候写的是转运公司Jshoppers提供给你的地址,然后你的paperwhite就送到了转运公司(大概1天),隔1天就会通知收到了paperwhite并让你付邮费,之后(大概隔1天)就用EMS给你发货了,等着收货就行了。

        总共历时7天,消费7980日元(87.16美元)+1145日元(75.18人民币)邮费+10元海关税≈630元。

下面介绍流程:

1.注册日本亚马逊
        想在日本亚马逊上买东西,当然要在日本亚马逊网站注册!网址:http://www.amazon.co.jp/,日文的?不懂?别慌!点击这里变成英文的。还不懂?那就别买了!

日本亚马逊Jshoppers转运海淘kindle <wbr>paperwhite图文攻略

注册点击:

日本亚马逊Jshoppers转运海淘kindle <wbr>paperwhite图文攻略

注册界面:

日本亚马逊Jshoppers转运海淘kindle <wbr>paperwhite图文攻略

        除了第2项Name Pronunciation其他的都应该能看懂吧?第2项就是名字的发音,估计是日语的平假名?我当时就是随便写的,没啥用,把你的Email写好就行了,名字写汉语拼音就好了。
2.注册Jshoppers转运公司
        有人会问为什么不直接让日本Amazon直接送到国内?这个应该是速度和价钱的问题,毕竟转运公司就是靠这个吃饭的,如果速度和价钱没有优势,谁会用?至于为什么用Jshoppers,而不是其他的转运公司?我只能说是缘分了。
因为Jshoppers不是一个完全的转运公司,所以直接搜索的话可能出现的是他们的官网的首页,好像是一个代购公司,转运的界面: http://www.jshoppers.com/forward/index.asp,这个就更不用怕了,有简体中文,在右上角可以选择,而且相信大家都看到了,支持支付宝!

日本亚马逊Jshoppers转运海淘kindle <wbr>paperwhite图文攻略

        点击加入会员,之后就自己填写个人信息吧,基本都给出了例子,电话写的时候加上86-就行了。自宅住址和收货人信息一样就可以了,就是自己最后的收货地址,不过每次发货的时候可以修改。进入之后看右侧

日本亚马逊Jshoppers转运海淘kindle <wbr>paperwhite图文攻略

        这个就是在日本Amazon上填写的地址。先在Step 1上打勾

日本亚马逊Jshoppers转运海淘kindle <wbr>paperwhite图文攻略

        在Step 3上就会显示出Jshoppers提供给你的地址

日本亚马逊Jshoppers转运海淘kindle <wbr>paperwhite图文攻略 

        其他的都是一样的,之后JT后面的转送号码是每个人都不一样的,Jshoppers就是根据这个转送号给每个人发邮件,要不他们怎么知道这个东西是谁的?
3.在Amazon Japan上购买paperwhite
        既然是运送到转运公司,总不能货到付款吧?所以有2种支付方式。
一种是准备好一张带Master Card或者Visa的信用卡,不得不说日本的验证真松啊,我的注册信息都忘了,Billing Address我写的就是Jshoppers提供的地址,Shipping Address写的就是自己的地址,不过好像木有验证……付款完全没问题!当然卡号是对的。
        另一种发放是如果学生没有信用卡,那么有支付宝吧?上淘宝买个日本亚马逊的礼品卡,有专门卖paperwhite专用的礼品券的,7980日元,没买过,不提供地址了。
        之后在日本Amazon上搜索paperwhite,添加到购物车,然后就是根据自己的情况确定付款方式,填写收货地址!千万按照Jshoppers提供的地址填写,尤其是JT+转送号和电话号码!填写的时候写好邮编号541-0056之后就自动出现一些信息,比较方便。付款7980日元(87.16美元)。如下是一个标准的地址。

日本亚马逊Jshoppers转运海淘kindle <wbr>paperwhite图文攻略

        至于送货就选择普通的吧,也就是免费的,好像刚注册Amazon有个什么优惠,能很快发货,送达。
        这个步骤会受到2封邮件,1封是订单的通知邮件,还有1封是订单的发货邮件。
        具体运送流程如下:

4.在Jshoppers上付邮费
        没想到Jshoppers是有周六周日休息的,我的货在Amazon上追踪的是周五晚上到的。所以等了2天在周一晚上等到了付款邮费的邮件,运气不错,据说paperwhite算上包装的重量可能是470g,也可能是610g,看RP,所以邮费也不一样,我的就是1145日元(75.18人民币),用的支付宝,很方便,周二晚上10点(据说都是晚上十点才发出当天已经发货的通知)收到了发货通知,给了EMS的订单号,可以通过EMS进行查询。
5.收到paperwhite
        EMS流程如下:

        开始我以为会好长时间,结果周三的时候直接到了大连,周四晚上直接送到了哈尔滨,只收了10元的海关税,不错!于是,经过了不到一周我就拿到了paperwhite!海淘结束。

        可能说的有点麻烦,我把各个时间点用个表格列出来就会比较清晰。
日期 星期  动态 邮件
2013.03.21 注册Amazon Japan、Jshoppers,购买paperwhite 2封:1封订单邮件,1封发货邮件
2013.03.22 paperwhite送到Jshoppers指定地址 0封
2013.03.23-2013.03.24 六日 Jshoppers放假,没有任何消息 0封
2013.03.25 晚上6点左右收到Jshoppers的付款通知 2封:1封支付款项,1封收到款项确认邮件
2013.03.26 晚上10点左右收到Jshoppers的EMS发货通知 1封:发货通知,给出订单号
2013.03.27 paperwhite到达大连 0封
2013.03.28 晚上6点左右收到paperwhite 0封

        简单吧?可能我说复杂了!
        kindle paperwhite初衷就是一个在这个嘈杂的世界、浮躁的社会中看书的电子设备,而且他只能看书,如果非要说手机也能看,iPad也能看,而且还能干其他的,为啥还需要这么个东西呢?我觉得这些人也不需要这种东西。
既然买了,真心希望大家能多看些书!