OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 | 2 |
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 # Customizes a Chrome OS release image by setting the chronos user password. | 7 # Customizes a Chrome OS release image by setting the chronos user password. |
8 | 8 |
9 # Usage: ./set_chronos_password.sh <image.bin> <chronos_password> | 9 # Usage: ./set_chronos_password.sh <image.bin> <chronos_password> |
10 | 10 |
11 # Load common constants and variables. | 11 # Load common constants and variables. |
12 . "$(dirname "$0")/common.sh" | 12 . "$(dirname "$0")/common.sh" |
13 | 13 |
14 change_chronos_password() { | 14 change_chronos_password() { |
15 local rootfs=$1 | 15 local rootfs=$1 |
16 local password=$2 | 16 local password=$2 |
17 echo "Changing chronos password to '$password'..." | 17 echo "Changing chronos password to '$password'..." |
18 local crypted_password="$(echo $password | openssl passwd -1 -stdin)" | 18 local crypted_password="$(echo $password | openssl passwd -1 -stdin)" |
19 local temp_shadow="$rootfs/etc/tempshadow" | 19 local temp_shadow="$rootfs/etc/tempshadow" |
20 echo "chronos:$crypted_password:14500:0:99999::::" \ | 20 echo "chronos:$crypted_password:14500:0:99999::::" \ |
21 | sudo tee "$temp_shadow" > /dev/null | 21 | sudo tee "$temp_shadow" > /dev/null |
22 grep -Ev ^chronos: "$rootfs/etc/shadow" \ | 22 sudo grep -Ev ^chronos: "$rootfs/etc/shadow" \ |
23 | sudo tee -a "$temp_shadow" > /dev/null | 23 | sudo tee -a "$temp_shadow" > /dev/null |
24 sudo mv -f "$temp_shadow" "$rootfs/etc/shadow" | 24 sudo mv -f "$temp_shadow" "$rootfs/etc/shadow" |
25 } | 25 } |
26 | 26 |
27 main() { | 27 main() { |
28 set -e | 28 set -e |
29 | 29 |
30 local image=$1 | 30 local image=$1 |
31 local chronos_password=$2 | 31 local chronos_password=$2 |
32 if [ $# -ne 2 ]; then | 32 if [ $# -ne 2 ]; then |
33 echo "Usage: $PROG <image.bin> <chronos_password>" | 33 echo "Usage: $PROG <image.bin> <chronos_password>" |
34 exit 1 | 34 exit 1 |
35 fi | 35 fi |
36 | 36 |
37 local rootfs=$(mktemp -d) | 37 local rootfs=$(mktemp -d) |
38 mount_image_partition "$image" 3 "$rootfs" | 38 mount_image_partition "$image" 3 "$rootfs" |
39 trap "sudo umount -d $rootfs; rm -rf $rootfs" EXIT | 39 trap "sudo umount -d $rootfs; rm -rf $rootfs" EXIT |
40 change_chronos_password "$rootfs" "$chronos_password" | 40 change_chronos_password "$rootfs" "$chronos_password" |
41 touch "$image" # Updates the image modification time. | 41 touch "$image" # Updates the image modification time. |
42 echo "Done." | 42 echo "Done." |
43 } | 43 } |
44 | 44 |
45 main $@ | 45 main $@ |
OLD | NEW |