7月29号,马哥linux学习第五天,学习内容主要:
一、索引节点
二、硬链接与软链接
三、重定向和管道
四、用户和用户组
一、索引节点(index node)
一个节点 (索引节点)是在一个表项,包含有关文件的信息 ( 元数据 ),包括:
文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
一个目录是目录下的文件名和文件inode号之间的映射
CP命令和inode:
分配一个空闲的inode号,在inode表中生成新条目 在目录中创建一个目录项,将名称与 inode编号关联 拷贝数据生成新的文件
cp -f /etc/issue/ f1 将/etc/issue/删除再创建f1文件
rm命令和inode:
链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项 (数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖)
mv命令和inode:
目标和源在相同的文件系统:用新的文件名创建对应新的目录项 删除旧目录条目对应的旧的文件名 不影响inode表(除时间戳)或磁盘上的数据位置:没有 数据被移动!
目标和源在一个不同的文件系统: mv相当于cp和rm
二、硬链接与软链接
硬链接
语法: ln filename [linkname ]
创建硬链接会增加额外的记录项以引用文件;对应于同一文件系统上一个物理文件;每个目录引用相同的inode号;创建时链接数递增;删除文件时: rm命令递减计数的链接;文件要存在,至少有一个链接数当链接数为零时,该文件被删除;不能跨越驱动器或分区,不能给目录创硬链接。
软链接
语法:ln -s filename [linkname]
一个符号链接指向另一个文件;ls - l的 显示链接的名称和引用的文件;一个符号链接的内容是它引用文件的名称;可以对目录进行;可以跨分区;指向的是另一个文件的路径,其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数。
三、重定向
标准输入与输出:
Linux给程序提供三种I/O设备:
标准输入(STDIN)-0 默认接受来自键盘的输入
标准输出(STDOUT)-1 默认输出到终端窗口
标准错误(STDERR)-2 默认输出到终端窗口
I/O重定向:改变默认位置
STDOUT和STDERR可以被重定向到文件: 命令 操作符号 文件名
支持的操作符号包括:
> 把STDOUT重定向到文件(set -C: 禁止将内容覆盖已有文件,但可追加 强制覆盖:>| set +C: 解除禁止)
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件
( > 文件内容会被覆盖 >> 原有内容基础上,追加内容)
标准输出和错误输出各自定向至不同位置:
COMMAND > /path/to/file.out 2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向:
(1)&>:覆盖重定向 &>>:追加重定向
(2)COMMAND > /path/to/file.out 2> &1 (&1表示同标准正确输出目录)
COMMAND >> /path/to/file.out 2> &1
多行重定向:cat <<EOF cat > file <<EOF
():合并多个程序的STDOUT ( cal 2007 ; cal 2008 ) > all.txt
tr命令:转换和删除字符
tr [OPTION]... SET1 [SET2]
-c或——complerment:取字符集的补集
-d或——delete:删除所有属于第一字符集的字符
-s或—squeeze-repeats:把连续重复的字符以单独一个字符 表示
-t或--truncate-set1:将第一个字符集对应字符转化为第二 字符集对应的字符
tr [a-z] [A-Z] 将小写转化为大写(输入时不能直接回删,可使用Ctrl+Backspace回删)
管道
命令1 | 命令2 | 命令3 | …
连接程序,实现将前一个命令的输出直接定向后一个程序当作输入的数据流
ls | tr ‘a-z‘ ‘A-Z‘
STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现
less :一页一页地查看输入: $ ls -l /etc | less
mail: 通过电子邮件发送输入: $ echo "test email" | mail \ -s "test" user@example.com lpr:把输入发送给打印机 $ echo "test print" | lpr -P printer_name
tee命令:一次输入,两次输出(标准输出+文件)
$命令1 | tee 文件名 | 命令2
把命令1的STDOUT保存在文件名中,然后管道输入给命令2
cat /etc/issue/ | tee /tmp/issue.tee | tr ‘a-z‘ ‘A-Z‘
使用: 保存不同阶段的输出;复杂管道的故障排除;同时查看和记录输出
特殊设备:
/dev/null
要使用状态结果而不需要执行结果时,执行结果放入 /dev/null
四、用户及用户组
用户user
Linux用户:Username/UID
管理员:root, 0
普通用户:1-65535
系统用户:1-499(CENTOS6), 1-999(CENTOS7) 对守护进程获取资源进行权限分配
登录用户:500(CENTOS6)+, 1000(CENTOS7)+
交互式登录
组group
Linux组:Groupname/GID
管理员组:root, 0
普通组:
系统组:1-499, 1-999
普通组:500+, 1000+
用户的主要组(主组):
用户必须属于一个且只有一个主组 组名同用户名,且仅包含一个用户:私有组
用户的附加组(辅助组):
一个用户可以属于零个或多个辅助组
Linux安全上下文
进程(运行中的程序)所能够访问资源的权限取决于进程的运行者的身份
密码的复杂性策略
使用数字、大写字母、小写字母及特殊字符中至少3种
足够长(至少8位)使用随机密码
定期更换;不要使用最近曾经使用过的密码
加密算法
对称加密:加密和解密使用一个
非对称加密:加密和解密使用一对密钥(公钥、私钥)
单向加密::哈希算法,只能加密,不能解密,提取数据的特征码(定长输出,雪崩效应)
算法类型:md5 sha1 sha224 sha256 sha384 sha512
用户和组的主要配置文件
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
passwd 文件格式
①login name:登录用名(wang)
②passwd:密码 (x)
③UID:用户身份编号 (1000)
④GID:登录默认所在组编号 (1000)
⑤GECOS:用户全名或注释
⑥home directory:用户主目录 (/home/wang)
⑦shell:用户默认使用shell (/bin/bash)
shadow文件格式
登录用名
用户密码:一般用sha512加密($n$salt$密码 其中n为加密类型 salt为每次添加的随机数)
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效。
group文件格式
群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在 /etc/gshadow
GID:就是群组的 ID
以当前组为附加组的用户列表(分隔符为逗号)
gshdow文件格式
群组名称:就是群组名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:(分隔符为逗号)
本文出自 “笑猴子” 博客,请务必保留此出处http://xiaomonky.blog.51cto.com/11869371/1833394
DAY5:linux文件系统(3)+重定向和管道+用户组赫尔权限管理(1)
原文地址:http://xiaomonky.blog.51cto.com/11869371/1833394