File: README

package info (click to toggle)
slat 2.0-5
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 1,712 kB
  • ctags: 1,286
  • sloc: ansic: 3,079; sh: 1,013; yacc: 291; lex: 211; makefile: 63
file content (116 lines) | stat: -rw-r--r-- 3,385 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
SLAT: SE Linux policy file analysis.

The best source for user documentation is the file info/slat.html.
The best source for installation documentation is the file INSTALL.
This file contains only a quick overview.

BUILDING AND INSTALLING

Be sure that the static version of the sepol library is available.

Using GNU make, build the program with the commands:

     $ ./configure
     $ make

You're done!  You can also install the software with "make install".
See INSTALL for the full instructions on the install target.

You can get command line help with the commands:

     $ slat -h
     $ lts2smv -h

SOURCE CONTENTS

The directory info contains user documentation, and the directory doc
contains design documentation.

The directory src contains all the program sources.  The sources for
the slat program are in the subdirectory slat, and the sources for the
lts2smv program are in lts2smv.  The slat program extracts an
information flow relation from two SELinux configuration files, and
stores it as a labeled transition system (LTS).

The directory formula contains C routines you can used to parse and
pretty print LTS formated data.  A generic pretty printer as also
available for general use.

QUICK START

To translate an APOL style permission mapping into the one used by
slat, type

     $ apol2slat apol_perm_mapping_ver18 > mls.spm

To generate a labeled transition system, type

     $ slat -o slat.lts policy mls.spm

where slat.lts is the output file, policy is the SE Linux binary
policy file, and mls.spm is an old style multilevel security file.

To generate a NuSMV source file, type

     $ lts2smv -o slat.smv slat.lts diagram.txt

where slat.smv is the output file, slat.lts contains the labeled
transition system generated by slat, and diagram.txt is a file
containing one or more diagrams separated by semicolons.

You can connect slat and lts2smv with a pipe via the command:

     $ slat policy.conf mls.spm | lts2smv -o slat.smv -- - diagram.txt

To see how a diagram translates into SMV syntax without translating
a labeled transition system, type:

     $ lts2smv "" diagram.txt

DIAGRAMS

The syntax of a diagram is:

  diagram ::= "[" arrows "]" state excepts? | state
    arrow ::= state "," action "+"?
  excepts ::= "[" state ";" action "]"

where arrows is a semicolon separated sequence of a pair of a state
and an action given by the arrow syntax.  An arrow annotated with "+"
indicates one or more steps are allowed satisfying the annotated
action.

The syntax of a state formula is

  state ::=
	 |  "t" ":" "{" comma-separated-atoms "}"  -- type set
	 |  "r" ":" "{" comma-separated-atoms "}"  -- role set
	 |  "u" ":" "{" comma-separated-atoms "}"  -- user set
	 |  "TRUE" | "FALSE"
	 | "!" state
	 |  state "&" state
	 |  state "|" state  -- the precedence of "|" is lower than "&"

The syntax of an action formula is

  action ::=
	 |  "c" ":" "{" comma-separated-atoms "}"  -- class set
	 |  "p" ":" "{" comma-separated-atoms "}"  -- permission set
	 |  "TRUE" | "FALSE"
	 | "!" action
	 |  action "&" action
	 |  action "|" action  -- the precedence of "|" is lower than "&"

Formula abbreviations include

 X "=" atom  => X ": {" atom "}"
 X "!=" atom  => "!(" X ": {" atom "})"
 X "!:" set  => "!(" X ":" set ")"

where X is t, r, u, c, or p.

EXAMPLE

[t=user_t & r=user_r & u!=jadmin, TRUE+;
 t=sshd_tmp_t, c=process]
t=sshd_t