磁盘管理
硬盘 sda 硬盘安装了操作系统 gpt
mbr : 需要占用硬盘的前512个字节 446字节是主引导信息 64个字节分区表 2字节存储 结尾信息 。最多4个主分区 特殊的分区扩展分区 可以分区出多个 逻辑分区
gpt :支持的主分区数量 自己定义 2T
建立分区
关闭虚拟机,再添加一块新硬盘再开机
parted /dev/sdb 进行分区
分区的过程
- 先要指定分区表类型 gpt
parted /dev/sdb -s mklabel gpt 指定分表类型为gpt - 分区 要求分5个分区 200M
parted /dev/sdb -s mkpart primary 1 200
parted /dev/sdb -s mkpart primary 201 400 - 查看分区信息
print 列出当前分区表
quit 退出工具
rm 数字 删除指定分区
确认分区 cat /proc/partitions
建立文件系统格式化
- ext4 文件系统 存储数据
- fat32 支持
- swap 系统 交换分区 (虚拟内存) 分区大小要求为内存的1.5倍。8G 以上物理内存 swap不要给超过8G。
挂载:进入分区需要与目录进行连接,进入目录才是进入分区
要求:sdb1建立ext4文件系统 , sdb2 fat32 , sdb3 swap
mkdir /mnt/ext4
//创建用于挂载的目录
mkfs.ext4 -b 1024 /dev/sdb1
//将sdb1格式化成ext4格式
mount /dev/sdb1 /mnt/ext4
//将sdb1挂载到/mnt/ext4目录
mkdir /mnt/fat32
mkfs.vfat -F32 /dev/sdb2
mount /dev/sdb2 /mnt/fat32
mkswap /dev/sdb3
swapon /dev/sdb3
cat /proc/partitions 查看分区情况
df -Th 观察文件系统利用率,可查看格式化挂载情况
free -m 观察内存使用情况
umount 卸载
swapoff 卸载
以上的所有挂载操作 都是临时的 重启后失效
若要长期生效,则要修改文件系统的挂载列表 /etc/fstab (file system table)
挂载使用UUID编号进行设备指定挂载
blkid /dev/sdb1 >> /tmp/xxx.txt
将命令的结果输出到文件中。
vim /etc/fstab
然后再命令模式下
:r ! blkid /dev/sdb1
将后面命令的输出结果追加到文件的最后一行。再使用 ctrl+v 进行区域选择,进行剪切粘贴。感叹号代表强制
为什么要用UUID编号进行设备挂载?
由于/dev/sdb 对硬盘不具有唯一性,实际应用中,当多个硬盘被拔出再插入再重新插入磁盘时,若顺序变化时,原先的/dev/sdb可能变成/dev/sdc,容易造成错误。
UUID具有唯一性,可用 blkid /dev/sdb1 其唯一的UUID
逻辑卷可直接用设备码而不需要用UUID
除非给逻辑卷改名字,否则逻辑卷的盘符都是确定的,不会随着拔插发生变化,具有身份辨识度。
磁盘管理练习:
- /tmp/test.txt 和目录 /tmp/test。 要求设定权限,文件的所属者为allen文件只有allen可读无其他权限,/tmp/test目录所属组为bob,要求改组中成员可以进入,其他用户不可以进入。
chown allen /tmp/test.txt
chmod u=r,go=--- /tmp/test.txt
chmod 400
chgrp bob /tmp/test
chmod u=rwx,g=rwx,o=--- /tmp/test
chmod 770
- 对/dev/sdb进行分区。指定使用gpt分区表,分一个大小为200M的主分区。
parted /dev/sdb -s mklabl gpt
parted /dev/sdb -s mkpart primary 1 200 - 对sdb1建立文件系统ext4并将其永久挂载到/mnt/ext4目录中。
mkdir /mnt/ext4
mkfs.ext4 -b 1024 /dev/sdb1
mount /dev/sdb1 /mnt/ext4
blkid /dev/sdb1
vim /etc/fstab
UUID=xxxx /mnt/ext4 ext4 defaults 0 0 - 在/tmp目录下建立一个名为class的目录,并设定该目录权限为所有人可读写可进入。
chmod a=rwx /tmp/class
chmod 777 /tmp/class - 要求设定class目录的属主为自己同名用户,属组为class2。并使用自己名字的用户在其中建立一个名为test.txt的文件
chown allen /tmp/class 修改所属者
chgrp class2 /tmp/class 修改所属组 - 设定test.txt文件的权限为只有自己同名用户可读写,其他人无任何权限。
chmod u=rw,go=— /tmp/class/allen.txt
chmod 600 /tmp/class/allen.txt - 验证其他用户可不可以删除allen.txt
- 要求为vim命令字设定suid,同名用户通过vim命令删除root用户密码
- 管理员在/下建立一个名为centos的目录并赋予建立权限。要求自己同名的用户在该目录创建的文件继承该目录的属组。
- 要求修改该/centos目录权限,目录中的文件只有建立的人才能删除。
作业:
1.为虚拟机添加1块大小为20G的硬盘sdb,将该硬盘划分3个主分区分别为100M。
2.将sdb1格式化为ext4文件系统并建立挂载点挂载到/mnt/ext4dir目录
3.将sdb2格式化为fat32文件系统并建立挂载点挂载到/mnt/fat32dir目录
4.将sdb3格式化为swap文件系统并挂载
5.以上分区使用UUID实现永久性挂载
6.要求为vim命令字设定suid,同名用户通过vim命令删除root用户密码
7.要求修改该/centos目录权限,目录中的文件只有建立的人才能删除。
8.在/tmp目录下建立一个名为class的目录,并设定该目录权限为所有人可读写可进入。(用两种赋权法)
磁盘加密
关闭映射文件前要先卸载
加密的技术 是不能建立在文件系统之上的
- 准备一个200M 的一个空白分区
parted /dev/sdb -s mkpart primary 801 1000
---- 如果之前建立过分区表重新建立分区需要刷新分区表,reboot - 对sdb4进行加密处理
cryptsetup luksFormat /dev/sdb4
—加密格式处理
提示大写YES 密码确认 6位 - 需要将加密后的sdb4分区进行映射,映射成为一个新的设备文件,可以建立文件系统。
cryptsetup luksOpen /dev/sdb4 jiamidisk
映射的设备文件会存放在 /dev/mapper/ 取名为jiamidisk,则映射的设备文件路径为/dev/mapper/jiamidisk
需要确认密码才允许映射
为什么要映射?
因为设备分区不支持挂载,若对已经加密过的分区再格式化则没有意义,因此需要映射成一个新的设备文件,再格式化。 - 建立文件系统并使用。
mkdir /mnt/sdisk
mkfs.ext4 -b 1024 /dev/mapper/jiamidisk
mount /dev/mapper/jiamidisk /mnt/sdisk
- 关闭映射文件。
先卸载设备umount /dev/mapper/jiamidisk
cryptsetup luksClose jiamidisk
- 启用
cryptsetup luksOpen /dev/sdb4 sundisk (千万不要格式化)
密码确认
mount挂载使用即可
加密分区的问题与处理
1.永久挂载问题 映射的设备没了 fstab文件写了 不挂在设备。
vim /etc/crypttab
第一列 映射名称 第二列 设备名称
sundisk /dev/sdb4
2.启动时候提供设备密码即可。
对映射分区进行key文件形式的永久挂载:使用key文件作为 加密验证的密码
1.建立一个文件使他成为验证加密磁盘的密码
dd if=/dev/random of=/root/keyfile bs=4096 count=1 建立一个内容为随机的key文件
2.将key文件和加密设备做关联
vim /etc/crypttab //解决重启的过程中没人做luksOpen的 步骤
sundisk /dev/sdb4 /root/keyfile
cryptsetup luksAddKey /dev/sdb4 /root/keyfile
密码确认
重启验证 不需要我输入密码 即可挂载加密设备。
练习
-
如何对一个分区/dev/sdb5进行crypt加密处理?并映射名字为kaso临时挂载到/mnt/kaso目录中。
cryptsetup luksFormat /dev/sdb5
YES
cryptsetup luksOpen /dev/sdb5 kaso
确认密码
mkfs.ext4 /dev/mapper/kaso
mount /dev/mapper/kaso /mnt/kaso -
如何对已经kaso这个映射分区进行key形式的永久挂载
dd if=/dev/random of=/root/keyfile bs=4096 count=1
vim /etc/fstab
/dev/mapper/kaso /mnt/kaso ext4 defaults 0 0
cryptsetup luksAddKey /dev/sdb5 /root/keyfile 确认密码
vim /etc/crypttab
blkid /dev/sdb5
kaso UUID=xxxxx /root/keyfile