From 8b86d7c65fd1f8ed38319c5fa3d88e5b1f0caf84 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 27 Mar 2005 21:36:57 +0000 Subject: [PATCH] add static uid, but handle squashfs rootfs systems correctly SVN-Revision: 469 --- .../package/openntpd/ipkg/CONTROL/postinst | 54 +++++++++++-------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/openwrt/package/openntpd/ipkg/CONTROL/postinst b/openwrt/package/openntpd/ipkg/CONTROL/postinst index 8881116c0d..daa0baf55d 100755 --- a/openwrt/package/openntpd/ipkg/CONTROL/postinst +++ b/openwrt/package/openntpd/ipkg/CONTROL/postinst @@ -1,25 +1,35 @@ #!/bin/sh + +name=ntp +id=50 + +# do not change below +# check if we are on real system +if [ -z "${IPKG_INSTROOT}" ]; then + # create copies of passwd and group, if we use squashfs + rootfs=`mount |awk '/root/ { print $5 }'` + if [ "$rootfs" = "squashfs" ]; then + if [ -h /etc/group ]; then + rm /etc/group + cp /rom/etc/group /etc/group + fi + if [ -h /etc/passwd ]; then + rm /etc/passwd + cp /rom/etc/passwd /etc/passwd + fi + fi +fi + +echo "" +if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/group)" ]; then + echo "adding group $name to /etc/group" + echo "${name}:x:${id}:" >> ${IPKG_INSTROOT}/etc/group +fi + +if [ -z "$(grep ^\\${name}: ${IPKG_INSTROOT}/etc/passwd)" ]; then + echo "adding user $name to /etc/passwd" + echo "${name}:x:${id}:${id}:${name}:/tmp/.${name}:/bin/false" >> ${IPKG_INSTROOT}/etc/passwd +fi + grep -q '^ntp[[:space:]]*123/udp' ${IPKG_INSTROOT}/etc/services 2>/dev/null [ $? -ne 0 ] && echo "ntp 123/udp" >>${IPKG_INSTROOT}/etc/services - -NU=ntp -U=`grep "^$NU:" ${IPKG_INSTROOT}/etc/passwd 2>/dev/null | cut -d: -f3` -if [ .$U = . ]; then - U=`cut -d: -f3 ${IPKG_INSTROOT}/etc/passwd 2>/dev/null | sort -n | tail -1` - [ .$U = . ] && U=49 - U=`expr $U + 1` - [ $U -lt 50 ] && U=50 - G=`grep "^$NU:" ${IPKG_INSTROOT}/etc/group 2>/dev/null | cut -d: -f3` - if [ .$G = . ]; then - G=`cut -d: -f3 ${IPKG_INSTROOT}/etc/group 2>/dev/null | sort -n | tail -1` - [ .$G = . ] && G=49 - G=`expr $G + 1` - [ $G -lt 50 ] && G=50 - fi - LINE="$NU:x:$U:$G::/tmp/.ntp:/bin/false" - echo "$LINE" >>${IPKG_INSTROOT}/etc/passwd -else - awk -F: '{ if($1=="ntp") printf("%s:%s:%s:%s:%s:/tmp/.ntp:/bin/false\n",$1,$2,$3,$4,$5); else print $0 }' ${IPKG_INSTROOT}/etc/passwd >/tmp/$$ - mv /tmp/$$ ${IPKG_INSTROOT}/etc/passwd - chmod 644 ${IPKG_INSTROOT}/etc/passwd -fi