root / helper / tasks / 50ChangePassword @ 91af2694
History | View | Annotate | Download (1.9 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 TAST INFO |
9 |
|
10 |
set -e |
11 |
. /usr/share/snf-image/common.sh |
12 |
|
13 |
windows_password() { |
14 |
local target=$1 |
15 |
local password=$2 |
16 |
|
17 |
local tmp_unattend=`mktemp` || exit 1 |
18 |
CLEANUP+=("rm $tmp_unattend") |
19 |
|
20 |
echo -n "Installing new admin password..." |
21 |
|
22 |
local namespace="urn:schemas-microsoft-com:unattend" |
23 |
|
24 |
$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 |
|
26 |
cat $tmp_unattend > "$target/Unattend.xml" |
27 |
echo done |
28 |
} |
29 |
|
30 |
linux_password() { |
31 |
local target=$1 |
32 |
local password=$2 |
33 |
|
34 |
local hash=$(/usr/share/snf-image/snf-passtohash.py $password) |
35 |
if [ ! -e ${target}/etc/shadow ]; then |
36 |
log_error "No /etc/shadow found!" |
37 |
fi |
38 |
|
39 |
declare -a users=("root") |
40 |
|
41 |
local distro=$(get_distro $target) |
42 |
|
43 |
if [ "x$disto" = "xubuntu" -o \ |
44 |
"x$disto" + "xfedora" ] ; then |
45 |
users+=("user") |
46 |
fi |
47 |
|
48 |
for i in $(seq 0 1 $((${#users[@]}-1))); do |
49 |
local tmp_shadow=$(mktemp) |
50 |
CLEANUP+=("rm $tmp_shadow") |
51 |
|
52 |
echo -n "Setting ${users[$i]} password..." |
53 |
|
54 |
echo "${users[$i]}:$hash:15103:0:99999:7:::" > $tmp_shadow |
55 |
grep -v "${users[$i]}" ${TARGET}/etc/shadow >> $tmp_shadow |
56 |
cat $tmp_shadow > ${target}/etc/shadow |
57 |
echo "done" |
58 |
done |
59 |
} |
60 |
|
61 |
if [ -z "$SNF_IMAGE_TARGET" ]; then |
62 |
log_error "Target dir is missing" |
63 |
fi |
64 |
|
65 |
if [ -z "$SNF_IMAGE_PASSWORD" ]; then |
66 |
log_error "Password is missing" |
67 |
fi |
68 |
|
69 |
if [ "$SNF_IMAGE_TYPE" = "ntfsdump" ]; then |
70 |
windows_password $SNF_IMAGE_TARGET $SNF_IMAGE_PASSWORD |
71 |
elif [ "$SNF_IMAGE_TYPE" = "extdump" ]; then |
72 |
linux_password $SNF_IMAGE_TARGET $SNF_IMAGE_PASSWORD |
73 |
fi |
74 |
|
75 |
echo "done" |
76 |
|
77 |
cleanup |
78 |
trap - EXIT |
79 |
|
80 |
exit 0 |
81 |
|
82 |
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai : |
83 |
|