inode(index node)表中包含文件系统全部文件列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:
文件类型,权限,UID,GID,连接数(指向这个文件名路径名称个数),该文件的大小和不一样的时间戳,指向磁盘上文件的数据块指针,有关文件的其余数据
文件引用一个是inode号,人是经过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射
CP的命令:
分配一个空闲的inode号,在inode表中生成新条目;在目录中建立一个目录项,将名称与inode编号关联;拷贝数据生成新的文件。
node
rm命令:
连接数递减,从而释放的inode号能够被再次利用;把数据块放在空闲列表中;删除目录项,数据实际上不会立刻被删除,但当另外一个文件使用数据块时将被覆盖。
mv命令:
1.若是mv命令的目标和源在相同的文件系统:
用新的文件名建立对应新的目录项,删除旧目录条目对应的旧的文件名,不影响inode表(除时间戳)或磁盘上的数据位置。没有数据被移动!
2.若是目标和源在一个不一样的文件系统:
mv至关于cp和rm硬连接
建立硬连接:
会增长额外的记录项以引用文件,对应于同一文件系统上一个物理文件,每一个目录引用相同的inode号,建立时连接数递增
删除文件时:
rm命令递减计数的连接,文件要存在,至少有一个连接数,当连接数为零时,该文件被删除
不能跨越驱动器或分区,不能对目录建立硬连接
语法: ln filename [linkname]
软连接(符号连接)
一个符号连接指向另外一个文件,ls -l的显示连接的名称和引用的文件,一个符号连接的内容是它引用文件的名称
能够对目录进行,能够跨分区
指向的是另外一个文件的路径;其大小为指向的路径字符串的长度;不增长或减小目标文件inode的引用计数;
语法:ln -s filename [linkname]文件能够包含多种类型的数据
linux
检查文文件类型,而后肯定适当的开放命令或应用程序使用
file [options] <filename>...
Option:
-b列出文件辨识结果时,不显示文件名称。
-c详细显示指令执行过程,便于排错或分析程序执行
-f列出文件中文件名的文件类型
-F使用指定分隔符号替换输出文件名后默认的”:”分隔符
-i输出mime类型的字符串
-L查看对应软连接对应文件的文件类型
-z尝试去解读压缩文件的内容
--help显示命令在线帮助
数据流重定向
做用:把I/O频道重定向入文件,使用管道连接命令
程序有指令数据组成
读入数据:Input
输出数据:Output
打开的文件都有一个fd: file descriptor (文件描述符)Linux给程序提供三种I/O设备
标准输入(STDIN)-0默认接受来自键盘的输入
标准输出(STDOUT)-1默认输出到终端窗口
标准错误(STDERR)-2默认输出到终端窗口
I/O重定向:改变默认位置
STDOUT和STDERR能够被重定向到文件:
命令操做符号文件名
支持的操做符号包括:
> 把STDOUT重定向到文件
2>把STDERR重定向到文件
&>把全部输出重定向到文件
> 文件内容会被覆盖
set -C: 禁止将内容覆盖已有文件,但可追加
强制覆盖:>|
set +C: 容许覆盖
(set -C 只对当前shell有效)
算法
>> 原有内容基础上,追加内容
2>: 覆盖重定向错误输出数据流;
2>>: 追加剧定向错误输出数据流;
标准输出和错误输出各自定向至不一样位置:
COMMAND > /path/to/file.out 2> /path/to/error.outshell
合并标准输出和错误输出为同一个数据流进行重定向:
&>:覆盖重定向
&>>:追加剧定向
COMMAND > /path/to/file.out 2>&1 (顺序很重要)
COMMAND >> /path/to/file.out 2>>&1vim
find /etc -name passwd 2> /dev/null (将无用的错误信息丢弃)
():合并多个程序的STDOUT
(cal2007;cal2008)> all.txt
centos
Cat > filea < fileb
ctrl+d离开,可使用文件来代替键盘的输入
使用“<<终止词”命令从键盘把多行重导向给STDIN
直到终止词位置的全部文本都发送给STDIN
有时被称为就地文本(heretext)
tr 转换和删除字符
tr[OPTION]... SET1 [SET2]
选项:
-c或——complerment:取字符集的补集
-d或——delete:删除全部属于第一字符集的字符;
-s或—squeeze-repeats:把连续重复的字符以单独一个字符表示
-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符
使用<来重定向标准输入
tr ‘a-z’ ‘A-Z’ < /etc/issue
该命令会把/etc/issue中的小写字符都转换成大写字符
tr –d ‘abc’ < /etc/fstab 删除fstab文件中的全部abc中任意字符安全
管道(使用符号“|”表示)用来链接命令
命令1 | 命令2 | 命令3 | …
将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
STDERR默认不能经过管道转发,可利用2>&1 或|& 实现
最后一个命令会在当前shell进程的子shell进程中执行用来
组合多种工具的功能
ls | tr 'a-z' 'A-Z'less
less :一页一页地查看输入:
ls -l /etc | less
mail:经过电子邮件发送输入:
echo "testemail" | mail -s "test" user@example.com
lpr:把输入发送给打印机
echo "testprint" | lpr -P printer_name
双重定向:命令1 | tee文件名| 命令2
把命令1的STDOUT保存在文件名中,而后管道输入给命令2
使用:保存不一样阶段的输出,复杂管道的故障排除,同时查看和记录输出。编辑器
一、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中ide
二、将当前系统登陆用户的信息转换为大写后保存至/tmp/who.out文件中
三、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文以下:
Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks!
操做系统版本信息
四、将/root/下文件列表,显示成一行,并文件名之间用空格隔开。
五、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出全部数字的总和
六、删除Windows文本文件中的'^M'字符
七、处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格
八、将PATH变量每一个目录显示在独立的一行
九、删除指定文件的空行
十、将文件中每一个单词(字母)显示在独立的一行,并没有空行
令牌token,identity
Linux用户:Username/UID
管理员:root, 0
普通用户:1-65535
系统用户:1-499(CENTOS6), 1-999(CENTOS7)
登陆用户:500+(CENTOS6), 1000+(CENTOS7)
Linux安全上下文
运行中的程序:进程(process)
以进程发起者的身份运行:
root: /bin/cat
user: /bin/cat
进程所可以访问资源的权限取决于进程的运行者的身份
Linux组的类别:
主要组(主组):GID位于/etc/passwd中,用户必须属于一个且只有一个主组
私有组:组名同用户名,且仅包含一个用户,是默认的主组,能够不存在
附加组(辅助组):一个用户能够属于零个或多个辅助组
Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
/etc/passwd文件结构
login name:用名名
passwd:密码(x)
UID:用户身份编号
GID:登陆默认所在组(主组)编号
GECOS:用户全名或注释
home directory:用户主目录
shell:用户默认使用shell
/etc/shadow文件结构
用户名
用户密码:通常用sha512加密
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天能够被变动(0表示随时可被变动)
密码再过几天必须被变动(99999表示永不过时)
密码过时前几天系统提醒用户(默认为一周)
密码过时几天后账号会被锁定
从1970年1月1日算起,多少天后账号失效。
加密机制:
加密:明文--> 密文
解密:密文--> 明文
单向加密:哈希算法,原文不一样,密文必不一样
相同算法定长输出,得到密文不可逆推出原始数据
雪崩效应:初始条件的微小改变,引发结果的巨大改变
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha256: 256bits
sha384: 384bits
sha512: 512bits
更改加密算法authconfig--passalgo=sha256 --update
设置安全密码方法:
使用数字、大写字母、小写字母及特殊字符中至少3种;足够长;使用随机密码;按期更换;不要使用最近曾经使用过的密码。
/etc/group文件结构
群组名称:就是群组名称
群组密码:一般不须要设定,密码是被记录在/etc/gshadow
GID:就是群组的ID
以当前组为附加组的用户列
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:(分隔符为逗号)
vipw和vigr:调用vim编辑器修改/etc/passwd、/etc/group带有语法检查功能
pwck和grpck:对/etc/passwd、/etc/group语法进行检查
添加新用户
useradd[options] LOGIN
-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs
-o 配合-u 选项,不检查UID的惟一性
-g GID:指明用户所属基本组,可为组名,也能够GID
-c "COMMENT":用户的注释信息
-d HOME_DIR:以指定的路径(不存在)为家目录
-s SHELL: 指明用户的默认shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...]:为用户指明附加组,组必须事先存在
-N 不建立私用组作主组,使用users组作主组
-r: 建立系统用户CentOS 6: ID<500,CentOS 7: ID<1000
默认值设定:/etc/default/useradd文件中
显示或更改默认设置:
useradd-D
useradd–D -s SHELL
默认用户家目录参考文件
/etc/skel
一、建立用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
二、建立下面的用户、组和组成员关系
名字为admins 的组
用户natasha,使用admins 做为附属组
用户harry,也使用admins 做为附属组
用户sarah,不可交互登陆系统,且不是admins 的成员,natasha,harry,sarah密码都是centos