Statistics
| Branch: | Tag: | Revision:

root / snf-image-helper / tasks / 50ChangePassword.in @ bad5ca1f

History | View | Annotate | Download (2 kB)

1 0a35a4ab Nikos Skalkotos
#! /bin/bash
2 54080484 Nikos Skalkotos
3 54080484 Nikos Skalkotos
### BEGIN TASK INFO
4 54080484 Nikos Skalkotos
# Provides:		ChangePassword
5 c349d1b3 Nikos Skalkotos
# RunBefore:            UmountImage
6 c349d1b3 Nikos Skalkotos
# RunAfter:		InstallUnattend
7 54080484 Nikos Skalkotos
# Short-Description:	Changes Password for specified users
8 54080484 Nikos Skalkotos
### END TAST INFO
9 54080484 Nikos Skalkotos
10 54080484 Nikos Skalkotos
set -e
11 bad5ca1f Nikos Skalkotos
. "@commondir@/common.sh"
12 54080484 Nikos Skalkotos
13 54080484 Nikos Skalkotos
windows_password() {
14 bad5ca1f Nikos Skalkotos
    local target="$1"
15 bad5ca1f Nikos Skalkotos
    local password="$2"
16 54080484 Nikos Skalkotos
17 bad5ca1f Nikos Skalkotos
    local tmp_unattend="$(mktemp)"
18 bad5ca1f Nikos Skalkotos
    add_cleanup rm "$tmp_unattend"
19 54080484 Nikos Skalkotos
20 54080484 Nikos Skalkotos
    echo -n "Installing new admin password..."
21 54080484 Nikos Skalkotos
22 54080484 Nikos Skalkotos
    local namespace="urn:schemas-microsoft-com:unattend"
23 54080484 Nikos Skalkotos
    
24 bad5ca1f Nikos Skalkotos
    "$XMLSTARLET" ed -N x=$namespace -u "/x:unattend/x:settings/x:component/x:UserAccounts/x:AdministratorPassword/x:Value" -v "$password" "$target/Unattend.xml" > "$tmp_unattend"
25 54080484 Nikos Skalkotos
26 bad5ca1f Nikos Skalkotos
    cat "$tmp_unattend" > "$target/Unattend.xml"
27 54080484 Nikos Skalkotos
    echo done
28 54080484 Nikos Skalkotos
}
29 54080484 Nikos Skalkotos
30 54080484 Nikos Skalkotos
linux_password() {
31 bad5ca1f Nikos Skalkotos
    local target="$1"
32 bad5ca1f Nikos Skalkotos
    local password="$2"
33 54080484 Nikos Skalkotos
34 bad5ca1f Nikos Skalkotos
    local hash=$("@scriptsdir@/snf-passtohash.py" "$password")
35 bad5ca1f Nikos Skalkotos
    if [ ! -e "$target/etc/shadow" ]; then
36 54080484 Nikos Skalkotos
       log_error "No /etc/shadow found!" 
37 54080484 Nikos Skalkotos
    fi
38 54080484 Nikos Skalkotos
    
39 54080484 Nikos Skalkotos
    declare -a users=("root")
40 54080484 Nikos Skalkotos
41 54080484 Nikos Skalkotos
    local distro=$(get_distro $target)
42 54080484 Nikos Skalkotos
43 54080484 Nikos Skalkotos
    if [ "x$disto" = "xubuntu" -o \
44 630610f8 Nikos Skalkotos
         "x$disto" = "xfedora" ] ; then
45 54080484 Nikos Skalkotos
        users+=("user")
46 54080484 Nikos Skalkotos
    fi
47 54080484 Nikos Skalkotos
48 54080484 Nikos Skalkotos
    for i in $(seq 0 1 $((${#users[@]}-1))); do
49 bad5ca1f Nikos Skalkotos
        local tmp_shadow="$(mktemp)"
50 bad5ca1f Nikos Skalkotos
        add_cleanup rm "$tmp_shadow"
51 54080484 Nikos Skalkotos
52 54080484 Nikos Skalkotos
        echo -n "Setting ${users[$i]} password..."
53 54080484 Nikos Skalkotos
    
54 bad5ca1f Nikos Skalkotos
        echo "${users[$i]}:$hash:15103:0:99999:7:::" > "$tmp_shadow"
55 bad5ca1f Nikos Skalkotos
        grep -v "${users[$i]}" "$target/etc/shadow" >> "$tmp_shadow"
56 bad5ca1f Nikos Skalkotos
        cat "$tmp_shadow" > "$target/etc/shadow"
57 54080484 Nikos Skalkotos
        echo "done"
58 54080484 Nikos Skalkotos
    done
59 54080484 Nikos Skalkotos
}
60 54080484 Nikos Skalkotos
61 8704ee47 Nikos Skalkotos
if [ ! -d "$SNF_IMAGE_TARGET" ]; then
62 8704ee47 Nikos Skalkotos
    log_error "Target dir: \`$SNF_IMAGE_TARGET' is missing"
63 54080484 Nikos Skalkotos
fi
64 54080484 Nikos Skalkotos
65 54080484 Nikos Skalkotos
if [ -z "$SNF_IMAGE_PASSWORD" ]; then
66 54080484 Nikos Skalkotos
    log_error "Password is missing"
67 54080484 Nikos Skalkotos
fi
68 54080484 Nikos Skalkotos
69 54080484 Nikos Skalkotos
if [ "$SNF_IMAGE_TYPE" = "ntfsdump" ]; then
70 bad5ca1f Nikos Skalkotos
    windows_password "$SNF_IMAGE_TARGET" "$SNF_IMAGE_PASSWORD"
71 54080484 Nikos Skalkotos
elif [ "$SNF_IMAGE_TYPE" = "extdump" ]; then
72 bad5ca1f Nikos Skalkotos
    linux_password "$SNF_IMAGE_TARGET" "$SNF_IMAGE_PASSWORD"
73 54080484 Nikos Skalkotos
fi
74 54080484 Nikos Skalkotos
75 54080484 Nikos Skalkotos
echo "done"
76 54080484 Nikos Skalkotos
77 54080484 Nikos Skalkotos
cleanup
78 54080484 Nikos Skalkotos
trap - EXIT
79 54080484 Nikos Skalkotos
80 54080484 Nikos Skalkotos
exit 0
81 54080484 Nikos Skalkotos
82 54080484 Nikos Skalkotos
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :