Class: Specinfra::Command::Base::User
Class Method Summary
collapse
-
.add(user, options) ⇒ Object
-
.check_belongs_to_group(user, group) ⇒ Object
-
.check_belongs_to_primary_group(user, group) ⇒ Object
-
.check_exists(user) ⇒ Object
-
.check_has_authorized_key(user, key) ⇒ Object
-
.check_has_home_directory(user, path_to_home) ⇒ Object
-
.check_has_login_shell(user, path_to_shell) ⇒ Object
-
.check_has_uid(user, uid) ⇒ Object
-
.get_encrypted_password(user) ⇒ Object
-
.get_gid(user) ⇒ Object
-
.get_home_directory(user) ⇒ Object
-
.get_login_shell(user) ⇒ Object
-
.get_maximum_days_between_password_change(user) ⇒ Object
-
.get_minimum_days_between_password_change(user) ⇒ Object
-
.get_uid(user) ⇒ Object
-
.update_encrypted_password(user, encrypted_password) ⇒ Object
-
.update_gid(user, gid) ⇒ Object
-
.update_home_directory(user, directory) ⇒ Object
-
.update_login_shell(user, shell) ⇒ Object
-
.update_uid(user, uid) ⇒ Object
create, escape
Class Method Details
.add(user, options) ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/specinfra/command/base/user.rb', line 73
def add(user, options)
command = ['useradd']
command << '-g' << escape(options[:gid]) if options[:gid]
command << '-d' << escape(options[:home_directory]) if options[:home_directory]
command << '-p' << escape(options[:password]) if options[:password]
command << '-s' << escape(options[:shell]) if options[:shell]
command << '-m' if options[:create_home]
command << '-r' if options[:system_user]
command << '-u' << escape(options[:uid]) if options[:uid]
command << escape(user)
command.join(' ')
end
|
.check_belongs_to_group(user, group) ⇒ Object
7
8
9
|
# File 'lib/specinfra/command/base/user.rb', line 7
def check_belongs_to_group(user, group)
"id #{escape(user)} | sed 's/ context=.*//g' |awk -F= '{print $4}' | grep -- #{escape(group)}"
end
|
.check_belongs_to_primary_group(user, group) ⇒ Object
11
12
13
|
# File 'lib/specinfra/command/base/user.rb', line 11
def check_belongs_to_primary_group(user, group)
"id -gn #{escape(user)}| grep ^#{escape(group)}$"
end
|
.check_exists(user) ⇒ Object
3
4
5
|
# File 'lib/specinfra/command/base/user.rb', line 3
def check_exists(user)
"id #{escape(user)}"
end
|
.check_has_authorized_key(user, key) ⇒ Object
28
29
30
31
|
# File 'lib/specinfra/command/base/user.rb', line 28
def check_has_authorized_key(user, key)
key.sub!(/\s+\S*$/, '') if key.match(/^\S+\s+\S+\s+\S*$/)
"grep -w -- #{escape(key)} ~#{escape(user)}/.ssh/authorized_keys"
end
|
.check_has_home_directory(user, path_to_home) ⇒ Object
20
21
22
|
# File 'lib/specinfra/command/base/user.rb', line 20
def check_has_home_directory(user, path_to_home)
"getent passwd #{escape(user)} | cut -f 6 -d ':' | grep -w -- #{escape(path_to_home)}"
end
|
.check_has_login_shell(user, path_to_shell) ⇒ Object
24
25
26
|
# File 'lib/specinfra/command/base/user.rb', line 24
def check_has_login_shell(user, path_to_shell)
"getent passwd #{escape(user)} | cut -f 7 -d ':' | grep -w -- #{escape(path_to_shell)}"
end
|
.check_has_uid(user, uid) ⇒ Object
15
16
17
18
|
# File 'lib/specinfra/command/base/user.rb', line 15
def check_has_uid(user, uid)
regexp = "^uid=#{uid}("
"id #{escape(user)} | grep -- #{escape(regexp)}"
end
|
.get_encrypted_password(user) ⇒ Object
90
91
92
|
# File 'lib/specinfra/command/base/user.rb', line 90
def get_encrypted_password(user)
"getent shadow #{escape(user)} | awk -F: '{ print $2 }'"
end
|
.get_gid(user) ⇒ Object
45
46
47
|
# File 'lib/specinfra/command/base/user.rb', line 45
def get_gid(user)
"id -g #{escape(user)}"
end
|
.get_home_directory(user) ⇒ Object
49
50
51
|
# File 'lib/specinfra/command/base/user.rb', line 49
def get_home_directory(user)
"getent passwd #{escape(user)} | awk -F: '{ print $6 }'"
end
|
.get_login_shell(user) ⇒ Object
53
54
55
|
# File 'lib/specinfra/command/base/user.rb', line 53
def get_login_shell(user)
"getent passwd #{escape(user)} | cut -f 7 -d ':'"
end
|
.get_maximum_days_between_password_change(user) ⇒ Object
37
38
39
|
# File 'lib/specinfra/command/base/user.rb', line 37
def get_maximum_days_between_password_change(user)
"chage -l #{escape(user)} | grep '^Maximum.*:' | awk -F ': ' '{print $2}'"
end
|
.get_minimum_days_between_password_change(user) ⇒ Object
33
34
35
|
# File 'lib/specinfra/command/base/user.rb', line 33
def get_minimum_days_between_password_change(user)
"chage -l #{escape(user)} | grep '^Minimum.*:' | awk -F ': ' '{print $2}'"
end
|
.get_uid(user) ⇒ Object
41
42
43
|
# File 'lib/specinfra/command/base/user.rb', line 41
def get_uid(user)
"id -u #{escape(user)}"
end
|
.update_encrypted_password(user, encrypted_password) ⇒ Object
86
87
88
|
# File 'lib/specinfra/command/base/user.rb', line 86
def update_encrypted_password(user, encrypted_password)
%Q!echo #{escape("#{user}:#{encrypted_password}")} | chpasswd -e!
end
|
.update_gid(user, gid) ⇒ Object
69
70
71
|
# File 'lib/specinfra/command/base/user.rb', line 69
def update_gid(user, gid)
"usermod -g #{escape(gid)} #{escape(user)}"
end
|
.update_home_directory(user, directory) ⇒ Object
57
58
59
|
# File 'lib/specinfra/command/base/user.rb', line 57
def update_home_directory(user, directory)
"usermod -d #{escape(directory)} #{escape(user)}"
end
|
.update_login_shell(user, shell) ⇒ Object
61
62
63
|
# File 'lib/specinfra/command/base/user.rb', line 61
def update_login_shell(user, shell)
"usermod -s #{escape(shell)} #{escape(user)}"
end
|
.update_uid(user, uid) ⇒ Object
65
66
67
|
# File 'lib/specinfra/command/base/user.rb', line 65
def update_uid(user, uid)
"usermod -u #{escape(uid)} #{escape(user)}"
end
|