123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- .TH GNUNET-PUBLISH "1" "November 16, 2015" "GNUnet"
- .SH NAME
- gnunet\-publish \- a command line interface for publishing new content into GNUnet
- .SH SYNOPSIS
- .B gnunet\-publish
- [\fIOPTIONS\fR] FILENAME
- .SH DESCRIPTION
- .PP
- In order to share files with other GNUnet users, the files must first
- be made available to GNUnet.
- GNUnet does not automatically share all files from a certain directory
- (however, you can do this with the gnunet\-auto\-share tool).
- In fact, even files that are downloaded are not automatically shared.
- .PP
- In order to start sharing files, the files must be added either using
- gnunet\-publish or a graphical interface such as gnunet\-fs\-gtk.
- The command line tool gnunet\-publish is more useful if many files are
- supposed to be added.
- gnunet\-publish can automatically publish batches of files,
- recursively publish directories, create directories that can be
- browsed within GNUnet and publish file lists in a namespace.
- When run on a directory, gnunet\-publish will always recursively
- publish all of the files in the directory.
- .PP
- gnunet\-publish can automatically extract keywords from the files that
- are shared.
- Users that want to download files from GNUnet use keywords to search
- for the appropriate content.
- You can disable keyword extraction with the \-D option.
- You can manually add keywords using the \-k option.
- The keywords are case\-sensitive.
- .PP
- In addition to searching for files by keyword, GNUnet allows
- organizing files into directories.
- With directories, the user only needs to find the directory in order
- to be able to download any of the files listed in the directory.
- Directories can contain pointers to other directories.
- .PP
- With gnunet\-publish, it is easy to create new directories
- simultaneously when adding the files.
- Simply pass the name of a directory instead of a file.
- .PP
- Since keywords can be spammed (any user can add any content under any
- keyword), GNUnet supports namespaces.
- A namespace is a subset of the searchspace into which only the holder
- of a certain pseudonym can add content.
- Any GNUnet user can create any number of pseudonyms using
- \fBgnunet\-pseudonym\fR. Pseudonyms are stored in the user's GNUnet
- directory.
- While pseudonyms are locally identified with an arbitrary string that
- the user selects when the pseudonym is created, the namespace is
- globally known only under the hash of the public key of the pseudonym.
- Since only the owner of the pseudonym can add content to the
- namespace, it is impossible for other users to pollute the namespace.
- gnunet\-publish automatically publishes the top\-directory (or the
- only file if only one file is specified) into the namespace if a
- pseudonym is specified.
- .PP
- It is possible to update content in GNUnet if that content was placed
- and obtained from a particular namespace.
- Updates are only possible for content in namespaces since this is the
- only way to assure that a malicious party can not supply counterfeited
- updates.
- Note that an update with GNUnet does not make the old content
- unavailable, GNUnet merely allows the publisher to point users to more
- recent versions.
- You can use the \-N option to specify the future identifier of an
- update.
- When using this option, a GNUnet client that finds the current (\-t)
- identifier will automatically begin a search for the update (\-N)
- identifier.
- If you later publish an update under the (\-N) identifier, both
- results will be given to the user.
- .PP
- You can use automatic meta\-data extraction (based on libextractor) or
- the command\-line option \-m to specify meta-data.
- For the \-m option you need to use the form keyword\-type:value.
- For example, use "\-m os:Linux" to specify that the operating system
- is Linux.
- Common meta\-data types are "author", "title" , "mimetype",
- "filename", "language", "subject" and "keywords".
- A full list can be obtained from the extract tool using the option
- \-\-list.
- The meta\-data is used to help users in searching for files on the
- network.
- The keywords are case\-sensitive.
- .PP
- GNUnet supports two styles of publishing files on the network.
- Publishing a file means that a copy of the file is made in the local
- (!) database of the node.
- Indexing a file means that an index is added to the local (!)
- database with symbolic links to the file itself.
- The links will use the SHA-512 hash of the entire file as the
- filename.
- Indexing is generally significantly more efficient and the default
- choice.
- However, indexing only works if the indexed file can be read (using
- the same absolute path) by gnunet-service-fs.
- If this is not the case, indexing will fail (and gnunet\-publish will
- automatically revert to publishing instead).
- Regardless of which method is used to publish the file, the file will
- be slowly (depending on how often it is requested and on how much
- bandwidth is available) dispersed into the network.
- If you publish or index a file and then leave the network, it will
- almost always NOT be available anymore.
- .PP
- \fB\-c \fIFILENAME\fR, \fB\-\-config=FILENAME\fR
- Use alternate config file (if this option is not specified, the
- default is ~/.config/gnunet.conf).
- .TP
- \fB\-D\fR, \fB\-\-disable\-extractor\fR
- Disable use of GNU libextractor for finding additional keywords and
- metadata.
- .TP
- \fB\-d\fR, \fB\-\-disable\-creation\-time\fR
- Disable use of creation time timestamp in metadata.
- Useful to make created directories deterministic and to avoid leaking
- information about the time at which a file was made available.
- .TP
- \fB\-e\fR, \fB\-\-extract\fR
- Print the list of keywords that will be used for each file given the
- current options.
- Do not perform any indexing or publishing.
- .TP
- \fB\-h\fR, \fB\-\-help\fR
- Print a brief help page with all the options.
- .TP
- \fB\-k \fIKEYWORD\fR, \fB\-\-key=KEYWORD\fR
- Additional key to index the content with (to add multiple keys,
- specify multiple times).
- Each additional key is case\-sensitive.
- Can be specified multiple times.
- The keyword is only applied to the top\-level file or directory.
- .TP
- \fB\-L \fILOGLEVEL\fR, \fB\-\-loglevel=\fILOGLEVEL\fR
- Change the loglevel.
- Possible values for LOGLEVEL are ERROR, WARNING, INFO and DEBUG.
- .TP
- \fB\-m \fITYPE:VALUE\fR, \fB\-\-meta=\fITYPE:VALUE\fR
- For the main file (or directory), set the metadata of the given TYPE
- to the given VALUE.
- Note that this will not add the respective VALUE to the set of
- keywords under which the file can be found.
- .TP
- \fB\-n\fR, \fB\-\-noindex\fR
- Executive summary: You probably don't need it.
- Do not index, full publishing.
- Note that directories, information for keyword search, namespace
- search and indexing data are always published (even without this
- option).
- With this option, every block of the actual files is stored in
- encrypted form in the block database of the local peer.
- While this adds security if the local node is compromised (the
- adversary snags your machine), it is significantly less efficient
- compared to on\-demand encryption and is definitely not recommended
- for large files.
- .TP
- \fB\-N \fIID\fR, \fB\-\-next=\fIID\fR
- Specifies the next identifier of a future version of the file to be
- published under the same pseudonym.
- This option is only valid together with the \-P option.
- This option can be used to specify what the identifier of an updated
- version will look like.
- Note that specifying \-i and \-N without \-t is not allowed.
- .TP
- \fB\-p \fIPRIORITY\fR, \fB\-\-prio=\fIPRIORITY\fR
- Executive summary: You probably don't need it.
- Set the priority of the published content (default: 365).
- If the local database is full, GNUnet will discard the content with
- the lowest ranking.
- Note that ranks change over time depending on popularity.
- The default should be high enough to preserve the locally published
- content in favor of content that migrates from other peers.
- .TP
- \fB\-P \fINAME\fR, \fB\-\-pseudonym=\fINAME\fR
- For the top\-level directory or file, places the file into the
- namespace identified by the pseudonym NAME.
- NAME must be a valid pseudonym managed by gnunet\-identity.
- .TP
- \fB\-r \fILEVEL\fR, \fB\-\-replication=\fILEVEL\fR
- Set the desired replication level.
- If CONTENT_PUSHING is set to YES, GNUnet will push each block (for the
- file) LEVEL times to other peers before doing normal "random"
- replication of all content.
- This option can be used to push some content out into the network
- harder.
- Note that pushing content LEVEL times into the network does not
- guarantee that there will actually be LEVEL replicas.
- .TP
- \fB\-s\fR, \fB\-\-simulate-only\fR
- When this option is used, gnunet\-publish will not actually publish
- the file but just simulate what would be done.
- This can be used to compute the GNUnet URI for a file without actually
- sharing it.
- .TP
- \fB\-t \fIID\fR, \fB\-\-this=\fIID\fR
- Specifies the identifier under which the file is to be published under
- a pseudonym.
- This option is only valid together with the\ \-P option.
- .TP
- \fB\-u \fIURI\fR, \fB\-\-uri=\fIURI\fR
- This option can be used to specify the URI of a file instead of a
- filename (this is the only case where the otherwise mandatory filename
- argument must be omitted).
- Instead of publishing a file or directory and using the corresponding
- URI, gnunet\-publish will use this URI and perform the selected
- namespace or keyword operations.
- This can be used to add additional keywords to a file that has already
- been shared or to add files to a namespace for which the URI is known
- but the content is not locally available.
- .TP
- \fB\-v\fR, \fB\-\-version\fR
- Print the version number.
- .TP
- \fB\-V\fR, \fB\-\-verbose\fR
- Be verbose.
- Using this option causes gnunet\-publish to print progress information
- and at the end the file identification that can be used to download
- the file from GNUnet.
- .SH SETTING ANONYMITY LEVEL
- The \fB\-a\fR option can be used to specify additional anonymity
- constraints.
- If set to 0, GNUnet will publish the file non-anonymously and in fact
- sign the advertisement for the file using your peer's private key.
- This will allow other users to download the file as fast as possible,
- including using non-anonymous methods (DHT, direct transfer).
- If you set it to 1 (default), you use the standard anonymous routing
- algorithm (which does not explicitly leak your identity).
- However, a powerful adversary may still be able to perform traffic
- analysis (statistics) to over time infer data about your identity.
- You can gain better privacy by specifying a higher level of anonymity,
- which increases the amount of cover traffic your own traffic will get,
- at the expense of performance.
- Note that regardless of the anonymity level you choose, peers that
- cache content in the network always use anonymity level 1.
- .PP
- The definition of the ANONYMITY LEVEL is the following.
- 0 means no anonymity is required.
- Otherwise a value of 'v' means that 1 out of v bytes of "anonymous"
- traffic can be from the local user, leaving 'v-1' bytes of cover
- traffic per byte on the wire.
- Thus, if GNUnet routes n bytes of messages from foreign peers (using
- anonymous routing), it may originate n/(v-1) bytes of data in the same
- time\-period.
- The time\-period is twice the average delay that GNUnet defers
- forwarded queries.
- .PP
- The default is 1 and this should be fine for most users.
- Also notice that if you choose very large values, you may end up
- having no throughput at all, especially if many of your fellow
- GNUnet\-peers all do the same.
- .SH EXAMPLES
- .PP
- \fBBasic examples\fR
- .TP
- gnunet\-publish COPYING
- Index a file COPYING
- .TP
- gnunet\-publish \-n COPYING
- Publish a file COPYING
- .TP
- gnunet\-publish \-k gpl \-k test COPYING
- Index a file COPYING with the keywords \fBgpl\fR and \fBtest\fR
- .TP
- gnunet\-publish \-m "description:GNU License" \-k gpl \-k test \-m "mimetype:text/plain" COPYING
- Index a file COPYING with description "GNU License", mime-type
- "text/plain" and keywords \fBgpl\fR and \fBtest\fR
- .PP
- \fBUsing directories\fR
- .TP
- mkdir gnu ; mv COPYING AUTHORS gnu/ ; gnunet\-publish \-k test \-k gnu \-D gnu/
- Index the files COPYING and AUTHORS with keyword \fBtest\fR and build
- a directory containing the two files. Make the directory itself
- available under keyword \fBgnu\fR and disable keyword extraction using
- libextractor
- .TP
- gnunet\-publish \-n \-m "description:Kitten collection" \-k kittens kittendir/
- Neatly publish an image gallery in \fBkittendir/\fR and its subdirs
- with keyword \fBkittens\fR for the directory but no keywords for the
- individual files or subdirs (\-n).
- Force description for all files.
- .PP
- \fBSecure publishing with namespaces\fR
- .TP
- gnunet\-publish \-P RIAA-2 \-t gpl COPYING
- Publish file COPYING with pseudonym RIAA-2 (\-P) and with identifier
- \fBgpl\fR (\-t) and no updates
- .TP
- gnunet\-publish \-P RIAA-2 \-t MUSIC \-N VIDEOS /home/ogg
- Recursively index /home/ogg and build a matching directory
- structure. Publish the top\-level directory into the namespace under
- the pseudonym RIAA\-2 (\-P) under identifier 'MUSIC' (\-t) and promise
- to provide an update with identifier 'VIDEOS' (\-N):
- .TP
- gnunet\-publish \-nV /var/lib/mysql
- Recursively publish (\-n) /var/lib/mysql and build a matching
- directory structure, but disable the use of libextractor to extract
- keywords (\-n).
- Print the file identifiers (\-V) that can be used to retrieve the
- files.
- This will store a copy of the MySQL database in GNUnet but without
- adding any keywords to search for it.
- Thus only people that have been told the secret file identifiers
- printed with the \-V option can retrieve the (secret?) files:
- .TP
- gnunet\-publish \-P MPAA-1 \-t root \-N next noise.mp3
- Create a namespace entry 'root' in namespace MPAA-1 and announce that
- the next update will be called 'next':
- .TP
- gnunet\-publish \-P MPAA-1 \-t next noise_updated.mp3
- Update the previous entry, do not allow any future updates:
- .SH FILES
- .TP
- ~/.config/gnunet.conf
- GNUnet configuration file
- .SH BUGS
- Report bugs to <https://bugs.gnunet.org/> or by sending electronic
- mail to <gnunet\-developers@gnu.org>
- .SH SEE ALSO
- \fBgnunet\-auto\-share\fP(1)
- \fBgnunet\-fs\-gtk\fP(1)
- \fBgnunet\-search\fP(1)
- \fBgnunet\-download\fP(1)
- \fBgnunet.conf\fP(5)
- \fBextract\fP(1)
- \fBgnunet\-identity\fP(1)
- .PP
- The full documentation for
- .B gnunet
- is maintained as a Texinfo manual.
- If the
- .B info
- and
- .B gnunet
- programs are properly installed at your site, the command
- .IP
- .B info gnunet
- .PP
- should give you access to the complete handbook,
- .IP
- .B info gnunet-c-tutorial
- .PP
- will give you access to a tutorial for developers.
- .PP
- Depending on your installation, this information is also
- available in
- \fBgnunet\fP(7) and \fBgnunet-c-tutorial\fP(7).
|