day5总结笔记

本文内容:

索引节点

硬链接与软链接

重定向

用户组

useradd命令


索引节点:

索引节点包含了一个表,包含了有关文件的元数据,包含:

    文件类型,权限,UID,GID 链接数(指向这个文件名路径名称个数) 

    该文件的大小和不同的时间戳。 

    指向磁盘上文件的数据块指针。 

有关文件的其他数据。

索引节点与数据是分开存放的。

 

cp命令:分配一个空闲的inode号,在inode表中生成新条目,在目录中创建一个目录项,将名称与inode编号关联,拷贝数据生成新的文件。

 

rm 命令:链接数递减,从而释放的inode号可以被重用把数据块放在空闲列表中 删除目录项 数据实际上不会马上被删除,但当另一个文件使用数据块 时将被覆盖。

 

 mv命令:如果mv命令的目标和源在相同的文件系统,作为mv 命令 用新的文件名创建对应新的目录项 删除旧目录条目对应的旧的文件名 不影响inode表(除时间戳)或磁盘上的数据位置,此时没有数据被移动!所以速度很快,如果目标和源在一个不同的文件系统, mv相当于cp和rm。

 

硬链接:一个文件的一个或多个文件名,本质上是一个文件。

特点:创建硬链接会增加额外的记录项以引用文件 v 

      对应于同一文件系统上一个物理文件 v 

      每个目录引用相同的inode号。

      创建时链接数递增,删除文件时,rm命令递减计数的链接

      文件要存在,至少有一个链接数,当链接数为零时,该文件被删除

   v 不能跨越驱动器或分区

语法: ln filename [linkname]

t1.png

可以看出,f1和f2实际上是一个文件。

 

 

 

软链接:软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

t2.png

 

I/O:输入与输出

程序:指令+数据 读入数据:Input 输出数据:Output 

打开的文件都有一个fd: file descriptor (文件描述符) v

Linux给程序提供三种I/O设备 Ø 

标准输入(STDIN)-0 默认接受来自键盘的输入 Ø 

标准输出(STDOUT)-1 默认输出到终端窗口 Ø 

标准错误(STDERR)-2 默认输出到终端窗口 

STDOUT和STDERR可以被重定向到文件: 

命令 操作符号 文件名

t3.png

 支持的操作符号包括: 

> 把STDOUT重定向到文件 

2> 把STDERR重定向到文件 

&> 把所有输出重定向到文件 

 

标准输入重定向:

多行重定向:cat <<E >f1

>

>

>E

 

单行重定向:

cat >f1

xxx

yyy

mail重定向:又称就地文本

mail -s hi wang <<eof

>aa

>bb

>cc

>eof

 

tr命令:转换或者删除字符串

tr [options] str1 str2

eg:

tr a-z A-Z

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

选项:

-c:取补集。

-d:删除字符,不做转换。

-s:把连续的重复的字符用一个字符显示。

-t:str1 str2 删除第一字符集较第二字符集多出的部分。

 

练习:

1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

t4.png

 

2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中 v 

t5.png

 

3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下: Hello, I am 用户名,the system version is here,please help me to  check it ,thanks! 操作系统版本信息 

t6.png

 

 

4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开。

t7.png

5、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和

 t8.png

 

6、删除Windows文本文件中的'^M'字符 

 

7、处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字 和空格

t9.png

 

 

管道(使用符号“|”表示)用来连接命令 命令1 | 命令2 | 命令3 | … Ø                                  将命令1的STDOUT发送给命令2的STDIN,命令2的 STDOUT发送到命令3的 STDIN ,STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现。 Ø 

最后一个命令会在当前shell进程的子shell进程中执行用来组合多种工具的功能。

eg:ls  | tr 'a-z' 'A-Z'。

 

tee:可以继续标准输出。同时写进文件中。

 

set -C:禁用覆盖功能。

set +C:取消禁用。

 

/dev/null:垃圾桶,不占空间。

用户,组和权限

linux用户:Uername/UID

管理员:root uid为0

一般用户:1-65535

系统用户:1-499 对守护进程获取资源进行权限分配。(不需要登录)

登录用户:500+

 

组:Groupname/GID

管理员组:root,0

普通组:

系统组:1-499

用户组:500+

 

主要组:用户必须属于一个且只有一个主组

组名同用户名,且仅包含一个用户,又叫私有组。

 

用户的附加组(辅助组)

一个用户可以属于0个或多个附加组。

组的信息保存在/etc/group下。

id 用户:查看用户,属组信息。

 

运行中的程序:进程

以进程发起者身份运行:

root:/bin/cat

liuzhuo:/bin/cat

进程所能访问资源的权限取决于进程的运行者的身份。

 

用户和组的配置文件:

/etc/passwd:用户及其属性信息(名称、UID、主组ID等)

/etc/group:组及其属性信息

/etc/shadow:用户密码及其相关属性

/etc/gshadow:组密码及其相关属性

 

passwd文件格式:

login name:登录用名(wang) v

passwd:密码 (x) v

UID:用户身份编号 (1000) v

GID:登录默认所在组编号 (1000) v

GECOS:用户全名或注释 v

home directory:用户主目录 (/home/wang) v

shell:用户默认使用shell (/bin/bash)

 

 

 

chsh -s+路径 改shell

linux通过UID来识别是管理员还是普通用户。只认ID 不认人。

 

shadow文件格式 

登录用名 v

用户密码:一般用sha512加密 v($6)

从1970年1月1日起到密码最近一次被更改的时间 

密码再过几天可以被变更(0表示随时可被变更) 

密码再过几天必须被变更(99999表示永不过期) 

密码过期前几天系统提醒用户(默认为一周) 

密码过期几天后帐号会被锁定 

从1970年1月1日算起,多少天后帐号失效。

 

group配置文件:

groups:查看某个用户属于哪个用户组

id +用户名:查看用户的信息。

root:x:0:(组的成员) 0为组id。

默认情况下,创建一个文件的所有者和所属组同名。

bin:::bin,daemon

第一个组名,第二个密码,第三个放该组的管理员账户

newgrp:临时性切换属组。

 

vipw=vi /etc/passwd

vigr=vi /etc/group  具有语法检查功能。

 

pwck:检查语法

grpck:检查语法

 

useradd:创建用户

useradd [options] 用户名

useradd -u 1234  zhang 指定UID

useradd -g wang li 指定组名或者GID

-o 配合-u 选项,不检查UID的唯一性 

-c "COMMENT":用户的注释信息 -d HOME_DIR: 以指定的路径(不存在)为家目录 -s SHELL: 指明用户的默认shell程序 可用列表在/etc/shells文件中。

对于服务等系统应用,shell可以设置成为/sbin/nologin 同时加-r定义为系统用户,这样就不会自动创建家目录。

 -G GROUP1[,GROUP2,…]:为用户指明附加组,组必须事先存

-N 不创建私用组做主组,使用users组做主组 

-r: 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000

 

家目录模板文件夹:/etc/skel

cat /etc/default/useradd 添加用户的配置文件

useradd -D 显示useradd配置文件信息。

 

原创文章,作者:liuzhuo,如若转载,请注明出处:http://www.178linux.com/30503

(0)
liuzhuoliuzhuo
上一篇 2016-08-08
下一篇 2016-08-08

相关推荐

  • C语言结构体里的成员数组和指针

    单看这文章的标题,你可能会觉得好像没什么意思。你先别下这个结论,相信这篇文章会对你理解C语言有帮助。这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接。微博截图如下。我觉得好多人对这段代码的理解还不够深入,所以写下了这篇文章。 为了方便你把代码copy过去编译和调试,我把代码列在下面: final void&n…

    Linux干货 2016-05-29
  • bash功能特性六 bash操作环境

    一、bash查找命令的顺序     1、以相对路径或绝对路径执行的命令;     2、由alias找到该命令来执行;     3、由bash内置的命令来执行;     4、通过$PATH这个变量的顺序找到的第一个命令来执…

    Linux干货 2015-04-22
  • 设计模式(十一)代理模式Proxy(结构型)

    1.概述        因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提供…

    Linux干货 2015-07-09
  • Javascript 装载和执行

    一两个月前在淘宝内网里看到一个优化Javascript代码的竞赛,发现有不少的人对Javascript的执行和装载的基础并不懂,所以,从那天起我就想写一篇文章,但一直耽搁了。自上篇《浏览器渲染原理简介》,正好也可以承前启后。 首先,我想说一下Javascript的装载和执行。通常来说,浏览器对于Javascript的运行有两大特性:1)载入后马上执行,2)执…

    Linux干货 2016-07-10
  • 千万不要把 bool 设计成函数参数

    我们有很多Coding Style 或 代码规范。但这一条可能会经常被我们所遗忘,就是我们经常会在函数的参数里使用bool参数,这会大大地降低代码的可读性。不信?我们先来看看下面的代码。 当你读到下面的代码,你会觉得这个代码是什么意思? widget->repaint(false); 是不要repaint吗?还是别的什么意思?看了文档后,我们才知道这个…

    Linux干货 2016-07-10
  • 浅谈Nginx(二)—http下server配置

    浅谈Nginx(二)—http下server配置 此文介绍Nginx下的http模块,着重介绍http模块下的server服务 ——–依据”马哥教育”主讲人马永亮导师的上课笔记整理——- 目录  一. http相关的基本配置:     1)…

    系统运维 2017-02-07