|
Unix Programming - The Elements of Operating-System Style - Internal Boundaries
Unix has wired into it an assumption that the programmer knows
best. It doesn't stop you or request confirmation when you do
dangerous things with your own data, like issuing rm -rf
*. On the other hand, Unix is rather careful about not
letting you step on other people's data. In fact, Unix encourages you
to have multiple accounts, each with its own attached and possibly
differing privileges, to help you protect yourself from misbehaving
programs.[22] System
programs often have their own pseudo-user accounts to confer access to
special system files without requiring unlimited
(or superuser) access.
Unix has at least three levels of internal boundaries that guard
against malicious users or buggy programs. One is memory management;
Unix uses its hardware's memory management unit (MMU) to ensure that
separate processes are prevented from intruding on the others'
memory-address spaces. A second is the presence of true privilege
groups for multiple users — an ordinary (nonroot) user's
processes cannot alter or read another user's files without
permission. A third is the confinement of security-critical functions
to the smallest possible pieces of trusted code. Under Unix, even the
shell (the system command interpreter) is not a privileged
program.
The strength of an operating system's internal boundaries
is not merely an abstract issue of design: It has important
practical consequences for the security of the system.
To design the perfect anti-Unix, discard or bypass memory
management so that a runaway process can crash, subvert, or corrupt
any running program. Have weak or nonexistent privilege groups, so
users can readily alter each others' files and the system's critical
data (e.g., a macro virus, having seized control of your word
processor, can format your hard drive). And trust large volumes of
code, like the entire shell and GUI, so that any bug or successful
attack on that code becomes a threat to the entire system.
[an error occurred while processing this directive]
|
|