arvados-login-sync 0.1.20161018143726 → 0.1.20161021200845
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.
- checksums.yaml +4 -4
- data/bin/arvados-login-sync +40 -16
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2553513ca970d72e9a639e61b8b26eb8e8692aa
|
4
|
+
data.tar.gz: c491d7eea6888e807f6080c8ea7c8b3dfc75883e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55002005a5b93990e4d81226399129303f6314de45900cb9a70421bffa110e3ec4c9a0bc84f0e9b6b2c7ac091bca1dbdc8745dceb6e02672550a0a1a5f0e4489
|
7
|
+
data.tar.gz: b7a582e2275cec292a4b851d438f391a6712fb0b550de0164cf510982256655571e38347c34899e0ab71135c05621b3df690689e536ee33a7e1ce785642db7bc
|
data/bin/arvados-login-sync
CHANGED
@@ -21,13 +21,12 @@ exclusive_banner = "############################################################
|
|
21
21
|
start_banner = "### BEGIN Arvados-managed keys -- changes between markers will be overwritten\n"
|
22
22
|
end_banner = "### END Arvados-managed keys -- changes between markers will be overwritten\n"
|
23
23
|
|
24
|
-
|
24
|
+
# Don't try to create any local accounts
|
25
|
+
skip_missing_users = ARGV.index("--skip-missing-users")
|
25
26
|
|
26
|
-
|
27
|
+
keys = ''
|
27
28
|
|
28
29
|
begin
|
29
|
-
uids = Hash[Etc.to_enum(:passwd).map { |ent| [ent.name, ent.uid] }]
|
30
|
-
gids = Hash[Etc.to_enum(:group).map { |ent| [ent.name, ent.gid] }]
|
31
30
|
arv = Arvados.new({ :suppress_ssl_warnings => false })
|
32
31
|
|
33
32
|
vm_uuid = ENV['ARVADOS_VIRTUAL_MACHINE_UUID']
|
@@ -52,8 +51,24 @@ begin
|
|
52
51
|
uid_min = new_uid_min if (new_uid_min > 0)
|
53
52
|
end
|
54
53
|
end
|
55
|
-
logins.reject! { |l| (uids[l[:username]] || 65535) < uid_min }
|
56
54
|
|
55
|
+
pwnam = Hash.new()
|
56
|
+
logins.reject! do |l|
|
57
|
+
return false if pwnam[l[:username]]
|
58
|
+
begin
|
59
|
+
pwnam[l[:username]] = Etc.getpwnam(l[:username])
|
60
|
+
rescue
|
61
|
+
if skip_missing_users
|
62
|
+
STDERR.puts "Account #{l[:username]} not found. Skipping"
|
63
|
+
true
|
64
|
+
end
|
65
|
+
else
|
66
|
+
if pwnam[l[:username]].uid < uid_min
|
67
|
+
STDERR.puts "Account #{l[:username]} uid #{pwnam[l[:username]].uid} < uid_min #{uid_min}. Skipping"
|
68
|
+
true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
57
72
|
keys = Hash.new()
|
58
73
|
|
59
74
|
# Collect all keys
|
@@ -74,24 +89,33 @@ begin
|
|
74
89
|
|
75
90
|
logins.each do |l|
|
76
91
|
next if seen[l[:username]]
|
77
|
-
seen[l[:username]] = true
|
92
|
+
seen[l[:username]] = true
|
78
93
|
|
79
|
-
unless
|
94
|
+
unless pwnam[l[:username]]
|
80
95
|
STDERR.puts "Creating account #{l[:username]}"
|
81
96
|
groups = l[:groups] || []
|
82
97
|
# Adding users to the FUSE group has long been hardcoded behavior.
|
83
98
|
groups << "fuse"
|
84
|
-
groups.select! { |
|
99
|
+
groups.select! { |g| Etc.getgrnam(g) rescue false }
|
85
100
|
# Create new user
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
101
|
+
unless system("useradd", "-m",
|
102
|
+
"-c", l[:username],
|
103
|
+
"-s", "/bin/bash",
|
104
|
+
"-G", groups.join(","),
|
105
|
+
l[:username],
|
106
|
+
out: devnull)
|
107
|
+
STDERR.puts "Account creation failed for #{l[:username]}: $?"
|
108
|
+
next
|
109
|
+
end
|
110
|
+
begin
|
111
|
+
pwnam[l[:username]] = Etc.getpwnam(l[:username])
|
112
|
+
rescue => e
|
113
|
+
STDERR.puts "Created account but then getpwnam() failed for #{l[:username]}: #{e}"
|
114
|
+
raise
|
115
|
+
end
|
92
116
|
end
|
93
|
-
|
94
|
-
@homedir =
|
117
|
+
|
118
|
+
@homedir = pwnam[l[:username]].dir
|
95
119
|
userdotssh = File.join(@homedir, ".ssh")
|
96
120
|
Dir.mkdir(userdotssh) if !File.exists?(userdotssh)
|
97
121
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arvados-login-sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20161021200845
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arvados Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: arvados
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 0.1.20150615153458
|
33
33
|
description: Creates and updates local login accounts for Arvados users. Built from
|
34
|
-
git commit
|
34
|
+
git commit cd0052e87bfa9d7e3d501427c7ff47e08c68d8d5
|
35
35
|
email: gem-dev@curoverse.com
|
36
36
|
executables:
|
37
37
|
- arvados-login-sync
|