summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwbx <wbx@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-03-27 21:36:57 +0000
committerwbx <wbx@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-03-27 21:36:57 +0000
commit8667fc1091e10ba0c64f05ea8e7e41dffe407536 (patch)
tree832315f1d78e709d177523e1ca5090e72ab66391
parent1e5f3ed181f4d5f5cc5a5be309ea7b756ba116bb (diff)
add static uid, but handle squashfs rootfs systems correctly
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@469 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rwxr-xr-xpackage/openntpd/ipkg/CONTROL/postinst52
1 files changed, 31 insertions, 21 deletions
diff --git a/package/openntpd/ipkg/CONTROL/postinst b/package/openntpd/ipkg/CONTROL/postinst
index 8881116c0..daa0baf55 100755
--- a/package/openntpd/ipkg/CONTROL/postinst
+++ b/package/openntpd/ipkg/CONTROL/postinst
@@ -1,25 +1,35 @@
#!/bin/sh
-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
+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
- 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
+
+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