arver 0.0.5 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.textile +6 -1
- data/README.textile +55 -60
- data/lib/arver/cli.rb +17 -18
- data/lib/arver/version.rb +1 -1
- data/man/arver.5 +9 -4
- metadata +13 -13
data/CHANGELOG.textile
CHANGED
data/README.textile
CHANGED
@@ -1,53 +1,73 @@
|
|
1
1
|
h1. arver
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
h2. DESCRIPTION:
|
3
|
+
h2. Synopsis
|
6
4
|
|
7
5
|
arver is a tool to manage encrypted harddisks.
|
8
6
|
|
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
|
-
* Finer grained access. As for each user and each disk there will be a seperate
|
35
|
-
password by design. You can also grant access to certain disks also only
|
36
|
-
selectively. So for example new admins in your group can only open the disks
|
37
|
-
for your most important services or for which they are respnsible, while access
|
38
|
-
to the other disks is restriced to other admins.
|
7
|
+
It is tailored for fine-grained access control to LUKS encrypted harddisks by
|
8
|
+
many users. Additionally it supports automation through scripts and facilitates
|
9
|
+
key distribution.
|
10
|
+
|
11
|
+
As an example it can be used in an organisation to grant access to encrypted
|
12
|
+
partitions to a team of admins.
|
13
|
+
|
14
|
+
h2. Addressed Problems
|
15
|
+
|
16
|
+
In a traditional setup with multiple LUKS devices most organisations resort
|
17
|
+
to password sharing. This has multiple drawbacks, which arver tries to address:
|
18
|
+
|
19
|
+
* In case of an emergency or scheduled password change, everyone needs to learn
|
20
|
+
a bunch of new passwords and changing them is cumbersome and time consuming.
|
21
|
+
* If the password is leaked, all disks are compromised.
|
22
|
+
* As the amount of passwords grows with the number of disks, password patterns
|
23
|
+
are common. This has the drawback that you can't grant per-disk access to others.
|
24
|
+
|
25
|
+
Further arver can ease many associated tasks:
|
26
|
+
|
27
|
+
* Arver is scriptable - all actions support script hooks, which means that you can
|
28
|
+
recover much faster from outages.
|
29
|
+
* Revoking all access for an admin can be done with only one command.
|
30
|
+
* Since arver keys are encrypted using publickey cryptography it is very easy to
|
31
|
+
safely distribute arver keys.
|
39
32
|
|
40
33
|
h1. Usage
|
41
34
|
|
42
35
|
arver ships with a detailed man page, describing the usage in detail.
|
43
36
|
|
37
|
+
h1. Installation
|
38
|
+
|
39
|
+
The easiest way to install arver is by gem
|
40
|
+
|
41
|
+
sudo gem install arver
|
42
|
+
|
43
|
+
This will install all required dependecies automatically. If your distributions
|
44
|
+
contains an arver package we recommend installation by your package manager.
|
45
|
+
|
46
|
+
The following ruby gems are required for arver:
|
47
|
+
|
48
|
+
* gpgme 2
|
49
|
+
* activesupport 2
|
50
|
+
* escape
|
51
|
+
|
52
|
+
For development you will need the following additional gems:
|
53
|
+
|
54
|
+
* rake
|
55
|
+
* cucumber
|
56
|
+
* rspec
|
57
|
+
|
58
|
+
h1. Requirements
|
59
|
+
|
60
|
+
arver only works with cryptsetup-luks >= 1.0.5 as previous versions do not
|
61
|
+
support key slots properly for our usage.
|
62
|
+
|
44
63
|
h1. Limitations
|
45
64
|
|
65
|
+
* arver only supports LUKS as backend.
|
46
66
|
* arver supports only up to 8 users as LUKS has only 8 key slots (LUKS NUMKEYS).
|
47
67
|
|
48
|
-
|
68
|
+
h2. Known Issues
|
49
69
|
|
50
|
-
|
70
|
+
h3. GPGME and gpg-agent
|
51
71
|
|
52
72
|
If arver asks you multiple times for the password, you might consider to use
|
53
73
|
gpg-agent, so you can decrypt your keypair once and the use it for all your
|
@@ -68,31 +88,6 @@ script. An option is to add the following entry to your .bashrc
|
|
68
88
|
export GPG_AGENT_INFO
|
69
89
|
fi
|
70
90
|
|
71
|
-
h1. Requirements
|
72
|
-
|
73
|
-
arver only works with cryptsetup-luks >= 1.0.5 as previous versions do not
|
74
|
-
support key slots properly for our usage.
|
75
|
-
|
76
|
-
h1. Installation
|
77
|
-
|
78
|
-
The easiest way to install arver is by gem
|
79
|
-
|
80
|
-
sudo gem install arver
|
81
|
-
|
82
|
-
This will install all required dependecies automatically. If your distributions
|
83
|
-
contains an arver package we recommend installation by your package manager.
|
84
|
-
|
85
|
-
The following ruby gems are required for arver:
|
86
|
-
|
87
|
-
* gpgme 2
|
88
|
-
* activesupport 2
|
89
|
-
* escape
|
90
|
-
|
91
|
-
For development you will need the following additional gems:
|
92
|
-
|
93
|
-
* rake
|
94
|
-
* cucumber
|
95
|
-
* rspec
|
96
91
|
|
97
92
|
h1. License
|
98
93
|
|
data/lib/arver/cli.rb
CHANGED
@@ -27,16 +27,13 @@ module Arver
|
|
27
27
|
Options:
|
28
28
|
BANNER
|
29
29
|
opts.on("-c", "--config-dir PATH", String,
|
30
|
-
"Path to
|
31
|
-
"Default: .arver") { |arg| options[:config_dir] = arg }
|
30
|
+
"Path to arverdata dir.") { |arg| options[:config_dir] = arg }
|
32
31
|
opts.on("-u", "--user NAME", String,
|
33
|
-
"
|
32
|
+
"Your username." ) { |arg| options[:user] = arg }
|
34
33
|
opts.on("-h", "--help",
|
35
34
|
"Show this help message.") { Arver::Log.write opts; return }
|
36
|
-
opts.on("--dry-run",
|
37
|
-
"Test your command.") { options[:dry_run] = true }
|
38
35
|
opts.on("--ask-password",
|
39
|
-
"Ask for
|
36
|
+
"Ask for an existing LUKS password when adding a new user.") { options[:ask_password] = true }
|
40
37
|
opts.on("-t", "--trust-all",
|
41
38
|
"Use untrusted GPG Keys.") { options[:trust_all] = true }
|
42
39
|
opts.on("--force",
|
@@ -47,33 +44,35 @@ module Arver
|
|
47
44
|
"Verbose") { Arver::Log.level( Arver::LogLevels::Debug ) }
|
48
45
|
opts.on("--vv",
|
49
46
|
"Max Verbose") { Arver::Log.level( Arver::LogLevels::Trace ) }
|
50
|
-
opts.on(
|
51
|
-
"
|
52
|
-
opts.on( "-g", "--garbage-collect",
|
53
|
-
"Expunge old keys." ) { options[:action] = :gc; }
|
54
|
-
opts.on( "-k TARGET", "--keys TARGET", String,
|
55
|
-
"List local keys for this target.") { |arg| options[:argument][:target] = arg; options[:action] = :key_info; }
|
47
|
+
opts.on("--dry-run",
|
48
|
+
"Test your command.") { options[:dry_run] = true }
|
56
49
|
opts.on("--test-mode",
|
57
50
|
"Test mode (internal use)") { options[:test_mode] = true }
|
58
51
|
opts.separator "Targets:"
|
59
52
|
opts.on(
|
60
|
-
" Possible
|
61
|
-
" 'Group
|
62
|
-
" Multiple
|
63
|
-
" Ambigues
|
53
|
+
" Possible targets are: '<Group>', '<Host>', '<Disk>', '<Host>/<Device>',\n"+
|
54
|
+
" '<Group>/<Host>/<Disk>' or 'ALL'.\n"+
|
55
|
+
" Multiple parameters can be given as comma separated list.\n"+
|
56
|
+
" Ambigues targets yield an error." )
|
64
57
|
opts.separator "Actions:"
|
65
|
-
opts.on_tail( "--create TARGET", String,
|
66
|
-
"Create new arver partition on Target." ) { |arg| options[:argument][:target] = arg; options[:action] = :create; }
|
67
58
|
opts.on_tail( "-o TARGET", "--open TARGET", String,
|
68
59
|
"Open target." ) { |arg| options[:argument][:target] = arg; options[:action] = :open; }
|
69
60
|
opts.on_tail( "-c TARGET", "--close TARGET", String,
|
70
61
|
"Close target." ) { |arg| options[:argument][:target] = arg; options[:action] = :close; }
|
62
|
+
opts.on_tail( "--create TARGET", String,
|
63
|
+
"Create new arver partition on the target." ) { |arg| options[:argument][:target] = arg; options[:action] = :create; }
|
71
64
|
opts.on_tail( "-a USER TARGET", "--add-user USER TARGET", String,
|
72
65
|
"Add a user to target.") { |user| options[:action] = :adduser; options[:argument][:user] = user; }
|
73
66
|
opts.on_tail( "-d USER TARGET", "--del-user USER TARGET", String,
|
74
67
|
"Remove a user from target.") { |user| options[:action] = :deluser; options[:argument][:user] = user; }
|
68
|
+
opts.on_tail( "-g", "--garbage-collect",
|
69
|
+
"Expunge old keys." ) { options[:action] = :gc; }
|
70
|
+
opts.on_tail( "-k TARGET", "--keys TARGET", String,
|
71
|
+
"List local keys for this target.") { |arg| options[:argument][:target] = arg; options[:action] = :key_info; }
|
75
72
|
opts.on_tail( "-i TARGET", "--info TARGET", String,
|
76
73
|
"LUKS info about a target.") { |arg| options[:argument][:target] = arg; options[:action] = :info; }
|
74
|
+
opts.on_tail( "-l", "--list-targets",
|
75
|
+
"List targets." ) { options[:action] = :list; }
|
77
76
|
|
78
77
|
begin
|
79
78
|
opts.parse!(arguments)
|
data/lib/arver/version.rb
CHANGED
data/man/arver.5
CHANGED
@@ -10,8 +10,7 @@
|
|
10
10
|
.
|
11
11
|
.nf
|
12
12
|
|
13
|
-
arver [\-u user] [\-c arverdata] [OPTIONS]
|
14
|
-
arver [\-u user] [\-c arverdata] [OPTIONS] ACTION
|
13
|
+
arver [\-u user] [\-c arverdata] [OPTIONS] ACTION [USER] [TARGET]
|
15
14
|
.
|
16
15
|
.fi
|
17
16
|
.
|
@@ -26,12 +25,15 @@ There are some generic command line options:
|
|
26
25
|
.
|
27
26
|
.TP
|
28
27
|
\fB\-u USER\fR, \fB\-\-user USER\fR
|
29
|
-
By default \fBarver\fR will read \fB~/\.arver\fR to get your username\. Using \fB\-u USER\fR you can override
|
28
|
+
By default \fBarver\fR will read \fB~/\.arver\fR to get your username\. Using \fB\-u USER\fR you can override it\.
|
30
29
|
.
|
31
30
|
.TP
|
32
31
|
\fB\-c PATH\fR, \fB\-\-config\-dir PATH\fR
|
33
32
|
By default \fBarver\fR will assume your data storage in \fB~/\.arverdata\fR\. However, if you have multiple data storage or you want to put it to a different location you can use the \fB\-c PATH\fR option\.
|
34
33
|
.
|
34
|
+
.P
|
35
|
+
For more options see \fBarver \-h\fR
|
36
|
+
.
|
35
37
|
.SH "ACTIONS"
|
36
38
|
The following actions are supported:
|
37
39
|
.
|
@@ -91,7 +93,7 @@ But the TARGET option accepts also partial names and lists\. E\.g
|
|
91
93
|
.
|
92
94
|
.nf
|
93
95
|
|
94
|
-
|
96
|
+
location1,location2/host2,host4,disk3
|
95
97
|
.
|
96
98
|
.fi
|
97
99
|
.
|
@@ -423,6 +425,9 @@ If you use a version controll system to store your \fBarverdata\fR you should do
|
|
423
425
|
\fBcryptsetup\fR(8)\. \fBgnupg\fR(7)\.
|
424
426
|
.
|
425
427
|
.P
|
428
|
+
Arver description: \fIhttps://tech\.immerda\.ch/2011/08/arver\-distributed\-luks\-key\-management/\fR
|
429
|
+
.
|
430
|
+
.P
|
426
431
|
Arver project site: \fIhttps://git\.codecoop\.org/projects/arver/\fR
|
427
432
|
.
|
428
433
|
.P
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -15,7 +15,7 @@ date: 2012-04-30 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: gpgme
|
18
|
-
requirement: &
|
18
|
+
requirement: &12106580 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ! '>='
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: 2.0.0
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *12106580
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: escape
|
29
|
-
requirement: &
|
29
|
+
requirement: &12105920 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ! '>='
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: 0.0.2
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *12105920
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: activesupport
|
40
|
-
requirement: &
|
40
|
+
requirement: &12105360 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - <
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: 3.0.0
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *12105360
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: cucumber
|
51
|
-
requirement: &
|
51
|
+
requirement: &12104740 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ! '>='
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: 0.10.2
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *12104740
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: rspec
|
62
|
-
requirement: &
|
62
|
+
requirement: &12104120 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ! '>='
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: 2.5.0
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *12104120
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rake
|
73
|
-
requirement: &
|
73
|
+
requirement: &12103560 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ! '>='
|
@@ -78,7 +78,7 @@ dependencies:
|
|
78
78
|
version: 0.9.2
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *12103560
|
82
82
|
description: Arver helps you to manage a large amount of crypted devices easily and
|
83
83
|
safe amongst a certain amount of members
|
84
84
|
email: arver@lists.immerda.ch
|