Protection - in - Operating - Systems Article
Protection - in - Operating - Systems Article
net/publication/222089845
CITATIONS READS
1,147 6,701
3 authors:
Jeffrey Ullman
Stanford University
413 PUBLICATIONS 73,968 CITATIONS
SEE PROFILE
All content following this page was uploaded by Michael A. Harrison on 26 June 2014.
.~. rights of subject s 1This condition need not be present, since delete r from (ex-
to object o friend, file) will have no effect if r is not there.
2 ~ denotes the empty set.
463 Communications August 1976
of Volume 19
the ACM Number 8
The quantification in the previous definition is command c~(X, Y, Z )
enter rl into (X, X )
quite important. For example, a primitive operation
destroy subject X
enter r~ into (Y, Z )
enter r into (s, o)
end
requires that s be the name of a subject which now
There can never be a pair of configurations Q and Q'
exists, and similarly for o. If these conditions are not
such that
satisfied, then the primitive operation is not executed.
The primitive operation Q ~--(..... ) a '
create subject s' since the third primitive operation enter r2 into (x, z)
will occur at a point where no subject named x exists.
requires that s' is not a current object name. Thus Example 2. Let us consider the protection system
there can never be duplicate names of objects. whose commands were outlined in Example 1. Suppose
Next we see how a protection system executes a initially there are two processes Sam and Joe, and no
command. files created. Suppose that neither process has any
Definition. Let Q = (S, O, P) be a configuration of rights to itself or to the other process (there is nothing
a protection system containing: in the model that prohibits a process from having
command a(X1 . . . . . Xk) rights to itself). The initial access matrix is:
ff rl in (X,1, Xol) and Sam Joe
r,~ in (X,= , Xo~)
then o p l , . . . , opn Joe (~ (~
end
Now, Sam creates two flies named Code and Data,
Then we say and gives Joe the right to execute Code and Read
Q ~(~ .... ,~k) Q' Data. The sequence of commands whereby this takes
place is:
where Q' is the configuration defined as follows:
CREATE(Sam, Code)
(1) If a's conditions are not satisfied, i.e. if there is some CREATE(Sam, Data)
1 _< i < m such that r~ is not in Pixie, xo~], then CONFERexeeute(Sam, Joe, Code)
CONFERread(Sam, Joe, Data)
0=0
(2) Otherwise, i.e. if for all i between 1 and m, To see the effect of these commands on configura-
r~ { P[x,~, Xo,], then let there exist configurations tions, note that the configuration (S, O,P) can be
Q0, Q,, • • . , O~ such that represented by drawing P, and labeling its rows by
elements of S and its columns by elements of O, as
Q = Q0 ~om* Q1 ~op= . . . . ~o~.. Q, we have done for the initial configuration. The first
where opt* denotes the primitive operation op~ with command, CREATE(Sam, Code), may certainly be
the actual parameters x ~ , . . . , xk replacing all executed in the initial configuration, since CREATE
occurrences of the formal parameters X ~ , . . . , Xk, has no conditions. Its body consists of two primitive
respectively. Then Q' is Q , . operations, create object Code and enter o w n into
(Sam, Code). Then, using the ~ notation, we may
We say that Q [-, Q' if there exist parameters
show the effect of the two primitive operations as:
xx, . . . , Xk such that Q [-,<~ ....... ~) Q'; we say Q ~- Q'
if there exists a command ~ such that Q ~-, Q'.
It is also convenient to write Q ~-* Q', where ~-* Sam Joe
is the reflexive and transitive closure of ~-. That is, ~-* Sam ] (~ (Z) ).
represents zero or more applications of ~-. Joe [ ~ ~ create object Code
There are a number of points involved in our use of
parameters which should be emphasized. Note that Sam Joe Code
every command (except the empty one) has parameters.
Each command is given in terms of formal parameters.
s m ololo
Joe ~ (Z) enter own into (Sam, Code)
At execution time, the formal parameters are replaced
by actual parameters which are object names. Although Sam Joe Code
the same symbols are often used in this exposition for Sam I ~
formal and actual parameters, this should not cause
confusion. The "type checking" involved in deter-
,oo o l o F'°:"'
mining that a command may be executed takes place Thus, using the ~-notation for complete commands we
with respect to actual parameters. For example, consider can say that:
S4 (z,,,a} This probably implies that that decision problem requires ex-
ponential time: cf. [1].