Class: Specinfra::Command::Base::User

Inherits:
Specinfra::Command::Base show all
Defined in:
lib/specinfra/command/base/user.rb

Class Method Summary collapse

Methods inherited from Specinfra::Command::Base

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)} | awk '{print $3}' | 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 (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 (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 (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