~drscream

Modify root password on SmartOS global zone

A normal job is to modify the root password for any security reason. The /etc/shadow file contains the password but is mounted read only from /usbkey/shadow:

# ls -la /etc/shadow 
-r--------   1 root     root         560 Oct  9  2013 /etc/shadow

# mount | grep /etc/shadow
/etc/shadow on /usbkey/shadow read/write/setuid/devices/dev=169001b on Thu May 29 13:55:55 2014

Because of that you will be not able to modify the password by passwd. So you need to modify the /usbkey/shadow to setup a new password. You could easily use the cryptpass to create the hash that is required:

# /usr/lib/cryptpass <password>

You need to replace the old hash in /usbkey/shadow with the output of the cryptpass script. Be sure you clean the bash history! Remount the /etc/shadow to activate the root password without an reboot:

# umount /etc/shadow
# mount -F lofs /usbkey/shadow /etc/shadow

Again, make sure you cleanup the bash history if you don’t reboot the machine:

# history -c

Send your comment by mail.