任务一:Enable file/directory creation
任务说明
(1) 在⽂件 secfs/fs.py 中,有⼀个叫 _create 的函数,它⽤于在⽂件系统中创建⽂件和⽬录、分配和配置 inode,并将其存储在服务器上。它会为新⽂件设置适当的 inode,并将它链接到它的⽗⽬录中。
(2) 在完成这个练习之前,⽆法正常创建⽂件或目录 。
(3) 可参考 secfs.fs.init 函数的操作。
实验步骤:
-
配置项目环境
-
修改代码实现DEBUG功能
使用VSCode远程连接虚拟机,方便编写代码和调试。
通过观察start.sh文件内容,启动语句为:
sudo env PYTHONUNBUFFERED=1 venv/bin/secfs-fuse PYRO:secfs@./u:server.sock mnt/ root.pub user-0-key.pem "user-$(id -u)-key.pem" > client.log &
也就是启动secfs-fuse,并向其中传入了对应的参数,于是我们可以手动修改secfs-fuse,并配合VSCode达到DEBUG的功能。
在启动前,需要创建sock文件和挂载目录,故编写debug.sh文件
运行一遍 sh debug.sh 再点击VS Code的debug按钮即可开启debug模式。
-
补充 _create函数
根据实验手册提示,store函数会根据i-node的metadata计算并返回56位hash值,也就是i-table中映射的i-hash。add函数会更新目录的i-node,并为其增加entry。Modmap函数会更改或分配<principal, i-number> pair,使其指向ihash。也就是更新current_tables(储存所有用户i-table的一个哈希表)中用户对应的i-handle。
根据注释,补充相应代码即可。