169: def password=(cryptopw)
170: begin
171: File.open("/etc/shadow", "r") do |shadow|
172: File.open("/etc/shadow_tmp", "w", 0600) do |shadow_tmp|
173: while line = shadow.gets
174: line_arr = line.split(':')
175: if line_arr[0] == @resource[:name]
176: line_arr[1] = cryptopw
177: line = line_arr.join(':')
178: end
179: shadow_tmp.print line
180: end
181: end
182: end
183: File.rename("/etc/shadow_tmp", "/etc/shadow")
184: rescue => detail
185: fail "Could not write temporary shadow file: #{detail}"
186: ensure
187:
188: File.unlink("/etc/shadow_tmp") if File.exist?("/etc/shadow_tmp")
189: end
190: end