任务1:为 Ext4 文件系统添加扩展属性(25min)
任务描述
- 熟悉文件系统扩展属性EA,查看树莓派文件系统是否支持EA。
- 使用setfattr设置文件系统的用户扩展属性,并设置文本、八进制数、十六进制数与base64编码这四种属性值。
- 使用getfattr获取文件系统的用户扩展属性,并在获取属性之后进行text、hex和base64这三种编码设置。
- 分析总结上述实验过程。
任务过程及截图
(1)对于不含转义字符 \ 的纯文本属性值,有无双引号限定效果一样。
(2)对于包含转义字符 \ 的文本属性值,无双引号则不对转义符 \ 进行转义;有双引号则对其进行转义。
例如:设置八进制数时,设置属性值为 \012 时,最终识别为文本012;设置属性值为“\012”时,最终以八进制数的base64编码存储。
(3)设置属性值为十六进制数时,所设置的数的位数必须为偶数,即0x 或 0X后的数字必须为偶数位,否则出错。 若设置成功,最终以十六进制数的base64编码存储。
(4)设置属性值为base64编码时,所设置的编码必须符合base64编码,即0s后的编码字符串必须符合base64编码,否则出错。 若设置成功,最终以base64编码对应的文本信息存储。
tips:可在 HYPERLINK “https://base64.us/” https://base64.us/ 中,将需要设置的属性值进行base64编码后,再使用setfattr命令设置,注意设置时需在 base64编码前加 0s 前缀。
(5)使用getfattr获取属性后后进行text编码设置。
当未对获取的属性进行编码设置时,直接使用 getfattr -d -m . file.txt 或 getfattr -d file.txt 即可完成。
对获取的属性设置text编码时,结果如下:
user.age 与 user.hex 的属性值变成了对应的文本值。
user.name、user.city、user.base64都仍保留原来的文本值。
(6)使用getfattr获取属性后后进行hex编码设置。
user.age 的属性值由八进制变成了十六进制;
user.hex 的属性值还原成了最初设置的原值;
user.name、user.city、user.base64的属性值都转化为对应的十六进制值。
(7)使用getfattr获取属性后后进行base64编码设置。
user.age 与user.hex的属性值都保留最初的 base64编码存储;
user.name、user.city、user.base64的属性值都转化为对应的base64编码值。
任务2:注册一个自定义的文件系统类型(15min)
任务描述
- 使用文件系统注册/注销函数,注册一个自定义文件系统类型;
- 加载模块后,查看系统中是否存在注册的文件系统类型。
- 加载、卸载模块并查看模块打印信息。
任务代码
1、register_newfs.c