day03

①.回顾

描述GPLBSDAPACHE三大开源协议?

自由软件,开源协定  版权描述

www.kernel.org

 

GNU/Linux-->发布的是源代码-->第三方软件公司重新打包发行-->目前流行的发行版-->RedHat (Fedora 个人社区版   CentOS 社区企业版)

  -->SUSE OpenSUSE

  -->Debian --> Ubuntu -->Mint

  --> Gentoo

  --> LFS (Linux for scratch)  手动编译整个Linux系统

    注意:为了兼容之前的CPU,目前的发行版是在较老的CPU上使用通用的编译器进行编译工作,64bit操作系统是完全兼容32bit的操作系统的

    例如在奔腾的CPU上编译的Linux操作系统,能跑在新一代的CPU

优点:通用,兼容

缺点:无法发挥新硬件的新特性

所以在特定CPU平台上编译并使用才能发挥新硬件的最大效能(自定义高级技法)

 

②.常用命令

目录管理

ls   cd   pwd   mkdir   rmdir   tree

文件管理

touch   stat   file   rm   cp  mv  nona

date   clock  hwclock  cal

Linux中的配置文件都是文本文件,所以学号文本操作很重要。

文本处理

cat  tac  more  less   head  tail

 

cat命令

连接并显示

例如  cat /etc/issue /etc/fatab

-n 显示行号

-E 显示行结束符      注:Linux的文本行结束符是 $

                         Windows的文本行结束符为 $回车

-A 显示所有

tac命令 与cat命令相对

逆序显示文本内容

 

在模拟终端中:

Shift + PgUP    向上翻屏

Shift + PgDown  向下翻屏

 

Ctrl + c 键:控制信号 中断  输入命令时可以直接打断

 

more命令  less命令

分屏显示

more  /etc/rc.d/rc.sysinit

less   /etc/rc.d/rc.sysinit

space键   下一页     b键  上一页

enter键    下一行    k键  上一行

q键  退出    

支持查找功能    /string  向下查找 

?string  向上查找

head命令  tail命令

head -n 2 /etc/inittab   ====   head -2 /etc/inittab

tail  -n 5 /etc/inittab   ====   tail  -5 /etc/inittab

默认显示文件开头head  结尾tail 10行内容

-n  指定显示n行内容

tail -f  /etc/inittab

查看inittab文件并不退出,监控该文件内容的变化---主要用于日志文件,等待显示后续追加到次文件的新内容

 

cut命令  join命令   sed命令  awk命令文本处理

grep   sed   awk  文本处理三大利器

Linux中对于用户和密码的保存使用的是database

文件性数据库文件

/etc/passwd

cut命令   仅对显示的内容进行处理,不影响原文件

例如

cut -d: -f1 /etc/passwd

-d  指定分隔符 默认是空格 这里是:

-f  filed 字段  指定要显示的字段

-f1,3  选取字段13

-f1-3  选取字段13

sort命令

sort /etc/fstab   默认是以ASCII表中的升序排序

-n 按照数字大小排序

-r  逆序排序

-t  字段分隔符

-k  指定字段

-u  保留相同行一次(出去重复)

-f  忽略字符大小写(不区分大小写)

sort -t-k 3 -n /etc/passwd   会显示所有行内容,但是安装第3个字段的数值形式排序

 

uniq命令  

报告或忽略重复的行,只有相近的行相同才是重复的行

-d   只显示重复的行(1次)

-D  显示重复的行(所有)

-c   显示文件中行重复的次数

 

wc命令  

文本统计命令

wc /etc/fstab   结果:行数  单词数   字节数  文件路径

 -l  只显示行数

-w  只显示单词数

-c -m   只显示字符数

-L 最长一行包含的多少字符数

 

tr命令

字符处理命令  转换或删除字符

tr [option] ... SET1[SET2]...

tr a-z A-Z  < /etc/passwd

tr ab AB  < /etc/passwd

-d 删除指定字符集中出现的字符

tr -d ab < /etc/passwd

③.Bash及其特性

shell 外壳   

GUI   Gnome   KDE   Xface

CLI    sh  bash  csh  tcsh  ksh  tsh  zsh

 

logout  exit  退出登录

Linux中允许同一个账号登录多次,每次登录的bash是一个进程,在每个进程来看,当前主机只存在内核和它本身。这是虚拟内存技术。

程序:硬盘上的程序代码

进程:内存中的程序副本,或说是程序的执行实例。

      进程是有生命周期的,用进程号进行区分PID

 

用户的工作环境:不同用户的默认配置工作环境是一样的

新建用户将会按照默认配置进行新建

bash#  为管理员的提示符   $为普通用户的提示符

 

pstree命令

列出系统中的进程树

bashLinux中有子shell和父shell的关系

exit命令  退出子shell,返回上层shell

 

bash的特性

指出命令历史   上下箭头键可查找使用

支持管道和重定向

支持命令别名

命令行编辑操作

命令行展开

文件名通配

变量

编程---bash脚本   自动化运维

 

详解:

1.命令行编辑

光标的跳转

Ctrl + a    跳转到命令行首

Ctrl + e    跳转到命令行尾

Ctrl + u    删除光标至命令行首的字符

Ctrl + k    删除光标至命令行尾的字符

Ctrl  <-    左跳转一个单词

Ctrl  ->    右跳转一个单词

Ctrl + l     清屏 == clear

 

2.命令历史

上下箭头键  查找命令历史

history命令  列出曾经使用的命令

-c  清空命令历史记录

-d  #1  #2  删除第#1到第#2间的命令记录

注:用户退出后history中的命令会追加到用户的家目录的隐藏文件 .bash_history

-w  强制保存命令历史到历史记录文件中 ~/.bash_history

 

环境变量:PATH   命令执行的搜索路径

          HISTSIZE  命令历史条数的大小 默认是1000

  HISTFILESIZE  .bash_history文件中的记录的条数 默认1000

小技巧:

!$  引用前一个命令的最后一个参数

ESC键松开再按 :也可在命令行中引用前一个命令的最后一个参数

!string  执行命令历史中最近一个以指定字符串开头的命令

3.万能的tab

命令的补全功能:搜索PATH变量所指定的每个路径下的以我们给出的字符串开头的可执行文件

路径补全功能:搜索我们给出的起始路径下的每个文件名,并试图补全

4.命令别名

alias命令

alias COMMAND = COMMAND [OPTION] [ARGUMENTS]

例如:alias cls=clear

shell中定义的命令别名仅对于当前的shell有效,退出即失效

alias  查看当前系统中所有定义的命令别名

unalias 命令别名     撤销指定的命令别名

\COMMAND   使用原始命令

大多数的Linux发行版中使用下面三个文件来启动个人配置信息:

~/.bash_profile

~/.bash_login

~/.profile

这样配置只对特定用户生效,也是希望的结果,但有更通用的配置文件来实现对所有用户均能实现

/etc/profile

5.命令替换

把命令中的某个子命令替换为其执行的结果 $(COMMAND)

例如:echo The current directory is $(pwd)

  touch ./file-$(date +$F-%H-%M-%S).txt

$()  和  ``  反引号  均能实现命令替换功能

 

bash中支持的三种引号

`` 反引号------- 命令替换

“” 双引号----弱引用,可以实现变量替换

‘’ 单引号----强引用,不支持变量替换

6.文件名通配

globbing

*  代表任意长度的任意字符

?  代表任意单个字符

[]  指定范围内的任意单个字符   [abc]  [a-z]  [A-Z]  [0-9]

[^  ] 指定范围外的任意单个字符

 

字符集合

[[:apace:]]   空白字符     [[:punct:]]  标点符号

[[:lower:]]   [[:upper:]]  [[:alpha:]] 大小写字母

[[:digit:]]   数字   [[:alnumber:]] 数字和大小写字母

[^[:alpha:]] 支持取反操作


 

#man 7 glob  

whatis glob

 

④.Linux系统结构

    马哥2013年运维视频笔记 day03 Linux系统常识_Linxu系统常识

程序:存放在外围存储上,如硬盘

进程:运行在内存里,是程序的实例

 

库:不可独立运行

程序编译时未把共享库中的代码编译进自身,只保留了一个引用,当运行时必须先把共享库装载到内存中。  共享库就是可以被多人程序使用(副本,一份拷贝)

 

对于计算机而言,使用的是它的计算资源,而对计算资源访问是通过用户来关联相关的访问权限和使用凭证的。用户以计算的角度看就是权限的容器,而用户组就是容器的复制,属于逻辑上的概念,可以方便的实现对计算资源的指派。

对于Linux系统,用户是通过UID来识别不同的用户的,它是获取服务(计算资源)的凭证,而进程是用户和系统交互的代理。

进程安全上下文:secure context  谁发起的进程,该进程就代理谁。它能访问的资源取决于进程的权限和姚操作的文件的权限,当一致时即拥有完全的权限,不一致时就拥有其他的权限。

 

⑤.权限管理

rwx

文件:

r  可读  可以使用类型cat等的命令进程查看其内容

可写  可以编辑或删除该文件

x  可执行  可以在命令行下当命令提交给内核运行

目录:

r  可以对此目录执行ls命令列出其内部的所有文件

w  可以在此目录中新建文件或目录

x  可以使用cd切换进入该目录,也可以使用ls -l 查看其内部文件的详细信息

rwx 三位一体

r--  只读

rw- 读写

rwx 读写执行

---  无权限

 

ls -l 命令

马哥2013年运维视频笔记 day03 Linux系统常识_Linxu系统常识_02

文件或目录的是按照属主、属组、其他 三组组合权限分配的

由于权限的每一位可以和1关联  因此权限可以使用例如这样的表现形式:

755  rwxr-xr-x

640  rw-r---- 

 

用户  UID    

进程  PID

组    GID

解析:名称解析  计算机对于数字的处理具有先天的优势,而对于字符的处理需要第三方软件的转换,Linux中对于用户的管理使用UIDGID等进行,对于进程的管理使用PID

UID ---> /etc/passwd   用户信息库   密码 /etc/shadow  影子口令

GID --->/etc/group     组信息库     密码 /etc/gshadow

 

用户类型:

超级管理员  root   UID=0

普通用户      UID  1---65535

系统用户  1--499  专门用于运行后台进程的用户,不需要登录系统

一般用户  500--60000  可登录系统,获取资源

 

组类型:

仿照用户类型进行的分组

管理员组

普通组:

系统组

一般组

但实际组类别:

私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个用户同名的组

基本组:用户的默认组

附加组、额外组:默认组以外的其他组

 

 

进程安全上下文:

tom用户登录系统,启动的shell 的进程的属主  属组  tom  tom

用户tom要运行比如ls命令时,则需要ls文件的操作权限比对 由于ls的属主  属组  root  root  rwxr-xr-x   tomshell进程按照其他组的权限进行执行,ls被执行之后的ls进程的属主  属组  tom  tom了。若要操作的对象文件是a.txt

rwxrw-r--  jerry  tom  a.txt  ,①属主是否一样②进程的属主是否属于对象的属组,这样就是按照属组的权限进行访问

 

⑥./etc/passwd 

whatis passwd     查看man手册的信息

man 5 passwd     查看passwd文件的格式信息

        马哥2013年运维视频笔记 day03 Linux系统常识_Linxu系统常识_03

第一列:account   用户名

第二列:password 密码占位符  x

第三列:UID

第四列:GID

第五列:comment  注释信息

第六列:home dir  家目录

第七列:shell 默认的shell   特殊 /sbin/nologin  不可登录的shell

     系统中合法的shell/etc/shells 

 

/etc/shadow

            马哥2013年运维视频笔记 day03 Linux系统常识_Linxu系统常识_04

第一列:account   用户名

第二列:加密的密码  $1 md5加密   $slat  杂质   $xxx 密码  若为!!代表锁定用户

第三列:最近一次修改密码的时间

第四列:密码最短有效期限

第五列:密码最长有效期限   99999  无限期

第六列:密码过期前多少天警告用户

第七列:密码修改的宽限期

第八列:用户禁用的时间点  

第九列:保留未使用

 

/etc/group

第一列:组名称

第二列:密码占位符 x

第三列:GID

 

/etc/gshadow

第一列:组名称

第二列:密码  或!!  无密码

第三列:保留

 

加密的方法:

1.对称加密:加密和解密使用同一个密码

2.非对称加密:公钥加密  每个密码都成对出现

一个为私钥  secret key  一个为公钥  public key

私钥加密公钥解密    公钥加密私钥解密

3.单向加密

散列加密:能加密不能解密,提取数据中的特征码(唯一)又叫指纹加密(非可逆),常用于数据完整性校验

特点:雪崩效应   定长输出

md5message digest  128定长输出

SHA1  160位定长输出

Linux中可使用md5sum FILENAME来手动提取文件的特征码

 

 

⑦.用户管理相关的命令

useradd命令和adduser命令的关系

马哥2013年运维视频笔记 day03 Linux系统常识_Linxu系统常识_05

adduser就是useradd的软链接

 

用法:

useradd USERNAME

 

useradd hadoop    新建用户是被锁定的,空密码用户禁止登陆系统

tail -1 /etc/passwd

passwd hadoop    修改密码

tail -1 /etc/group  

可以看到默认情况添加的用户会新建和他同名的私有组作为他的基本组

/etc/default/useradd  配置文件

            马哥2013年运维视频笔记 day03 Linux系统常识_Linxu系统常识_06