handouts/ho04.tex
author Christian Urban <christian dot urban at kcl dot ac dot uk>
Sun, 19 Oct 2014 14:00:28 +0100
changeset 249 31a749eba8c1
parent 248 51fa0549fc8f
child 251 64e62d636737
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
245
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     1
\documentclass{article}
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     2
\usepackage{../style}
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     3
\usepackage{../langs}
247
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
     4
245
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     5
\usetikzlibrary{patterns,decorations.pathreplacing}
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     6
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     7
\begin{document}
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     8
247
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
     9
\section*{Handout 4 (Access Control)}
245
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    10
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    11
Access control is essentially about deciding whether to grant
247
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    12
access to a resource or deny it. Sounds easy. No? Well it
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    13
turns out that things are not as simple as they seem at first
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    14
glance. Let us first look as a case-study at how access
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    15
control is organised in Unix-like systems (Windows systems
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    16
have similar access controls, although the details might be
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    17
quite different).
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    18
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    19
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    20
\subsubsection*{Unix-Style Access Control}
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    21
245
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    22
Following the Unix-philosophy that everything is considered as
247
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    23
a file, even memory, ports and so on, access control in Unix
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    24
is organised around 11 Bits that specify how a file can be
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    25
accessed. These Bits are sometimes called the \emph{permission
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    26
attributes} of a file. There are typically three modes for
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    27
access: \textbf{r}ead, \textbf{w}rite and e\textbf{x}ecute.
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    28
Moreover there are three user groups to which the modes apply:
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    29
the owner of the file, the group the file is associated with
249
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    30
and everybody else. This relatively fine granularity seems to
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    31
cover many cases of access control. A typical example of some
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    32
files with permission attributes is as follows:
247
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    33
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    34
{\small\lstinputlisting[language={}]{../slides/lst}}
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    35
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    36
\noindent The leading \pcode{d} in Lines 2 and 6 indicate that
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    37
the file is a directory, whereby in the Unix-tradition the
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    38
\pcode{.} points to the directory itself. The \pcode{..}
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    39
points at the directory ``above'', or parent directory. The
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    40
second to fourth letter specify how the owner of the file can
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    41
access the file. For example Line 3 states that \pcode{ping}
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    42
can read and write the \pcode{manual.txt}, but cannot execute
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    43
it. The next three letters specify how the group members of
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    44
the file can access the file. In Line 4, for example, all
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    45
students can read and write the file \pcode{report.txt}.
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    46
Finally the last three letters specify how everybody else can
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    47
access a file. This should all be relatively familiar and
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    48
straightforward. No?
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    49
249
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    50
There are already some special rules for directories and
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    51
links. If the execute attribute of a directory is \emph{not}
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    52
set, then one cannot change into the directory and one cannot
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    53
access any file inside it. If the write attribute is not set,
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    54
then one can change existing files (provide they are
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    55
changeable), but one cannot create new files. If the read
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    56
attribute is not set, one cannot search inside the directory
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    57
(\pcode{ls -la} does not work) but one can access an existing
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    58
file, provided one knows its name. Links to files never depend
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    59
on the permission of the link, but the file they are pointing
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    60
to.
247
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    61
249
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    62
While the above might sound already moderately complicated,
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    63
the real complications with Unix-style file permissions
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    64
involve the setuid and setgid attributes. For example the file
247
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    65
\pcode{microedit} in Line 5 has the setuid attribute set
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    66
(indicated by the \pcode{s} in place of the usual \pcode{x}).
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    67
The purpose of setuid and setgid is to solve the following
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    68
puzzle: The program \pcode{passwd} allows users to change
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    69
their passwords. Therefore \pcode{passwd} needs to have write
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    70
access to the file \pcode{/etc/passwd}. But this file cannot
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    71
be writable for every user, otherwise anyone can set anyone
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    72
else's password. So changing securely passwords cannot be
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    73
achieved with the simple Unix access rights discussed so far.
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    74
While this situation might look like an anomaly, it is in fact
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    75
an often occurring problem. For example looking at current
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    76
active processes with \pcode{/bin/ps} requires access to
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    77
internal data structures of the operating system. In fact any
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    78
of the following actions cannot be configured for single
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    79
users, but need privileged root access
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    80
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    81
\begin{itemize}
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    82
\item changing system databases (users, groups, routing tables
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    83
and so on)
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    84
\item opening a network port below 1024
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    85
\item interacting with peripheral hardware, such as printers, 
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    86
harddisk etc
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    87
\item overwriting operating system facilities, like
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    88
process scheduling and memory management
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    89
\end{itemize}
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    90
249
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    91
\noindent This will typically involve quite a lot of programs
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    92
on a Unix system. I counted 90 programs with the setuid
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    93
attribute set on my bog-standard Mac OSX system (including the
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    94
program \pcode{/usr/bin/login}). The problem is that if there
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    95
is a security problem with only one of them, be it a buffer
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    96
overflow for example, then malicious users (or outside
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    97
attackers) can gain root access.
247
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
    98
249
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
    99
The idea for files that have the setuid attribute set is
248
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   100
that when running such files they will run not with the
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   101
callers access rights, but with the owner of the files rights.
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   102
So \pcode{/usr/bin/login} will always be running with root
249
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   103
access rights, no matter who invokes this program. The problem
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   104
is that this entails a rather complicated semantics of what 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   105
the identity of a process (that runs the program) is. One
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   106
would hope there is only one such ID, but in fact Unix
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   107
distinguishes three(!):
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   108
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   109
\begin{itemize}
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   110
\item \emph{real identity}\\ 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   111
This is the ID of the user who creates 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   112
the process; can only be changed to something else by root. 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   113
\item \emph{effective identity}\\ 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   114
This is the ID that is used to 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   115
grant or deny access to a resource; can be changed to either
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   116
the real identity or saved identity by users, can be changed 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   117
to anything by root.
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   118
\item \emph{saved identity}\\
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   119
If the setuid bit set in a file then the process is started
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   120
with the real identity of the user who started the program,
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   121
and the identity of the owner of the program as effective and
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   122
saved identity. If the setuid bit is not set, then the
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   123
saved identity will be the real identity. 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   124
\end{itemize}
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   125
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   126
\noindent As an example consider again \pcode{passwd} program.
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   127
When started by, say the user \pcode{foo}, it has at the
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   128
beginning the identities:
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   129
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   130
\begin{itemize}
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   131
\item \emph{real identity}: \pcode{foo}\\
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   132
\emph{effective identity}: \pcode{foo}\\ 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   133
\emph{saved identity}: \pcode{root}
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   134
\end{itemize}
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   135
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   136
\noindent It is then allowed to change the effective
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   137
identity to the saved identity to have
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   138
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   139
\begin{itemize}
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   140
\item \emph{real identity}: \pcode{foo}\\
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   141
\emph{effective identity}: \pcode{root}\\ 
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   142
\emph{saved identity}: \pcode{root}
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   143
\end{itemize}
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   144
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   145
\noindent It can now read and write the file
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   146
\pcode{/etc/passwd}. Note the effective identity is not
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   147
automatically elevated to \pcode{root}, but the program itself
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   148
must make this change. After it has done the work, the
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   149
effective identity goes back to the real identity.
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   150
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   151
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   152
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   153
Cannot be used to exclude some people
248
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   154
247
95e14b2dbc94 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 245
diff changeset
   155
\subsubsection*{Secrecy and Integrity}
245
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   156
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   157
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   158
248
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   159
\subsubsection*{Further Information}
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   160
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   161
If you want to know more about the intricacies of the
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   162
``simple'' Unix access control system you might find the
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   163
relatively readable paper about ``Setuid Demystified'' 
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   164
useful.
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   165
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   166
\begin{center}\small
249
31a749eba8c1 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 248
diff changeset
   167
\url{http://www.cs.berkeley.edu/~daw/papers/setuid-usenix02.pdf}
248
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   168
\end{center}
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   169
51fa0549fc8f updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 247
diff changeset
   170
245
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   171
\end{document}
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   172
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   173
%%% Local Variables: 
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   174
%%% mode: latex
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   175
%%% TeX-master: t
630a3dd1efda updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   176
%%% End: