Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (2 kB)

1
#! /bin/bash
2

    
3
### BEGIN TASK INFO
4
# Provides:		ChangePassword
5
# RunBefore:            UmountImage
6
# RunAfter:		InstallUnattend
7
# Short-Description:	Changes Password for specified users
8
### END TASK INFO
9

    
10
set -e
11
. "@commondir@/common.sh"
12

    
13
windows_password() {
14
    local target="$1"
15
    local password="$2"
16

    
17
    echo -n "Installing new admin password..."
18

    
19
    echo "@echo off" > "$target/Windows/SnfScripts/ChangeAdminPassword.cmd"
20
    echo "net user Administrator $password" >> \
21
        "$target/Windows/SnfScripts/ChangeAdminPassword.cmd"
22
    echo done
23
}
24

    
25
linux_password() {
26
    local target="$1"
27
    local password="$2"
28

    
29
    local hash=$("@scriptsdir@/snf-passtohash.py" "$password")
30
    if [ ! -e "$target/etc/shadow" ]; then
31
       log_error "No /etc/shadow found!" 
32
    fi
33
    
34
    declare -a users
35
    
36
    if [ -n "$SNF_IMAGE_PROPERTY_USERS" ]; then
37
        for usr in $SNF_IMAGE_PROPERTY_USERS; do
38
            users+=("$usr")
39
        done
40
    else
41
        users+=("root")
42

    
43
        local distro=$(get_distro $target)
44

    
45
        if [ "x$distro" = "xubuntu" -o \
46
             "x$distro" = "xfedora" ] ; then
47
            users+=("user")
48
        fi
49
    fi
50

    
51
    for i in $(seq 0 1 $((${#users[@]}-1))); do
52
        local tmp_shadow="$(mktemp)"
53
        add_cleanup rm "$tmp_shadow"
54

    
55
        echo -n "Setting ${users[$i]} password..."
56
    
57
        echo "${users[$i]}:$hash:15103:0:99999:7:::" > "$tmp_shadow"
58
        grep -v "${users[$i]}" "$target/etc/shadow" >> "$tmp_shadow"
59
        cat "$tmp_shadow" > "$target/etc/shadow"
60
        echo "done"
61
    done
62
}
63

    
64
if [ ! -d "$SNF_IMAGE_TARGET" ]; then
65
    log_error "Target dir: \`$SNF_IMAGE_TARGET' is missing"
66
fi
67

    
68
if [ -z "$SNF_IMAGE_PASSWORD" ]; then
69
    log_error "Password is missing"
70
fi
71

    
72
if [ "$SNF_IMAGE_PROPERTY_OSFAMILY" = "windows" ]; then
73
    windows_password "$SNF_IMAGE_TARGET" "$SNF_IMAGE_PASSWORD"
74
elif [ "$SNF_IMAGE_PROPERTY_OSFAMILY" = "linux" ]; then
75
    linux_password "$SNF_IMAGE_TARGET" "$SNF_IMAGE_PASSWORD"
76
fi
77

    
78
echo "done"
79

    
80
exit 0
81

    
82
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :
83