/usr/share/doc/monotone/html/Basic-Network-Service.html is in monotone-doc 1.0-12.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>monotone documentation: Basic Network Service</title>
<meta name="description" content="monotone documentation: Basic Network Service">
<meta name="keywords" content="monotone documentation: Basic Network Service">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="General-Index.html#General-Index" rel="index" title="General Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Tutorial.html#Tutorial" rel="up" title="Tutorial">
<link href="Synchronising-Databases.html#Synchronising-Databases" rel="next" title="Synchronising Databases">
<link href="Committing-Work.html#Committing-Work" rel="prev" title="Committing Work">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
<link rel="stylesheet" type="text/css" href="texinfo.css">
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Basic-Network-Service"></a>
<div class="header">
<p>
Next: <a href="Synchronising-Databases.html#Synchronising-Databases" accesskey="n" rel="next">Synchronising Databases</a>, Previous: <a href="Committing-Work.html#Committing-Work" accesskey="p" rel="prev">Committing Work</a>, Up: <a href="Tutorial.html#Tutorial" accesskey="u" rel="up">Tutorial</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="General-Index.html#General-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Basic-Network-Service-1"></a>
<h3 class="section">2.8 Basic Network Service</h3>
<p>Jim now decides he will make his base revision available to his
employees. To do this, he arranges for Abe and Beth to synchronise
their databases with his, over the network. There are two
pre-requisites for this: first, he has to get a copy of each of their
public keys; then, he has to tell monotone that the holders of those
keys are permitted to access his database. Finally, with these
pre-requisites in place, he needs to tell monotone to provide network
access to his database.
</p>
<p>First, Abe exports his public key:
</p>
<div class="smallexample">
<pre class="smallexample">$ mtn --db=~/abe.mtn pubkey abe@juicebot.co.jp >~/abe.pubkey
</pre></div>
<p>His public key is just a plain block of ASCII text:
</p>
<div class="smallexample">
<pre class="smallexample">$ cat ~/abe.pubkey
[pubkey abe@juicebot.co.jp]
MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCbaVff9SF78FiB/1nUdmjbU/TtPyQqe/fW
CDg7hSg1yY/hWgClXE9FI0bHtjPMIx1kBOig09AkCT7tBXM9z6iGWxTBhSR7D/qsJQGPorOD
DO7xovIHthMbZZ9FnvyB/BCyiibdWgGT0Gtq94OKdvCRNuT59e5v9L4pBkvajb+IzQIBEQ==
[end]
</pre></div>
<p>Beth also exports her public key:
</p>
<div class="smallexample">
<pre class="smallexample">$ mtn --db=:beth pubkey beth@juicebot.co.jp >~/beth.pubkey
</pre></div>
<p>Then Abe and Beth both send their keys to Jim. The keys are not secret,
but the team members must be relatively certain that they are exchanging
keys with the person they intend to trust, and not some malicious person
pretending to be a team member. Key exchange may involve sending keys
over an encrypted medium, or meeting in person to exchange physical
copies, or any number of techniques. All that matters, ultimately, is
that Jim receives both Abe’s and Beth’s key in a way that he can be sure
of.
</p>
<p>So eventually, after key exchange, Jim has the public key files in his
home directory. He tells monotone to read the associated key packets
into his database:
</p>
<div class="smallexample">
<pre class="smallexample">$ cat ~/abe.pubkey ~/beth.pubkey | mtn --db=~/jim.mtn read
mtn: read 2 packets
</pre></div>
<p>Now Jim’s monotone is able to identify Beth and Abe, and he is ready to
give them permission to access his database. He does this by editing a
pair of small files in his <samp>~/.monotone</samp> directory:
</p>
<div class="smallexample">
<pre class="smallexample">$ cat >>~/.monotone/read-permissions
pattern "*"
allow "abe@juicebot.co.jp"
allow "beth@juicebot.co.jp"
^D
$ cat >>~/.monotone/write-permissions
abe@juicebot.co.jp
beth@juicebot.co.jp
^D
</pre></div>
<p>These files are read by the default monotone hooks that will decide
whether remote monotone users will be allowed access to Jim’s database,
identified by the named keys.
</p>
<p>Jim then makes sure that his TCP port 4691 is open to incoming
connections, adjusting his firewall settings as necessary, and runs
the monotone <code>serve</code> command:
</p>
<div class="smallexample">
<pre class="smallexample">$ mtn --db=jim.mtn serve
</pre></div>
<p>This command starts monotone listening on all network interfaces of
his laptop on the default port 4691, serving everything in his database.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Synchronising-Databases.html#Synchronising-Databases" accesskey="n" rel="next">Synchronising Databases</a>, Previous: <a href="Committing-Work.html#Committing-Work" accesskey="p" rel="prev">Committing Work</a>, Up: <a href="Tutorial.html#Tutorial" accesskey="u" rel="up">Tutorial</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="General-Index.html#General-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|