(2)资源限制

  Apparmor可以提供类似系统调用setrlimit一样的方式来限制程序可以使用的资源。要限制资源,可在配置文件中这样写:

  set rlimit [resource] <= [value],

  其resource代表某一种资源,value代表某一个值,

  要对程序可以使用的虚拟内存做限制时,可以这样写:

  set rlimit as<=1M, (可以使用的虚拟内存大为1M)

  注意:Apparmor可以对程序要使用多种资源进行限制(fsize,data,stack,core,rss,as,memlock,msgqueue等),但暂不支持对程序可以使用CPU时间进行限制。(现在OJ一般都对ACMer提交的程序的运行时间有严格的限制,所以要将Apparmor用于OJ后台安全模块,必须自己另外实现对CPU时间的限制。)

  (3)访问网络

  Apparmor可以程序是否可以访问网络进行限制,在配置文件里的语法是:

  network [ [domain] [type] [protocol] ]

  了解网络编程的应该知道domain、type和protocol是什么。

  要让程序可以进行所有的网络操作,只需在配置文件中写:

  network,

  要允许程序使用在IPv4下使用TCP协议,可以这样写:

  network inet tcp,

  (4)capability条目

  Capability statements are simply the word capability followed by the name of the POSIX.1e capability as defined in the capabilities(7) man page.

  在linux的手册页里面有一个capablities列表,apparmor可以限制程序是否可以进行列表里的操作,如:

  capability setgid,(允许程序进行setgid操作)

  四、配置文件的编写

  前面提到,编写完配置文件后,要把文件放到/etc/apparmor.d这个目录下,其实有更方便的方法,直接在命令行里面用:

  sudo genprof [filename]

  可以为指定的程序创建一个配置文件,并把它放到该目录。