Files
snap/SNAP/usher
Jay Larson 997a8d69b5 - Moved away from versioned directory for better tracking
- Modified usher to set root password if not already set
 - Modified snap to deal with circular dependencies properly
 - Now snap properly checks exit value for usher postinst
2016-11-04 08:32:24 -05:00

129 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
set -e
PASSWD="root:SETPASS:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false"
GROUP="root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
input:x:24:
mail:x:34:
nogroup:x:99:
users:x:999:"
case $1 in
preinst)
echo "Creating base directory structure"
install -d -m 755 ${TARGET}/etc/{ld.so,conf.d,opt}
install -d -m 755 ${TARGET}/usr/bin
install -d -m 755 ${TARGET}/bin
install -d -m 755 ${TARGET}/boot
install -d -m 755 ${TARGET}/dev
install -d -m 755 ${TARGET}/home
install -d -m 755 ${TARGET}/lib
install -d -m 755 ${TARGET}/media/{cdrom,floppy}
install -d -m 755 ${TARGET}/mnt
install -d -m 755 ${TARGET}/opt
install -d -m 755 ${TARGET}/proc
install -d -m 750 ${TARGET}/root
install -d -m 755 ${TARGET}/run/lock
install -d -m 755 ${TARGET}/sbin
install -d -m 755 ${TARGET}/srv
install -d -m 755 ${TARGET}/sys
install -d -m 1777 ${TARGET}/tmp
install -d -m 755 ${TARGET}/usr/{bin,include,lib,libexec,local}
install -d -m 755 ${TARGET}/usr/local/{bin,include,lib,sbin,share}
install -d -m 755 \
${TARGET}/usr/local/share/{color,dict,doc,info,locale,man}
install -d -m 755 ${TARGET}/usr/local/share/man/man{1..8}
install -d -m 755 ${TARGET}/usr/local/share/{misc,terminfo,zoneinfo}
install -d -m 755 ${TARGET}/usr/local/src
install -d -m 755 ${TARGET}/usr/{sbin,share}
install -d -m 755 ${TARGET}/usr/share/{color,dict,doc,info,locale}
install -d -m 755 ${TARGET}/usr/share/man/man{1..8}
install -d -m 755 ${TARGET}/usr/share/{misc,snap,terminfo,zoneinfo}
install -d -m 755 ${TARGET}/usr/src
install -d -m 755 ${TARGET}/var/cache/nscd
install -d -m 755 ${TARGET}/var/lib/{color,locate,misc}
install -d -m 755 ${TARGET}/var/{local,log,mail,opt,snap,spool}
install -d -m 1777 ${TARGET}/var/tmp
install -m 600 /dev/null ${TARGET}/var/log/btmp
install -m 644 /dev/null ${TARGET}/var/log/wtmp
install -m 664 /dev/null ${TARGET}/var/log/lastlog
ln -sf /proc/self/mounts ${TARGET}/etc/mtab
ln -sf lib ${TARGET}/lib64
ln -sf lib ${TARGET}/usr/lib64
ln -sf lib ${TARGET}/usr/local/lib64
ln -sf /run/lock ${TARGET}/var/lock
ln -sf /run ${TARGET}/var/run
if [ ! -f ${TARGET}/etc/resolv.conf ]&&[ -f /etc/resolv.conf ]; then
echo "Copying resolv.conf from temporary system"
cp /etc/resolv.conf ${TARGET}/etc/resolv.conf
fi
if [ ! -f ${TARGET}/etc/passwd ]; then
echo "Creating /etc/passwd"
echo "${PASSWD}" > ${TARGET}/etc/passwd
fi
if [ ! -f ${TARGET}/etc/group ]; then
echo "Creating /etc/group"
echo "${GROUP}" > ${TARGET}/etc/group
fi
;;
postinst)
setpass=`cat ${TARGET}/etc/shadow|grep ^root|awk -F':' '{print $2}'`
if [ "$setpass" == 'SETPASS' ]; then
echo "Setting root password"
if [[ ${TARGET} ]]; then
if ! mountpoint ${TARGET}/dev; then
mount -o ro -t devtmpfs devtmpfs ${TARGET}/dev
chroot ${TARGET} passwd root
umount ${TARGET}/dev
else
chroot ${TARGET} passwd root
fi
else
passwd root
fi
fi
echo "Refreshing snap"
if [[ ${TARGET} ]]; then
chroot ${TARGET} snap refresh
else
snap refresh
fi
exit 0
;;
prerm)
exit 0
;;
postrm)
exit 0
;;
esac