磁盘分区及表示
如:/dev/hda5
其中hd表示IDE设备,sd表示SCSI设备
a表示硬盘顺序号
5表示分区的顺序号
分区有1-4:主分区(是指引导操作系统的分区,在磁盘的第0个柱面,数据读写快) + 扩展分区(扩展分区可为0或1,扩展分区不能直接使用,是逻辑分区的容器)
逻辑分区没有数目限制,分区编号为5表示第一个逻辑分区
例子:第二个SCSI硬盘的第三个逻辑分区表示为:sdb7
文件系统:一套在磁盘中读写数据的方式方法
CentOS默认文件系统:XFS(日志文件系统)、SWAP(交换文件系统)
Linux支持的其他文件系统:EXT3、EXT4、FAT16、FAT32、NTFS等
inode节点和block块
概念:一个磁盘分区可以使用一套文件系统(文件系统存放在分区外的磁盘)。在一个(使用了文件系统的)分区中,分区分为两部分:元数据(metadata)和数据块(block)。
元数据:存储了数据的简要信息,如创建者、创建时间、大小等。
inode区(表):记录了inode及对应的数据块(用来通过inode索引数据块block)
inode位图(inode bitmap):用二进制的方式记录了inode的使用情况(如是否空闲)
块位图(block bitmap):用二进制的方式记录了block的使用情况(如是否空闲)
超级块(super block):控制元数据区域
数据块(window称为数据簇):是多个连续的扇区(sector,文件存储的最小单位),里面存放真正的数据。
inode号:用来继续向inode表检索
文件名:也可以是目录名(目录实际上是个小的索引文件)
真实数据:目录文件应该没有这部分内容
(一)查找方式
(操作系统识别文件是通过inode而不是文件名)根自引用自己的inode,然后通过inode表检索该inode号对应的块,再根据要到达的目录(如var)的inode 号向inode表进行检索,往返几。
最后检索到message文件后(其实是inode号),通过该文件的inode号向inode表检索真正的数据块,并访问。
(二)创建方式
创建文件,首先要到达目标目录位置,所以前几步和查找一样。
在创建文件后,带有文件名的数据块会被赋予inode号,并在inode位图中将该inode号设为被使用。
(三)删除方式
实际上就是在block位图中将该block标记为空闲,在inode位图中将该文件对应的inode标记为空闲。
注意:当inode上的链接次数大于1时,删除时不会将block和inode标记为空闲,只会删除链接次数。
软链接和硬链接
原理(结合上面inode和block内容):
1)软链接是通过新文件(指向)的inode指向原文件块,再通过原文件(指向)的inode检索真正的数据。
2)硬链接是通过新文件(指向)的inode和原文件(指向)的inode相同,直接通过inode检索真正的数据。
区别:
1)软链接不会为原文件增加链接次数,即inode上的链接次数仍为1,此时删除原文件,软链接就会失效。而硬链接会增加inode上的链接次数,并且删除原文件后由于inode上的链接次数还剩下1,所以硬链接还能使用
2)软链接能链接目录,但硬链接不行
3)硬链接产生的文件(指向)的inode和原文件相同
用户、组:
操作系统识别用户和组的方式:UID、GID
用户分类:
管理员用户:root UID:0
程序(系统)用户:1-999[默认不允许登陆操作系统,因为其只是执行某些程序]
普通用户:1000-65535组分类:
管理员组/普通组
基本组/附加组
---基本组:新建用户时,若没指定组,系统会为用户创建一个同名组作为该用户的基本组
---附加组:方便以后为用户分配权限
/etc/passwd和/etc/shadow和/etc/group和/etc/gshadow
/etc/passwd:存储用户基本信息
如:root:x:0:0:root:/root:/bin/bash
备注:通过whatis passwd
查询到passwd(5),然后man 5 passwd
,可以查到每行对应解释信息
-第一列:用户的登陆名
-第二列:x表示密码占位符,密码保存在/etc/shadow中(若被锁定则为!!、!)
-第三列:UID
-第四列:GID
-第五列:用户描述信息
-第六列:用户的宿主目录
-第七列:默认使用的shell/etc/shadow:存储用户的影子口令
如:root:$6$d7HgR0QoBoXUsvTN$l28rhtFdqulQxnHVSx2UxbRQhRfOaOJtuBB142SaXtvkoDAWIrjzhfu.0ZMVObk3QyhLb.bFj3qJGLM/fJFDi0::0:99999:7:::
通过
-第一列:用户的登陆名
-第二列:用户密码的加密序列:$id$salt$encrypted
序列由$符号隔开(分为3部分)
1)id:加密方式(通过man 3 crypt
查看加密信息)
2)salt:盐值
3)加密后的密文
-第三列:最后一次更改密码的时间(上次修改密码的日期距离1970年1月1日,即Linux元年相隔多少天)
-第四列:密码最小使用时间
-第五列:密码最长使用时间
-第六列:密码过期前警告时间
-第七列:密码过期宽限时间
-第八列:账户失效时间(同样以linux元年算起)
-第九列:预留/etc/group:存储组的基本信息
man group
查看解释
root:x:0:
-第一列:组名称
-第二列:组密码(x表示占位符)
-第三列:GID
-第四列:组的用户列表/etc/gshadow:
root:::admin
-第一列:
创建用户相关知识
/etc/default/useradd文件
内容:
GROUP=100 //表示可以创建普通组
HOME=/home //普通用户宿主目录位置
INACTIVE=-1 //是否启用用户过期停止使用权,INACTIVE是密码过期的宽限期限
EXPIRE= //设定过期时间,格式为20170501
SHELL=/bin/bash //设定用户默认使用的shell
SKEL=/etc/skel //新用户宿主目录的模板目录(新宿主目录中的文件都是从/etc/skel中复制而来)
CREATE_MAIL_SPOOL=yes //是否为用户启用邮件通知功能
/etc/skel目录
新用户宿主目录的模板目录(新宿主目录中的文件都是从/etc/skel中复制而来)
skel目录中:.bash.logout(用户注销时执行的命令)、.bash_profile(用户登陆系统时执行的命令)、.bashrc(用户登陆一个新shell时执行的命令)
Tips:如果要在每个新用户创建后的宿主目录加上一些文档,可以直接在模板目录skel中添加这些文档
/etc/login.defs文件(只对新建用户生效)
内容:
MAIL_DIR /var/spool/mail //用户系统邮件存放目录
PASS_MAX_DAYS 99999 //密码最长使用期限
PASS_MIN_DAYS 0 //最短使用期限,0代表不受限制
PASS_MIN_LEN 5 //密码最小长度
PASS_WARN_AGE 7 //密码过期前警告时间
UID_MIN 1000 //普通用户的UID范围
UID_MAX 60000
SYS_UID_MIN 201 //系统用户的UID范围
SYS_UID_MAX 999
GID_MIN 1000 //普通组GID的范围
GID_MAX 60000
SYS_GID_MIN 201 //系统组GID的范围
SYS_GID_MAX 999
CREATE_HOME yes //是否创建宿主目录
UMASK 077 //关于权限的反掩码
USERGROUPS_ENAB yes //删除用户时是否删除组
ENCRYPT_METHOD SHA512 //密码的加密方式