summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
Diffstat (limited to 'hurd')
-rw-r--r--hurd/authentication.mdwn17
-rw-r--r--hurd/concepts.mdwn5
-rw-r--r--hurd/hurdcritique.mdwn7
-rw-r--r--hurd/hurdhackingguide.mdwn4
-rw-r--r--hurd/ibac.mdwn8
-rw-r--r--hurd/translator.mdwn26
-rw-r--r--hurd/virtualfilesystem.mdwn17
7 files changed, 84 insertions, 0 deletions
diff --git a/hurd/authentication.mdwn b/hurd/authentication.mdwn
new file mode 100644
index 00000000..0d52a0ba
--- /dev/null
+++ b/hurd/authentication.mdwn
@@ -0,0 +1,17 @@
+UIDs on the Hurd are separate from processes. A process has
+[[capabilities]] designating so-called UID vectors that
+are implemented by an [[auth]] server. This
+makes them easily [[virtualizable]].
+
+When a process wishes to gain access to a resource provided by a third
+party (e.g., a file system) and that party wishes to authenticate the client
+so as to implement some identity-based access control ([[IBAC]]) policy,
+the latter initiates a three-way authentication handshake. The server
+and client each then begin an authentication sequence with
+their respective [[trust]]ed auth servers. If they have
+a mutally trusted ancestor and an auth server does not abort the
+transaction, then the client is delivered a new capability
+naming a newly authenticated session with the server
+and the server is delivered the client's designated UID vector.
+
+For more details, see section 2.3 of the [[HurdCritique]].
diff --git a/hurd/concepts.mdwn b/hurd/concepts.mdwn
new file mode 100644
index 00000000..6ec21f7d
--- /dev/null
+++ b/hurd/concepts.mdwn
@@ -0,0 +1,5 @@
+* [[Translator]]
+* [[VirtualFileSystem]]
+* [[Authentication]]
+* [[NeighborHurd]]
+
diff --git a/hurd/hurdcritique.mdwn b/hurd/hurdcritique.mdwn
new file mode 100644
index 00000000..f8e3eed7
--- /dev/null
+++ b/hurd/hurdcritique.mdwn
@@ -0,0 +1,7 @@
+[[NealWalfield]] and [[MarcusBrinkmann]] wrote a paper titled
+"[A Critique of the GNU Hurd Multi-Server Operating System](http://walfield.org/papers/200707-walfield-critique-of-the-GNU-Hurd.pdf)."
+This was published in ACM SIGOPS Operating Systems Review in
+July 2007. This is sometimes referred to as "the critique."
+
+The paper provides a technical overview of the Hurd's
+architecture and critiques some of the decisions made. \ No newline at end of file
diff --git a/hurd/hurdhackingguide.mdwn b/hurd/hurdhackingguide.mdwn
new file mode 100644
index 00000000..bc214589
--- /dev/null
+++ b/hurd/hurdhackingguide.mdwn
@@ -0,0 +1,4 @@
+Originally written by Wolfgang Jährling, the [Hurd Hacking Guide](http://www.gnu.org/software/hurd/hacking-guide/hhg.html)
+contains an overview of some of the Hurd's features.
+Also contains a tutorial on writing your own translator.
+
diff --git a/hurd/ibac.mdwn b/hurd/ibac.mdwn
new file mode 100644
index 00000000..14d1551c
--- /dev/null
+++ b/hurd/ibac.mdwn
@@ -0,0 +1,8 @@
+IBAC stands for identity-based access control.
+In this access control scheme, access to a resource
+is based on identity of the caller. This is often
+problematic as when a program acts on behalf of
+another, access is authorized based on its own
+identity rather than that of the caller.
+
+See also [[ABAC]]. \ No newline at end of file
diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn
new file mode 100644
index 00000000..1e281b9d
--- /dev/null
+++ b/hurd/translator.mdwn
@@ -0,0 +1,26 @@
+A translator is simply a normal program acting as
+an object server and participating in the Hurd's
+distributed [[VirtualFileSystem]]. It is so-called
+because it typically exports a file system
+(although need not: cf. [[auth]], [[proc]]
+and [[pfinet]]) and thus translates object invocations
+into calls appropriate for the backing store
+(e.g., ext2 file system, nfs server, etc.).
+
+Translators do not require any special privilege
+to run. The privilege they require is simply
+that to access the indiviudal resources they use.
+This is primarily the backing store and the node
+they attach to. Typically, a translator can
+only be attached to a node by the node's owner.
+On Unix this is not possible because file systems
+and the virtual file system are implemented in the
+kernel and thus have absolute access to the machine.
+As the protocols do not require any special privilege
+to implement, this is not an issue on the Hurd.
+
+See [[Translators]] for a list of Hurd translators.
+
+To learn how to write a translator, read the code!
+It is well documented, in particular, the header files.
+The [[HurdHackingGuide]] also has a tutorial. \ No newline at end of file
diff --git a/hurd/virtualfilesystem.mdwn b/hurd/virtualfilesystem.mdwn
new file mode 100644
index 00000000..054f0b04
--- /dev/null
+++ b/hurd/virtualfilesystem.mdwn
@@ -0,0 +1,17 @@
+Path names are resolved using a distributed protocol.
+No single entity is responsible for the resolution of
+path names. A file system server (a [[translator]])
+attaches to translators (fs.defs:file_set_translator).
+
+When a process resolves an aboslute path, it queries
+its root file system server by invoking the fs.defs:dir_lookup
+method in the capability in its root directory slot. The
+file system server resolves as much as it knows about locally
+and when it encounters a translator, it replies to the client
+indicating how much it resolved and where to continue its
+lookup. This continues until the name is fully resolved
+or an error occurs. The same happens for relative path
+names but a different capability is used.
+
+For a more detailed explanation of the protocol, look at the section
+2.2 of the [[HurdCritique]]. \ No newline at end of file