linebook 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/History CHANGED
@@ -1,3 +1,11 @@
1
+ == 0.8.0 2011/05/23
2
+
3
+ Updated to linecook-1.2.0. Added many utility commands for Posix/Linux, and
4
+ wrapped Unix into Posix module. Standardized the behavior of the commands.
5
+ Added definition of functions and variables.
6
+
7
+ Very likely breaks most of what was in use in 0.7.0.
8
+
1
9
  == 0.7.0 2011/04/26
2
10
 
3
11
  Updated to linecook-1.0.0
@@ -0,0 +1,75 @@
1
+ = Debian
2
+
3
+ <em>Note these instructions are for building a dev box only. In particular
4
+ they allow the linecook user to sudo without a password, which may not be in
5
+ you best production interests.</em>
6
+
7
+ Build an Debian base box using the following:
8
+
9
+ * http://www.debian.org/distrib/netinst
10
+ - name: debian
11
+ - Debian
12
+ - 384 MB memory
13
+ - 8 GB dynamically resizing drive
14
+
15
+ Add the iso to the cd/dvd device under Settings > Storage. Now start the
16
+ server and install (use default settings unless specified):
17
+
18
+ - root password: linecook
19
+ - user/password: linecook
20
+ - select 'SSH server' and 'Standard system utilities' as software to install
21
+
22
+ When the server has rebooted and is ready at the login screen, remove the
23
+ install iso, take a snapshot and setup port forwarding.
24
+
25
+ (Devices > CD/DVD Devices > Remove disk from virtual drive)
26
+ VBoxManage snapshot debian take RAW
27
+ VBoxManage controlvm debian poweroff
28
+ # wait to fully power off
29
+ VBoxManage modifyvm debian --natpf1 'debian-ssh,tcp,,2222,,22'
30
+ VBoxManage -q snapshot debian restore RAW
31
+ VBoxManage startvm debian
32
+
33
+ Transfer your ssh key to the vm. Help to generate ssh keys can be found on
34
+ {GitHub}[http://help.github.com/key-setup-redirect]:
35
+
36
+ scp -P 2222 -o UserKnownHostsFile=/dev/null ~/.ssh/id_rsa.pub linecook@localhost:id_rsa.pub
37
+
38
+ Login as root and setup su for the linecook user:
39
+
40
+ vm: vi /etc/pam.d/su
41
+
42
+ # uncomment:
43
+ #
44
+ # # Uncomment this if you want wheel members to be able to
45
+ # # su without a password.
46
+ # auth sufficient pam_wheel.so trust
47
+ #
48
+
49
+ vm: groupadd wheel
50
+ vm: usermod -a -G wheel linecook
51
+
52
+ Setup SSH for the linecook user:
53
+
54
+ vm: su -l linecook
55
+ vm: mkdir .ssh
56
+ vm: mv id_rsa.pub .ssh/authorized_keys
57
+ vm: chmod 0700 .ssh
58
+ vm: chmod 0600 .ssh/authorized_keys
59
+ vm: exit
60
+
61
+ Remove the login banner and exit:
62
+
63
+ vm: rm /etc/motd
64
+ vm: exit
65
+
66
+ Now take the standard snapshots:
67
+
68
+ VBoxManage snapshot debian take BASE
69
+ VBoxManage snapshot debian take CURRENT
70
+ VBoxManage controlvm debian poweroff
71
+
72
+ To cleanup the port forwarding (run later, if ever):
73
+
74
+ VBoxManage modifyvm debian --natpf1 delete 'debian-ssh'
75
+
@@ -0,0 +1,87 @@
1
+ = SLES
2
+
3
+ <em>Note these instructions are for building a dev box only. In particular
4
+ they allow the linecook user to sudo without a password and disable the
5
+ firewall, which may not be in you best production interests.</em>
6
+
7
+ Build a SLES11 base box using the following:
8
+
9
+ - name: sles
10
+ - Linux/Linux 2.6
11
+ - 256 MB memory
12
+ - 8 GB dynamically resizing drive
13
+
14
+ Add the netinst.iso to the cd/dvd device under Settings > Storage. Now start
15
+ the server and install (use default settings unless specified):
16
+
17
+ - Server Base Scenario: Virtual Machine (middle option)
18
+ - Installation (1.2 GB):
19
+ Base System
20
+ Novell AppArmor
21
+ Minimal System
22
+ c/c++ Compiler and Tools
23
+ - root password: linecook
24
+ - network settings:
25
+ hostname: sles
26
+ domain: pinnacol.com
27
+ [ ] change hostname via DHCP
28
+ [x] write hostname to /etc/hosts
29
+ (Change > Network Interfaces > Hostname/DNS)
30
+ Name Server 1: 10.2.24.11
31
+ Name Server 2: 65.125.146.66
32
+ (Change > Firewall > Disable Firewall Automatic Starting)
33
+ - configure novell customer stuff later
34
+ - user/password: linecook
35
+
36
+ When the server has rebooted and is ready at the login screen, remove the
37
+ install iso, take a snapshot and setup port forwarding.
38
+
39
+ (Devices > CD/DVD Devices > Remove disk from virtual drive)
40
+ VBoxManage snapshot sles take RAW
41
+ VBoxManage controlvm sles poweroff
42
+ # wait to fully power off
43
+ VBoxManage modifyvm sles --natpf1 'sles-ssh,tcp,,2223,,22'
44
+ VBoxManage -q snapshot sles restore RAW
45
+ VBoxManage startvm sles
46
+
47
+ Transfer your ssh key to the vm. Help to generate ssh keys can be found on
48
+ GitHub (http://help.github.com/key-setup-redirect):
49
+
50
+ scp -P 2223 -o UserKnownHostsFile=/dev/null ~/.ssh/id_rsa.pub linecook@localhost:id_rsa.pub
51
+
52
+ Login as root and setup su for the linecook user:
53
+
54
+ vm: vi /etc/pam.d/su
55
+
56
+ # insert:
57
+ # auth sufficient pam_wheel.so trust
58
+
59
+ vm: vi /etc/pam.d/su-l
60
+
61
+ # insert:
62
+ # auth sufficient pam_wheel.so trust
63
+
64
+ vm: p=$(id -gn linecook)
65
+ vm: g=$(id -Gn linecook | sed "s/$p //" | sed "s/ /,/g")
66
+ vm: groupadd linecook
67
+ vm: usermod -g linecook -G "wheel,$g" linecook
68
+
69
+ Setup SSH for the linecook user:
70
+
71
+ vm: su -l linecook
72
+ vm: mkdir .ssh
73
+ vm: mv id_rsa.pub .ssh/authorized_keys
74
+ vm: chmod 0700 .ssh
75
+ vm: chmod 0600 .ssh/authorized_keys
76
+ vm: exit
77
+ vm: exit
78
+
79
+ Now take the standard snapshots:
80
+
81
+ VBoxManage snapshot sles take BASE
82
+ VBoxManage snapshot sles take CURRENT
83
+ VBoxManage controlvm sles poweroff
84
+
85
+ To cleanup the port forwarding (run later, if ever):
86
+
87
+ VBoxManage modifyvm sles --natpf1 delete 'sles-ssh'
@@ -0,0 +1,71 @@
1
+ == Ubuntu
2
+
3
+ <em>Note these instructions are for building a dev box only. In particular
4
+ they allow the linecook user to sudo without a password, which may not be in
5
+ you best production interests.</em>
6
+
7
+ Build a Ubuntu base box using the following:
8
+
9
+ - name: ubuntu
10
+ - Linux/Ubuntu
11
+ - 512 MB memory
12
+ - 8 GB dynamically resizing drive
13
+
14
+ Add the iso to the cd/dvd device under Settings > Storage. Now start the
15
+ server and install ubuntu (use default settings unless specified):
16
+
17
+ - user/password: linecook
18
+ - select 'OpenSSH server' in packages to install
19
+
20
+ When the server has rebooted and is ready at the login screen, remove the
21
+ install iso, take a snapshot and setup port forwarding.
22
+
23
+ (Devices > CD/DVD Devices > Remove disk from virtual drive)
24
+ VBoxManage snapshot ubuntu take RAW
25
+ VBoxManage controlvm ubuntu poweroff
26
+ # wait to fully power off
27
+ VBoxManage modifyvm ubuntu --natpf1 'ubuntu-ssh,tcp,,2220,,22'
28
+ VBoxManage -q snapshot ubuntu restore RAW
29
+ VBoxManage startvm ubuntu
30
+
31
+ Transfer your ssh key to the vm. Help to generate ssh keys can be found on
32
+ {GitHub}[http://help.github.com/key-setup-redirect]:
33
+
34
+ scp -P 2220 -o UserKnownHostsFile=/dev/null ~/.ssh/id_rsa.pub linecook@localhost:id_rsa.pub
35
+
36
+ Login as linecook and setup su permissions for the linecook user:
37
+
38
+ vm: sudo vi /etc/pam.d/su
39
+
40
+ # uncomment:
41
+ #
42
+ # # Uncomment this if you want wheel members to be able to
43
+ # # su without a password.
44
+ # auth sufficient pam_wheel.so trust
45
+ #
46
+
47
+ vm: sudo groupadd wheel
48
+ vm: sudo usermod -a -G wheel linecook
49
+
50
+ Setup SSH:
51
+
52
+ vm: mkdir .ssh
53
+ vm: mv id_rsa.pub .ssh/authorized_keys
54
+ vm: chmod 0700 .ssh
55
+ vm: chmod 0600 .ssh/authorized_keys
56
+
57
+ Remove the login banner and exit:
58
+
59
+ vm: sudo rm /etc/motd
60
+ vm: exit
61
+
62
+ Now take some standard snapshots:
63
+
64
+ VBoxManage snapshot ubuntu take BASE
65
+ VBoxManage snapshot ubuntu take CURRENT
66
+ VBoxManage controlvm ubuntu poweroff
67
+
68
+ To cleanup the port forwarding (run later, if ever):
69
+
70
+ VBoxManage modifyvm ubuntu --natpf1 delete 'ubuntu-ssh'
71
+
@@ -0,0 +1,75 @@
1
+ = openSUSE
2
+
3
+ <em>Note these instructions are for building a dev box only. In particular
4
+ they allow the linecook user to sudo without a password and turn off the
5
+ firewall, which may not be in you best production interests.</em>
6
+
7
+ Build an openSUSE base box using the following:
8
+
9
+ * http://software.opensuse.org/113/en
10
+ - name: opensuse
11
+ - openSUSE
12
+ - 512 MB memory
13
+ - 8 GB dynamically resizing drive
14
+
15
+ Add the iso to the cd/dvd device under Settings > Storage. Now start the
16
+ server and install (use default settings unless specified):
17
+
18
+ - Desktop Selection: Other > Minimal Server Selection
19
+ - user/password: linecook
20
+ - deselect automatic login
21
+
22
+ When the server has rebooted and is ready at the login screen, remove the
23
+ install iso, take a snapshot and setup port forwarding.
24
+
25
+ (Devices > CD/DVD Devices > Remove disk from virtual drive)
26
+ VBoxManage snapshot opensuse take RAW
27
+ VBoxManage controlvm opensuse poweroff
28
+ # wait to fully power off
29
+ VBoxManage modifyvm opensuse --natpf1 'opensuse-ssh,tcp,,2221,,22'
30
+ VBoxManage -q snapshot opensuse restore RAW
31
+ VBoxManage startvm opensuse
32
+
33
+ Login as root, start sshd, stop the firewall, and setup su for the linecook user:
34
+
35
+ vm: /etc/init.d/sshd start
36
+ vm: rcSuSEfirewall2 stop
37
+ vm: vi /etc/pam.d/su
38
+
39
+ # insert:
40
+ # auth sufficient pam_wheel.so trust
41
+
42
+ vm: vi /etc/pam.d/su-l
43
+
44
+ # insert:
45
+ # auth sufficient pam_wheel.so trust
46
+
47
+ vm: groupadd linecook
48
+ vm: usermod -g linecook -A wheel linecook
49
+
50
+ Transfer your ssh key to the vm. Help to generate ssh keys can be found on
51
+ {GitHub}[http://help.github.com/key-setup-redirect]:
52
+
53
+ scp -P 2221 -o UserKnownHostsFile=/dev/null ~/.ssh/id_rsa.pub linecook@localhost:id_rsa.pub
54
+
55
+ Setup SSH for linecook and exit:
56
+
57
+ vm: su -l linecook
58
+ vm: mkdir .ssh
59
+ vm: mv id_rsa.pub .ssh/authorized_keys
60
+ vm: chmod 0700 .ssh
61
+ vm: chmod 0600 .ssh/authorized_keys
62
+ vm: exit
63
+ vm: exit
64
+
65
+ Now take the standard snapshots:
66
+
67
+ VBoxManage snapshot opensuse take BASE
68
+ VBoxManage snapshot opensuse take CURRENT
69
+ VBoxManage controlvm opensuse poweroff
70
+
71
+ To cleanup the port forwarding (run later, if ever):
72
+
73
+ VBoxManage modifyvm opensuse --natpf1 delete 'opensuse-ssh'
74
+
75
+ https://bugzilla.novell.com/show_bug.cgi?id=556077#c7
@@ -0,0 +1,73 @@
1
+ = Switch Users
2
+
3
+ The login and su methods in the Linebook::Os::Linux module both provide a way
4
+ to switch users. Login simulates a login and therefore you end up in the user
5
+ home directory with the ENV as setup during login. By contrast su switches
6
+ users such that it preserves exported ENV variables, including the pwd.
7
+
8
+ Say you were the linecook user:
9
+
10
+ cd
11
+ export 'A', 'a'
12
+ variable 'B', 'b'
13
+ echo "$(whoami):$(pwd):$A:$B" # => linecook:/home/linecook:a:b
14
+ login { echo "$(whoami):$(pwd):$A:$B" } # => root:/root::
15
+ su { echo "$(whoami):$(pwd):$A:$B" } # => root:/home/linecook:a:
16
+
17
+ User-management methods in this module assume root privileges (useradd,
18
+ groupadd, etc) so unless you are already root, you need to wrap them in login
19
+ or su. In this case login is more reliable than su because some systems leave
20
+ the user management commands off the non-root PATH; using login ensures PATH
21
+ will be set for root during the block.
22
+
23
+ For example use:
24
+
25
+ login { useradd 'username' }
26
+
27
+ Rather than:
28
+
29
+ su { useradd 'username' } # may give 'useradd: command not found'
30
+
31
+ == Permissions
32
+
33
+ The user running the package needs the ability to su without a password,
34
+ otherwise login/su will choke and fail when run by 'linecook run'. How this is
35
+ accomplished is a matter of policy; something each user needs to decide for
36
+ themselves.
37
+
38
+ First you could run the package as root.
39
+
40
+ Second you can grant the running user (ex 'linecook') su privileges. This can
41
+ be accomplished by adding the user to the 'wheel' group and modifiying the PAM
42
+ config files. Afterwards all wheel users can su without a password. To do so
43
+ (repeat for '/etc/pam.d/su-l' if it exists):
44
+
45
+ vi /etc/pam.d/su
46
+ # insert:
47
+ # auth sufficient pam_wheel.so trust
48
+
49
+ This is the default strategy and it works in a portable way because the {linux
50
+ spec}[http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/su.html]
51
+ requires su exists and has the necessary options.
52
+
53
+ Third you can chuck the default login/su, re-implement them with sudo, and
54
+ give the user (ex 'linecook') sudo privileges. This can be accomplished by
55
+ adding the user to a group (ex 'linecook') and modifying the sudo config via
56
+ visudo. Afterwards all the linecook users can sudo without a password.
57
+
58
+ visudo
59
+ # insert:
60
+ # # Members of the linecook group may sudo without a password
61
+ # %linecook ALL=NOPASSWD: ALL
62
+
63
+ See an old version of the {linebook
64
+ source}[https://github.com/pinnacol/linebook/tree/b786e1e63c68f5ddf3be15851d
65
+ 9b423bc05e5345/helpers/linebook/os/linux] for hints on how login/su could be
66
+ reimplemented with sudo. This strategy was abandoned because sudo is not
67
+ required by the linux spec and is does not come installed in many cases (ex
68
+ Debian). Moreover the options needed to make this strategy work don't exist in
69
+ sudo < 1.7, so even systems that come with sudo could need an upgrade.
70
+
71
+ Lastly you can chuck all of these strategies and figure out your own way.
72
+ Surely they exist, for example by running scripts manually and entering in
73
+ passwords as prompted.
@@ -2,82 +2,30 @@
2
2
 
3
3
  module Linebook
4
4
  module Os
5
- # == login vs su
6
- #
7
- # The login and su methods both provide a way to switch users. Login
8
- # simulates a login and therefore you end up in the user home directory with
9
- # the ENV as setup during login. By contrast su switches users such that it
10
- # preserves exported ENV variables, including the pwd.
11
- #
12
- # Say you were the linecook user:
13
- #
14
- # cd
15
- # export 'A', 'a'
16
- # variable 'B', 'b'
17
- # echo "$(whoami):$(pwd):$A:$B" # => linecook:/home/linecook:a:b
18
- # login { echo "$(whoami):$(pwd):$A:$B" } # => root:/root::
19
- # su { echo "$(whoami):$(pwd):$A:$B" } # => root:/home/linecook:a:
20
- #
21
- # User-management methods in this module assume root privileges (useradd,
22
- # groupadd, etc) so unless you are already root, you need to wrap them in
23
- # login or su. In this case login is more reliable than su because some
24
- # systems leave the user management commands off the non-root PATH; using
25
- # login ensures PATH will be set for root during the block.
26
- #
27
- # For example use:
28
- #
29
- # login { useradd 'username' }
30
- #
31
- # Rather than:
32
- #
33
- # su { useradd 'username' } # => may give 'useradd: command not found'
34
- #
35
- # == Permissions
36
- #
37
- # The user running the package needs the ability to su without a password,
38
- # otherwise login/su will choke and fail when run by 'linecook run'. How this
39
- # is accomplished is a matter of policy; something each user needs to decide
40
- # for themselves.
41
- #
42
- # First you could run the package as root.
43
- #
44
- # Second you can grant the running user (ex 'linecook') su privileges. This
45
- # can be accomplished by adding the user to the 'wheel' group and modifiying
46
- # the PAM config files. Afterwards all wheel users can su without a password.
47
- # To do so (repeat for '/etc/pam.d/su-l' if it exists):
48
- #
49
- # vi /etc/pam.d/su
50
- # # insert:
51
- # # auth sufficient pam_wheel.so trust
52
- #
53
- # This is the default strategy and it works in a portable way because the
54
- # {linux spec}[http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/cmdbehav.html]
55
- # requires su exists and has the necessary options.
56
- #
57
- # Third you can chuck the default login/su, reimplement them with sudo, and
58
- # give the user (ex 'linecook') sudo privileges. This can be accomplished by
59
- # adding the user to a group (ex 'linecook') and modifying the sudo config via
60
- # visudo. Afterwards all the linecook users can sudo without a password.
61
- #
62
- # visudo
63
- # # insert:
64
- # # # Members of the linecook group may sudo without a password
65
- # # %linecook ALL=NOPASSWD: ALL
66
- #
67
- # See an old version of the {linebook source}[https://github.com/pinnacol/linebook/tree/b786e1e63c68f5ddf3be15851d9b423bc05e5345/helpers/linebook/os/linux]
68
- # for hints on how login/su could be reimplemented with sudo. This strategy
69
- # was abandonded as the default because sudo is not required by the linux spec
70
- # and is does not come installed in many cases (ex Debian). Moreover the
71
- # options needed to make this strategy work don't exist in sudo < 1.7, so even
72
- # systems that come with sudo could need an upgrade.
73
- #
74
- # Lastly you can chuck all of these strategies and figure out your own way.
75
- # Surely they exist, for example by running the packages manually and entering
76
- # in passwords as prompted.
77
- #
5
+ # Defines Linux-compliant functionality, based on the {Linux Standard Base
6
+ # Core Specification 4.1 }[http://refspecs.linuxfoundation.org/lsb.shtml]. See
7
+ # the online documentation for:
8
+ #
9
+ # * {Commands and Utilities
10
+ # }[http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/cmdbehav.html]
11
+ # * {Single Unix Specification V2
12
+ # }[http://pubs.opengroup.org/onlinepubs/007908799/xcuix.html]
13
+ # Posix does not specify commands for user management, but Linux does. Now
14
+ # that users are overtly in the mix, see {How to Switch
15
+ # Users}[link:files/HowTo/Switch%20Users.html] for picking a su policy.
78
16
  module Linux
79
- require 'linebook/os/unix'
80
- include Unix
17
+ require 'linebook/os/posix'
18
+ include Posix
19
+
20
+ require 'linebook/os/linux/utilities'
21
+ include Utilities
22
+
23
+ def guess_target_name(source_name)
24
+ target_dir = File.dirname(target_name)
25
+ name = File.basename(source_name)
26
+
27
+ _package_.next_target_name(target_dir == '.' ? name : File.join(target_dir, name))
28
+ end
81
29
 
82
30
  def capture_script(options={})
83
31
  unless options.kind_of?(Hash)
@@ -97,76 +45,12 @@ module Linebook
97
45
  path
98
46
  end
99
47
 
100
- # Returns true if the group exists as determined by checking /etc/group.
101
- def group?(name)
102
- # grep "^<%= name %>:" /etc/group >/dev/null 2>&1
103
- write "grep \"^"; write(( name ).to_s); write ":\" /etc/group >/dev/null 2>&1"
104
- chain_proxy
105
- end
106
-
107
- def _group?(*args, &block) # :nodoc:
108
- str = capture_str { group?(*args, &block) }
109
- str.strip!
110
- str
111
- end
112
-
113
- # Adds the group.
114
- def groupadd(name, options={})
115
- execute 'groupadd', name, options
116
- chain_proxy
117
- end
118
-
119
- def _groupadd(*args, &block) # :nodoc:
120
- str = capture_str { groupadd(*args, &block) }
121
- str.strip!
122
- str
123
- end
124
-
125
- # Removes the group.
126
- def groupdel(name, options={})
127
- execute 'groupdel', name, options
128
- chain_proxy
129
- end
130
-
131
- def _groupdel(*args, &block) # :nodoc:
132
- str = capture_str { groupdel(*args, &block) }
133
- str.strip!
134
- str
135
- end
136
-
137
- def groups(user, options={})
138
- # id -Gn <%= quote(user) %>
139
- #
140
- #
141
- write "id -Gn "; write(( quote(user) ).to_s); write "\n"
142
- write "\n"
143
-
144
- chain_proxy
145
- end
146
-
147
- def _groups(*args, &block) # :nodoc:
148
- str = capture_str { groups(*args, &block) }
149
- str.strip!
150
- str
151
- end
152
-
153
- def install(source, target, options={})
154
- execute 'install', source, target, options
155
- chain_proxy
156
- end
157
-
158
- def _install(*args, &block) # :nodoc:
159
- str = capture_str { install(*args, &block) }
160
- str.strip!
161
- str
162
- end
163
-
164
48
  # Logs in as the specified user for the duration of a block (the current ENV
165
49
  # and pwd are reset as during a normal login).
166
50
  def login(user='root', options={})
167
51
  current = functions
168
52
  begin
169
- @functions = []
53
+ @functions = nil
170
54
 
171
55
  path = capture_script(options) { yield }
172
56
  execute 'su', user, path, :l => true
@@ -181,65 +65,6 @@ module Linebook
181
65
  str.strip!
182
66
  str
183
67
  end
184
-
185
- # Switches to the specified user for the duration of a block. The current ENV
186
- # and pwd are preserved.
187
- def su(user='root', options={})
188
- path = capture_script(options) do
189
- functions.each do |function|
190
- writeln function
191
- end
192
- yield
193
- end
194
- execute 'su', user, path, :m => true
195
- chain_proxy
196
- end
197
-
198
- def _su(*args, &block) # :nodoc:
199
- str = capture_str { su(*args, &block) }
200
- str.strip!
201
- str
202
- end
203
-
204
- # Returns true if the user exists as determined by id.
205
- def user?(name)
206
- # id <%= quote(name) %> >/dev/null 2>&1
207
- write "id "; write(( quote(name) ).to_s); write " >/dev/null 2>&1"
208
- chain_proxy
209
- end
210
-
211
- def _user?(*args, &block) # :nodoc:
212
- str = capture_str { user?(*args, &block) }
213
- str.strip!
214
- str
215
- end
216
-
217
- # Adds the user.
218
- def useradd(name, options={})
219
- execute 'useradd', name, options
220
- chain_proxy
221
- end
222
-
223
- def _useradd(*args, &block) # :nodoc:
224
- str = capture_str { useradd(*args, &block) }
225
- str.strip!
226
- str
227
- end
228
-
229
- # Removes the user.
230
- def userdel(name, options={})
231
- # TODO - look into other things that might need to happen before:
232
- # * kill processes belonging to user
233
- # * remove at/cron/print jobs etc.
234
- execute 'userdel', name, options
235
- chain_proxy
236
- end
237
-
238
- def _userdel(*args, &block) # :nodoc:
239
- str = capture_str { userdel(*args, &block) }
240
- str.strip!
241
- str
242
- end
243
68
  end
244
69
  end
245
70
  end