#!/bin/bash # # # post.sh - to be done after extraction # # Copyright (c) 2010 SuSE Linux AG Nuernberg, Germany. # Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # # # Run this script in C-Locale, or some tools will fail. export LC_ALL=C # # to make sure, /var/lib/YaST/bin/bootsetup runs fine, delete # /usr/lib/YaST/.configured2 test -e /usr/lib/YaST/.configured2 && rm -f /usr/lib/YaST/.configured2 # # there are some installation with an etc/psdevtab, which is only readable # for root - this slows ps for any other user. starting ps as root, creates # it, when it doesn't exist (readable). So simply delete it. # test -e /etc/psdevtab && rm -f /etc/psdevtab # # if the old nsswitch.conf contains dns6, replace it with dns # test -f /etc/nsswitch.conf.rpmnew && grep dns6 /etc/nsswitch.conf >/dev/null 2>&1 && { sed -i -e "s|dns6|dns|g" /etc/nsswitch.conf } # GMT might already be in sysconfig/clock %{rename_sysconfig_variable -f /etc/sysconfig/clock GMT HWCLOCK} # # Initialize runlevel links # %{fillup_and_insserv -y boot.proc boot.localfs boot.swap boot.clock boot.ldconfig boot.ipconfig boot.klog boot.localnet halt random reboot single} %{insserv_force_if_yast /etc/init.d/boot.loadmodules /etc/init.d/boot.cleanup /etc/init.d/boot.rootfsck} ## powerfail probably needs empty header ... # add Kill-links in boot.d if needed: for i in proc localfs swap clock ldconfig ipconfig klog localnet loadmodules ; do if [ -f /etc/init.d/boot.d/S??boot.$i -a ! -f /etc/init.d/boot.d/K??boot.$i ] ; then %{insserv_force_if_yast boot.$i} fi done %{remove_and_set -n security CONSOLE_SHUTDOWN} %{remove_and_set -n suseconfig CHECK_INITTAB} %{remove_and_set -n suseconfig HALT_SOUND} if ! [ -d /etc/sysconfig ] ; then mkdir -p /etc/sysconfig fi for i in language backup boot kernel \ suseconfig clock proxy windowmanager sysctl \ cron news shutdown ; do %{fillup_only -n $i} done # migrate HALT_SOUND value if set before if [ -n "$HALT_SOUND" -a "$HALT_SOUND" != "no" ] ; then sed -i -e "s|^HALT_SOUND=.*|HALT_SOUND=\"$HALT_SOUND\"|" /etc/sysconfig/shutdown fi # fix sysconfig backup dir if grep -q RCCONFIG_BACKUP_DIR../var/adm/backup/rpmdb /etc/sysconfig/backup; then sed -i -e "s|^RCCONFIG_BACKUP_DIR=.*|RCCONFIG_BACKUP_DIR=\"/var/adm/backup/sysconfig\"|" \ /etc/sysconfig/backup mkdir -p /var/adm/backup/sysconfig mv /var/adm/backup/rpmdb/sysconfig[-_]* /var/adm/backup/sysconfig 2>/dev/null fi if grep -q "SEND_OUTPUT_ON_NO_ERROR=\"yes\"" /etc/sysconfig/cron ; then if test ! -f /var/adm/bnc_622203_fixed ; then sed -i -e "s|^SEND_OUTPUT_ON_NO_ERROR=\"yes\"|SEND_OUTPUT_ON_NO_ERROR=\"no\"|" \ /etc/sysconfig/cron touch /var/adm/bnc_622203_fixed fi fi # clear old install settings of MODULES_LOADED_ON_BOOT eval `grep "^MODULES_LOADED_ON_BOOT" /etc/sysconfig/kernel` MLOB_NEW="" for i in $MODULES_LOADED_ON_BOOT ; do case $i in capability|raw1394|video1394) continue ;; esac MLOB_NEW="$MLOB_NEW${MLOB_NEW:+ }$i" done if test "$MODULES_LOADED_ON_BOOT" != "$MLOB_NEW" ; then sed -i -e "s|^MODULES_LOADED_ON_BOOT=.*|MODULES_LOADED_ON_BOOT=\"$MLOB_NEW\"|" \ /etc/sysconfig/kernel fi # # Backup gshadow file and remove it (merge passwords into # /etc/group before). # if [ -f /etc/gshadow -a -x /usr/sbin/grpunconv ]; then cp -p /etc/gshadow /etc/gshadow-`date "+%Y%m%d"` chmod 600 /etc/gshadow-`date "+%Y%m%d"` /usr/sbin/grpunconv fi # # handle password files # for i in passwd group shadow ; do test -e /var/adm/fillup-templates/$i.aaa_base || continue echo -n "Updating etc/$i..." if test -f /etc/$i ; then cp /etc/$i /etc/$i.tmp rm -f /etc/$i.add sort -k 1,1 -t: -u /etc/$i /var/adm/fillup-templates/$i.aaa_base \ | sort -k 1,1 -t: /etc/$i - | uniq -u > /etc/$i.add cat /etc/$i.add >> /etc/$i rm -f /etc/$i.add if cmp -s /etc/$i /etc/$i.tmp ; then echo "unchanged" else echo "modified" fi rm -f /etc/$i.tmp # If we have a NIS system, we have to make sure, that "^+" is at the end grep -v "^+" /etc/$i > /etc/$i.tmp || : grep "^+" /etc/$i >> /etc/$i.tmp || : test -s /etc/$i.tmp && cat /etc/$i.tmp > /etc/$i rm -f /etc/$i.tmp else cat /var/adm/fillup-templates/$i.aaa_base > /etc/$i echo "new" fi done # check/fix owner and permission of shadow files for i in /etc/shadow ; do chmod 640 $i chgrp shadow $i done # # Change primary group of nobody to nobody # if [ -x /usr/sbin/usermod ]; then /usr/sbin/usermod -g nobody nobody 2> /dev/null ||: fi # # create mtab if it does not exist # if test ! -e /etc/mtab; then ln -sf /proc/self/mounts /etc/mtab fi # # make sure that several log files exist # if test ! -d /var/log ; then mkdir -p /var/log fi while read file owner mode; do test -e "$file" || touch "$file" chmod "$mode" "$file" chown "$owner" "$file" done < /usr/sbin/userdel.local #!/bin/bash # # Here you can add your own stuff, that should be done for every user who # will be deleted. # # When you delete a user with YaST, this script will be called # with the login name as parameter. The rest of data can be taken # from /etc/passwd. # EOT chmod 744 /usr/sbin/userdel.local fi # change all /media mounts (subfs) to noauto if test -f /etc/fstab ; then sed -i -e '/^[[:space:]]*#/{p;d}' -e '/[[:space:]]subfs.*noauto/{p;d}' -e '/\/media.*fs=\(cdfss\|floppyfss\)/s/\([[:space:]]subfs[[:space:]][[:space:]]*\)/\1noauto,/' /etc/fstab fi # IA64 Altix update hook if test -d /proc/sgi_sn ; then if grep -q "console=ttyS0" /etc/elilo.conf ; then echo "replacing ttyS0 by ttySG0 in elilo.conf, inittab and securetty files" # sed -i -e "s/console=ttyS0/console=ttySG0/g" /etc/elilo.conf # sed -i -e "s/getty\(.*\)ttyS0/getty\1ttySG0/g" /etc/inittab # sed -i -e "s/ttyS0/ttySG0/g" /etc/securetty # if grep -q /boot/efi /proc/mounts ; then echo "calling elilo to update" /sbin/elilo || true fi fi fi exit 0