Skip to content

Commit a2c13d0

Browse files
committed
systemd & apparmor.md
1 parent 026d6da commit a2c13d0

File tree

6 files changed

+468
-20
lines changed

6 files changed

+468
-20
lines changed

README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
Linux Development FAQs
2-
=======
2+
======================
33

4-
本书以解决具体问题的形式讲述了Linux环境中应用程序开发中的相关知识和工具:包括编译、连接,进程的运行时环境;
4+
本书是作者在学习Linux以及在工作中使用Linux遇到的问题及解决办法的笔记与备忘录。
5+
其中包括:Linux环境中应用程序开发中的相关知识和工具:包括编译、连接,进程的运行时环境;
56
介绍了进程调试的方法;介绍了C语言开发中可能遇到的内存相关的问题与解决方法、工具;
67
介绍了SHELL与应用开发中常见的与系统管理、网络等相关的内容;介绍了SYBASE等数据库在开发中需要注意的事项等内容。
7-
是作者在之前工作遇到的问题及解决办法的笔记与备忘录。
8-
9-
需要说明的是本书是作者工作中的一些经验的总结,本书中参考了大量的资料。由于时间跨度较长等原因,很多资料没有一一注明原作者和出处,这里一并表示感谢。若有异议,请联系作者。
10-
本书的描述假定读者有一定的Linux开发基础与经验。希望能对读者学习和工作有参考价值。
11-
8+
9+
需要说明的是本书中参考了大量的资料。由于时间跨度较长等原因,很多资料没有一一注明原作者和出处,这里一并表示感谢。
10+
若有异议,请[联系作者](https://github.com/linxiaohui/linux-devp-faq/issues)
11+
1212
本书将持续更新。
13-
Current VERSION: 0.52 (Revised Draft:minor updates)
13+
14+
Current VERSION: 0.6 (Draft)

SUMMARY.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* [注意事项](programming/lang.md)
1010
* [第三方库](programming/lib.md)
1111
* [其它工具](programming/tools.md)
12-
12+
1313
* [运行与调试](runtime/README.md)
1414
* [环境](runtime/env.md)
1515
* [进程检查](runtime/pcheck.md)
@@ -23,12 +23,6 @@
2323
* [内存检查技术与工具](memory/lib.md)
2424
* [深入理解malloc](memory/malloc.md)
2525

26-
* [系统管理](sysadmin/README.md)
27-
* [网络](sysadmin/network.md)
28-
* [磁盘](sysadmin/disk.md)
29-
* [性能分析工具](sysadmin/performance.md)
30-
* [操作系统管理](sysadmin/os.md)
31-
3226
* [Shell](shell/README.md)
3327
* [SHELL基础](shell/sh.md)
3428
* [终端相关](shell/terminal.md)
@@ -41,11 +35,19 @@
4135
* [SSH](shell/ssh.md)
4236
* [有趣的Linux命令](shell/funny.md)
4337

38+
* [系统管理](sysadmin/README.md)
39+
* [网络](sysadmin/network.md)
40+
* [磁盘](sysadmin/disk.md)
41+
* [性能分析工具](sysadmin/performance.md)
42+
* [操作系统管理](sysadmin/os.md)
43+
* [AppArmor](sysadmin/apparmor.md)
44+
* [systemd](sysadmin/systemd.md)
45+
4446
* [数据库开发](database/README.md)
4547
* [sybase](database/sybase.md)
4648
* [DB2](database/db2.md)
47-
49+
4850
* [杂项](misc/README.md)
4951
* [桌面环境](misc/desktop.md)
5052
* [配置](misc/config.md)
51-
* [常用软件](misc/software.md)
53+
* [常用软件](misc/software.md)

sysadmin/apparmor.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,73 @@
11
# AppArmor
2+
AppArmor(Application Armor)提供了强制访问控制机制,可以指定程序可以读、写或运行哪些文件,是否可以打开网络端口等,从而限制程序的功能。
3+
4+
## 配置文件
5+
AppArmor与程序绑定,而不是用户。假设有一个可执行文件的路径为`/home/linux/apparmordemo`,如果要用Apparmor对其进行访问控制的话,就要在`/etc/apparmor.d`中对应文件名为`home.linux.apparmordemo`的配置文件。因每一个可执行文件都是与一个配置文件对应的的,因此如果修改文件名的话,配置文件将失效。
6+
7+
## 工作模式
8+
Apparmor有两种工作模式:`enforcement``complain`/learning
9+
1. enforcement:配置文件里列出的限制条件都会得到执行,并且对于违反这些限制条件的程序会进行日志记录。
10+
2. complain : 配置文件里的限制条件不会得到执行,Apparmor只是对程序的行为进行记录。
11+
12+
## 资源限制
13+
### 文件系统
14+
Apparmor可以对某一个文件,或者某一个目录下的文件进行访问控制,包括以下几种访问模式:
15+
16+
| 模式 | 说明 |
17+
| --------- - |:------:|
18+
| r | Read mode |
19+
| w | Write mode (mutually exclusive to a) |
20+
| a | Append mode (mutually exclusive to w) |
21+
| k | File locking mode |
22+
| l | Link mode |
23+
| linkfile->target | Link pair rule (cannot be combined with other access modes)|
24+
25+
例如:
26+
```
27+
/tmp r, #表示可对/tmp目录下的文件进行读取
28+
```
29+
**注意**:没在配置文件中列出的文件,程序是不能访问的
30+
31+
### 资源限制
32+
Apparmor可以提供类似系统调用setrlimit一样的方式来限制程序可以使用的资源。
33+
```
34+
set rlimit [resource] <= [value],
35+
```
36+
例如:
37+
```
38+
set rlimit as<=1M, #可以使用的虚拟内存最大为1M
39+
```
40+
41+
### 网络
42+
Apparmor可以对程序是否可以访问网络进行限制:
43+
```
44+
network [ [domain] [type] [protocol] ]
45+
```
46+
例如:
47+
```
48+
network, #可以进行所有的网络操作
49+
network inet tcp, #允许程序使用在IPv4下使用TCP协议
50+
```
51+
52+
### capability
53+
AppArmor可以设置进程可以使用的`capabilities`(`man 7 capablities`).
54+
`man apparmor.d` 可以查到:
55+
```
56+
ACCESS TYPE = ( 'allow' | 'deny' )
57+
QUALIFIERS = [ 'audit' ] [ ACCESS TYPE ]
58+
CAPABILITY RULE = [ QUALIFIERS ] 'capability' [ CAPABILITY LIST ]
59+
CAPABILITY LIST = ( CAPABILITY )+
60+
CAPABILITY = (lowercase capability name without 'CAP_' prefix; see capabilities(7))
61+
```
62+
63+
## 配置文件编写
64+
`aa-genprof`
65+
66+
67+
## 常用命令
68+
1. `sudo apparmor_status`: 查询当前Apparmor的状态
69+
2. `sudo apparmor_parser`: loads AppArmor profiles into the kernel
70+
71+
## 手册
72+
1. `man apparmor`
73+
2. `man apparmor.d`
431 KB
Loading

0 commit comments

Comments
 (0)