1../start
该脚本主要是mount命令,同时插入安全的模块。在mount时可以携带参数。这些参数的接受位置为:
cfs_get_sb->cfs_fill_super->mds_login->login->send2Serv.
2.cp
这里主要是文件系统的东西。只要验证通过即可?
3.ls
该函数不涉及安全,是文件系统模块,创建成功后即可。
4. ./llx /mnt/cfs/user1/Makefile && dmesg。
该脚本里面除了一些控制信息,主要就是chmod系统调用。格式如下:
chmod a+w 文件名%-%-%#。
实际上chmod系统调用是一层一层的,需要做一些初始化,而后面的参数是可以接收的。
cfs_setattr->command_analysis->mds_getacl(name)|| mds_setacl.这里显然应该是调用mds_getacl.根据flags值判断。
5../chomodx user2 + read /mnt/cfs/user1/Makefile.
这里最后调用的chomod函数格式如下:
chmod a+w filename%username%permission%operator。
这里和上面一个命令是类似的。都是要调用到cfs_setattr->command_analysis->....
其中command_analysis函数可以解析出chmod命令中的 username,filename,permission,operator等变量。
最终都是在send2Serv函数里进行发送到MDS端的。
关于周博提到得,我上次说的只是读数据的问题,如果是写的情况。
如果是写的话(包括cp系统调用),首先是需要open,然后是write,然后close。
首先向mds发送信息,发送自己的命令包格式,然后mds返回的元数据信息包括,ds的IP地址,inode节点,等等。这些。因此
需要控制的地方在于:在open函数之前,完成验证。