# File lib/puppet/provider/user/user_role_add.rb, line 169
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:       # Make sure this *always* gets deleted
188:       File.unlink("/etc/shadow_tmp") if File.exist?("/etc/shadow_tmp")
189:     end
190:   end