根据RH033课程整理
lecture 14
12月27号整理
用户:获取系统资源权限的集合。
管理员:UID 0
系统用户:UID 1-499
普通用户:UID >500
authentication 认证
authorization 授权
组: GID 容器 权限的集合
私有组:只有一个用户,组名和用户名是一样的,ID号也一样。
公共组:一个组中可能有多个用户。
系统组 :专门存储系统用户
AUTHENTICATION 认证
AUTHORIZATION 授权
/etc/passwd 冒号隔开 七个字段
1 2 3 4 5 6 7
1 用户名
2 密码占位符,有密码但是加密的,在/etc/shadow中
3 UID
4 GID 与/etc/group 有关
5 使用信息说明栏
6 用户家目录
7 用户默认shell
/etc/shadow 存放用户密码
使用md5,salt加密
单项加密:algo,定长加密,不可逆 ,特征码,雪崩效应
雪崩效应: 在任何时候,输入两段数据,在这两端数据中只要有一个二进制位不一样,则输出的结果中至少有一半都不一样
MD5 定长输出:128位 麻省理工学院 linux中广泛采用
sha1 160位 哈希算法
1 账号名称 必须要与/etc/passwd相同
2 密码 使用函数加密后的密码,如果第一个字符为“*”,“!”表示此账号不能使用
3 最近改动密码的日期,以unix元年为始
4 密码不可被改动的天数
5 密码需要重新设置的天数,默认9999,即不需要重新设置
6 密码变更前的警告期限
7 密码过期后还能再使用的天数
8 账号失效的日期
9 保留位
useradd :添加一个用户
-u UID 直接指定一个特定的UID给这个账号
-g GID 基本组
-G groups 附加组
-s shell 指定shell类型
-M 强制 不为此用户创建家目录
-m 强制 要建立使用者家目录
-c 说明信息
-d 指定某个目录成为用户家目录,而不使用默认家目录
chsh user2 改变用户的shell类型
-l 列出当前系统上可用的shell
-s 设定修改自己的shell
usermod
-u 改UID
–g 改GID
-G 修改使用者支持的附加组 –a 追加进去 二者通常一起用
-s 修改shell
-d 修改账号的家目录 –m 将原家目录的内容一同迁移到新家目录 二者通常一起用
-l 改变用户的login name
-c 改变用户的说明信息
-e 修改过期时间
-f 修改密码过期后还能再使用的天数
-L 将密码锁定
-U 将用户解锁 将/etc/shadow密码栏中的!去掉
passwd
-l 锁定账号
-u 将锁定的账号解锁
--stdin 将一串字符直接设定为密码
-n 密码不可被改动的天数
-x 密码需要重新设置的天数,即最长天数
-w 密码变更前的警告期限
-S 显示目前username的相关信息
/etc/group 文件
1 群组名称
2 群组密码
3 GID
4 支持的账号名称,账号以此组为附加组,多个账号之间用逗号隔开
/etc/gshadow 文件
1 群组名称
2 密码栏,开头为!表示无法登录
3 群组管理员的账号
4 该群组所属的账号 与(/etc/group相同)
groupadd
-g GID 用来直接给于某个GID
-r grp_name 建立系统群组
groupmod
-g 修改既有的GID数字;
-n 修改既有的GID名称
gpasswd 给组设一个密码
newgrp 临时性切换自己的组到另外一个组,给组加一个密码,提示用户输入
userdel 删除一个用户
-r 连同使用者家目录一起删除
使用者身份切换
su
- 如果执行 su - 时,表示该使用者想要变换身份成为root,且使用root的环境设定参数档,如/root/.bash_profile等
-l 后面可以跟使用者
过去一段时间内曾经成功登录系统的用户
/var/log/wtmp<------list –n 最近10次的登录
过去一段时间内尝试登录系统但没有成功的用户
/var/log/btmp <-------lastb –n 最近10次尝试登录但没有登录成功的用户
umask 设置仅对当前shell生效
SUID 任何一个文件置了SUID位,当一个用户去执行这个文件时,默认的执行者身份不是这个用户,而是以文件属主的身份去执行。 chmod u+s file
SGID 当一个用户去执行这个文件时,默认的执行者身份不是这个用户,而是以文件属组的身份去执行。 chmod g+s file
sticky 粘滞位,通常对目录来讲的,尤其是public dir 全局可写,
意思就是这个目录是公共的,任何人都可以写,但只能删除自己写入的内容。
chmod o+t file
chmod (1/2/4)755 file
Lecture 15
文件系统:用于实现有效高效管理文件的机制。
windows 常用文件系统:fat32,NTFS
linux支持类型(靠虚拟文件系统(VFS)来支持):
fat32,NTFS,(windows);
jfs(IBM),xfs(SGI),(UNIX);
reiserfs;
iso9660;
网络文件系统:NFS,SMBFS,
集群文件系统:GFS(全局文件系统),GFS2,OCFS(oracle)
常用类型:ext2,ext3(RHEL5),ext4(RHEL6默认)
VFS:虚拟文件系统,相当于一个接口,将不同文件系统转换成磁盘上真正使用的文件系统。
ext3 比ext2多了一个日志功能和acl(访问控制列表)功能。
格式化的过程就是建立文件系统的过程。
Boot Block |
Block Group 0 |
Block Group 1 |
. . . . . |
Block Group n |
Super Block |
GDT |
Block Bitmap |
Inode Bitmap |
Inode Table |
Data blocks |
Boot Block:引导块,引导此分区上系统的一些相关信息。
super Block超级块:放的整个文件系统的信息,包括数据块的个数,大小,一共多少个块组,每个块组中包含多少个数据块等等。属于全局描述信息,描述整个分区的信息。
GDT块组描述符:描述这一块组的信息。
Block Bitmap:按位图的方式来存储数据块是否可用。0表示可用,1表示不可用。是实现快速决定一个大容量空间中的文件系统的块是否可用的机制。
inode Bitmap:用来存储当前磁盘分区上一共有多少个inode号,以及使用与否。
混合索引方式(《计算机操作系统223页》)
1) 直接地址
为提高对文件的检索速度,在索引节点中可设置10个直接地址项,即用iaddr(0)~iaddr(9)来存放直接地址。换言之,在这里的每项中所存放的是该文件数据项所在盘快的盘块号。假设每个盘块大小为4KB时,当文件不大于40KB时,便可直接从索引节点中读出该文件的全部盘块号。
2) 一次间接地址
对于大中型文件而言,只采用直接地址是不现实的。为此,可 再利用索引节点中的地址项iaddr(10)来提供一次间接寻址。这种方式的实质就是一级索引分配方式。图中的一次间址块也就是索引块,文件系统分配给文件的多个盘块号计入其中。在一次间址块中可存放1K个盘块号,因为允许文件长达4MB。
3) 多次间接地址
当文件大于4MB+40KB时(一次间址与10个直接地址项),系统还须采用二次间址分配方式。这时,用地址项iaddr(11)提供二次间接地址。该方式的实质是两级索引分配方式。系统此时是在二次间址块中记入所有一次间址块的盘号。在采用二次间址方式时,文件最大长度可达到4GB。同理,地址项iaddr(12)作为三次间接地址,所允许的文件最大长度可达到4TB。
目录仅仅是一种寻址路径而已。是一种特殊的文件,也需要一个inode的号指向一个磁盘块。通常一个目录只占一个磁盘块。大小为4096k。块中的内容如图所示:
块里边存放的是一个表,表里是这个目录下所有的文件的名字及inode号。每一行(条目)用以指定目录中一个文件的属性。每一个目录都有两个特殊文件:“.” 目录自身 ,“ . .”当前目录的父目录。
一个partition(filesystem)所能容许的最大文件数,与inode的数量有关,因为一个文件至少要占用一个inode。
根是一种特殊的文件系统,称之为“rootfs”,是自引用的。通过根的inode号,找到根所存储的磁盘块。在这个块下存放的是根下每个目录下所存储的文件名和inode所对应的关系。
读取一个文件的简单流程(以/etc/crontab为例):——《鸟哥的Linux私房菜》
1.操作系统根据根目录(/)的相关资料取得/etc这个目录所在的inode,并前往读取/etc/这个目录的所有相关属性;
2.根据/etc的inode的资料,可取得/etc这个目录底下所有的文件的相关数据时放置在哪一个Block中,并前往该block读取文件的相关内容;
3.由以上步骤的block可知道crontab这个文件的inode所在地,并前往该inode;
4.由以上步骤的inode当中,可取得crontab这个文件的所有属性,并且可前往由inode所指向的block区域,顺利的取得crontab的文件内容。
链接:通过多条路径找到同一个文件。类似于windows下的“快捷方式”。
硬链接:两个文件名指向同一个inode。但是两个文件必须在同一个磁盘空间。如果其中一条路径被删除,只要还有其他路径能指向这个inode,那么这个文件依然存在。
硬链接文件本身也是普通文件。
ls –l 第一个数字显示的是硬链接的次数。每一个目录都是2,因为每个目录被自身和父目录所引用。
软链接:类型为“l”,也成为符号链接。创建一个软链接就相当于创建了一个新文件。有自己的inode号。在inode所指向的磁盘块上放的是所链接的文件的路径。事实上,在创建一个软链接时,如果路径非常短的话就直接放在inode的内部,如果路径足够长,才从新开辟一个磁盘块去存放路径。(可以跨分区,可以指向目录),一旦源文件被删除,那么链接也就失效了。
使用命令:ln 创建一个硬链接
-f 如果目标文件存在,就主动将目标文件直接移除后再建立
-s 创建一个软链接
创建一个硬链接:
创建一个软链接:
文件大小指的是源文件路径字符的长度。
小常识:我们平时删除文件通常只是将文件的inode号给删除了,文件依然存在。
特殊文件:b 块设备 c 字符设备 不占用空间大小
第一个数字表示主设备号:指的是设备类型。第二个数字表示次设备号。
检查磁盘空闲空间 baobab 图形界面查看
du 显示磁盘空间利用情况
-a 列出所有的文件与目录容量,预设仅统计目录下面的文件量而已
-s 显示目录总共占用多大空间
-h 以用户易读的方式做单位换算 默认kb
-k 以KB列出容量显示
-m 以MB列出容量显示
du –sh 经常用
df 显示磁盘空间的空闲情况
-h 以用户易读的方式做单位换算 默认kb
-T 显示磁盘分区文件系统类型
-i 显示inode号一共有多少个
-a 列出所有的文件系统,包括系统特有的/proc等文件系统;
-k 以KB 的容量显示文件系统
磁盘分区:
linux上所有设备都对应一个设备文件放在/dev目录下。
IDE:/dev/hd*
SCSI SATA USB都在/dev目录下以/dev/sd*来表示
硬盘接口类型不同,显示文件名称的表示方式也不一样。
同一块硬盘上的不同分区用/dev/sda[0-3]来表示。一个硬盘上最多有四个主分区,或者三个主分区加一个扩展分区。
挂载:当我们所建立起来的磁盘文件系统想在linux上面启用的时候,一定要将它挂在到文件系统上。而所谓的挂载点则是该分区所在的目录,且该目录下的所有目录都归在该分区所有。挂载的时候得先建立起挂载的目录才行!
如果用来挂载的目录原先不为空,那么挂载了文件系统之后,原目录下的文件就是暂时隐藏起来,这里注意,并不是消失了。等到原partition被umount之后,则该目录的内容就会再次显示。
mount /dev/sdb1(设备) /mnt/usb(目录)
-a 依照/etc/fstab 的内容将所有的相关磁盘都挂上来
卸载:umount /dev/sdb1 或者 umount /mnt/usb 一定要卸载,否则数据读入可能会失败
-f 强制卸载
sync (同步),手动写入,将内存缓冲区中要求写到硬盘的内容依次写入到硬盘中。
压缩、解压缩:
compress/uncompress .Z 过时的命令
gzip/gunzip 后缀:.gz 压缩的时候会删除源文件 还可以指定压缩比1---9, 默认级别为6。 一般来说,数字越大。压缩比越大,压缩越慢。gzip –d === gunzip
bzip2/bunzip2 后缀:.bz2 比gzip更新,压缩比更大 bzip –d ====bunzip2
gzip ,bzip2 只能压缩单个文件,不能对目录进行压缩。
zip/unzip 后缀:.zip 可以压缩目录,需要指定压缩后文件的名字,能够保留原文件
格式:zip 压缩后文件名 原文件1 原文件2 原文件3 ……
归档:把多个零散的文件打包成一个单个文件。不是压缩,只是打包封存起来。
tar –c 建立一个压缩文件(create)
-x 解开一个压缩文件
-t 查看tarfile里面的档案
在参数中 c/x/t仅能存在一个,不能同时存在
-z 用gzip压缩
-j 是否用bzip2压缩
-v 显示整个创建过程或者解压缩过程
-C 指定展开到什么位置
-f 使用文件名 eg :tar –zcvPf tfile sfile 在f之后要立即加上文件名
-p 使用原来文件的属性(permission)
-P 可以使用绝对路径来压缩
tar –cf myfile.tar file1 file2 file3…. 只归档不压缩
gzip myfile.tar 再压缩即可
tar –xf myfile.tar 将内容展开,重新释放
tar -tf 不用展开的情况下看看所归档的文件
tar 可以直接调用压缩工具,即归档,又压缩
tar –zcf 使用gzip进行压缩
tar –jcf 调用bzip2进行压缩
tar –zxf 解压缩以gzip压缩的文件
tar –jxf 解压缩以bzip2压缩的文件