Linux 模拟基于进程的隐蔽通道(修改文件名)

目录

  • Linux 模拟基于进程的隐蔽通道(修改文件名)
    • 实验要求
    • 实验步骤
      • 流程图
    • 具体代码
      • 文件监听程序(process_p2.c)
      • 文件修改程序(process_root.c)
    • 实验结果
    • 总结

实验要求

  1. 设定两个不同安全级别的Linux用户,如root和user;
  2. 用root用户建立一个文件A;使用访问控制命令(普通Linux的安全命令,或SELinux的命令都可以),使root对A具有wr权限,任何其他用户都不具备wr权限;
  3. 用root用户在A中写入“秘密信息”(仿真实验,信息不要太长,一句话就可以)
  4. 使用访问控制命令,使得user用户对A所在的目录具备r权限;
  5. 假设系统中有这样的安全规则:
    root用户不能向其他用户发送消息;
    凡是root用户创建的文件对象(目录除外),user都不能读取;
  6. 设计一种基于文件名修改的有隐通道,使得root用户将秘密信息泄露给user用户,但不违反既定安全规则。
  7. 要求编程实现上述过程(C或C++)(用编程实现步骤6),这是最低要求,其实2)、4)、6)都是可以的。);推荐使用多个C文件组成的工程,练习一下Linux环境下程序工程的编写方法。
  8. 通过编程,以进程的形式,模拟root和user的行为:root创建的进程代表root,user创建的进程代表user;或者,用root创建两个进程,一个模拟root,一个模拟user;但无论哪种方式,都必须遵守既定安全规则。

实验步骤

1、 使用root用户和user用户模拟隐蔽通道的高级用户和低级用户;
2、 修改user用户对root用户目录的访问权限,使其只能读root用户的指定目录,而不能读写文件;
3、 由root用户创建文件A.txt,模拟机密文件(内容为password:12345678);
4、 在root用户目录下编写修改文件名的程序process_root.c;
5、 在user用户目录下编写监听root用户目录的程序process_p2.c;
6、 通过ssh远程登陆user(planetrt2),进入用户目录,编译运行监听程序process_p2.c,使user当前处于监听状态;
7、 在root用户目录下编译运行修改文件名程序process_root.c,依次读取固定长度的A.txt文件内容,并将文件名修改为读取的内容;
8、 此时user(planetrt2)的监听程序就会依次输出A.txt文件每次修改后的文件名,即在对A.txt文件没有读权限的时候,获取文件中的内容。

流程图

具体代码

文件监听程序(process_p2.c)

#include <stdio.h>
#include <sys/inotify.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>int main(void){struct inotify_event *event;int fd = inotify_init();char *path ="/home/test_A/A.txt";int wd;wd = inotify_add_watch(fd,"/home/test_A/",0x00000080);if(wd < 0){printf("%s\n","wd_failed");}int len = 0;char buf[BUFSIZ];buf[sizeof(buf) - 1] = 0;int index;while((len = read(fd,buf,sizeof(buf) - 1)) > 0){index = 0;while(len > 0){event = (struct inotify_event *)&buf[index];if(event->mask & 0x00000080){char str[30] = "/home/test_A/";strcat(str,event->name);printf("%s\n",str);}index = index + sizeof(struct inotify_event) + event->len;len = len - sizeof(struct inotify_event) - event->len;}}return 0;
}

文件修改程序(process_root.c)

#include <stdio.h>
#include <sys/types.h>
#include <sys/inotify.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>int main(void){FILE *fp;fp = fopen("/home/test_A/A.txt","r");char str[20];char s[10] = "A.txt";    while(fgets(str,4,fp)){printf("%s\n",str);char sh1[30] = "/home/test_A/";char sh2[30] = "/home/test_A/";strcat(sh1,str);strcat(sh1,".txt");strcat(sh2,s);rename(sh2,sh1);strcat(str,".txt");strcpy(s,str);}fclose(fp);return 0;
}

实验结果

编译运行文件监听程序(process_p2.c),此时处于监听状态:

编译运行文件修改程序(process_root.c):

观察文件监听程序的输出是否与原A.txt中的信息相符“

总结

本实验为本人课内实验,如有错误,欢迎指正!

Linux 模拟基于进程的隐蔽通道(修改文件名)相关推荐

  1. Linux下批量修改文件名(rename)

    1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的 在本目录下 只需要# rena ...

  2. linux shell rename,linux shell rename命令修改文件名

    1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的 在本目录下 只需要# rena ...

  3. LINUX修改文件名rename

    1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的 在本目录下 只需要# rena ...

  4. linux vnc 改端口号,基于Linux中vnc配置端口号的修改方法

    vnc的默认端口是自己配置的,并不是这有一个端口号. 通过打开/etc/sysconfig/vncservers. 这里就配置了2个桌面,一个桌面号是1, 一个是2. 这里的配置的参数 VNCSERV ...

  5. (9)隐蔽通道重点知识复习笔记

    1.     隐蔽通道的概念: (1)85版定义:隐蔽信道是允许进程以违反系统安全策略的方式传递信息的信道. (2)93版定义:"给定一个强制安全策略模型M及其在一个操作系统中的解释I(M) ...

  6. Linux操作系统下进程讲解(史上最强总结)

    Linux操作系统下进程讲解 一.进程的基本概念: 1. 什么是进程 在传统的操作系统中,程序不可以独立的运行,作为资源分配和独立运行的基本单位都是进程.进程的定义是一个可执行中程序的实例,系统中每一 ...

  7. 【转载,整理】Linux模拟试题及答案(全)+经典Linux系统工程师面试题(附答案)

    转自:http://www.ha97.com/871.html   http://www.ha97.com/870.html 2010-6 11 经典Linux系统工程师面试题(附答案) 发表于: L ...

  8. 【Erlang/OTP入门】基于进程的并发编程和分布式

    引言 在参加区统考的前一天开始写这篇文章,开学后时间真的紧迫了很多.   我最近玩Erlang只是一个偶然(?).这一切的开始是我某天看到一本名为<Erlang and OTP in Actio ...

  9. linux父进程和子进程查看,linux查看父子进程

    python多进程代码 test.py #coding=utf-8 import multiprocessing import time def func(msg): print "msg: ...

最新文章

  1. 深度报告:一文看懂生物芯片产业
  2. 请问如何更改dedecms“文件保存目录”的字符限制 ?
  3. Windows下使用gvim
  4. 什么是超融合数据中心网络?
  5. navicat使用查询向表中插入一行记录_SQL--每日一解------Bulk Insert 快速插入
  6. 【图文详解】在电脑中打开.properties配置文件时会生成一个空的名为Java的文件问题
  7. [渝粤教育] 中国地质大学 地球科学概论 复习题 (2)
  8. C++ 高级篇(三)—— 出错处理
  9. 搜索算法(一)--DFS/BFS求解拯救同伴问题(JAVA)
  10. 新DELL服务器在F2设置界面下raid的配置
  11. c语言源程序总是由一个或多个函数组成,2016年中山大学卡内基梅隆大学C语言程序设计复试笔试仿真模拟题...
  12. python爬虫案例——python爬取百度新闻RSS数据
  13. plsql 破解注册码
  14. 浅谈vocaloid3基础操作
  15. cmos与非门电路、或非门电路
  16. 2017-09-04考试情况总结
  17. easyui combobox 查询传递json对象
  18. 轻快PDF阅读器在线使用方法
  19. 考研数据结构之数组(5.1)——练习题之移动数组所有非零元素到数组前端(C表示)
  20. Cesium中的相机—旋转矩阵

热门文章

  1. libjpeg-turbo使用教程
  2. 用matlab生成RGB三色的散点图
  3. Au 入门系列之八:包络与自动控制
  4. 业财一体化财务实操会计仿真模拟实训软件
  5. 字符'0'到'9'在c语言中,/0在c语言中是什么意思?
  6. 基于aws cloudfront的前端应用灰度方案
  7. 点阵字库生成器破解版下载地址
  8. vscode安装python扩展并开展远程调试的过程
  9. 实景三维如何助力智能应急?
  10. 分布式锁和分布式事务和分布式Session