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