Hello Robert,

I don't feel authorized to tell you that everything inside base.tgz is
set correctly after untarring (must look inside install script to be
100% sure), but here's a script that I've been using lately. Note
Linux' [sS] and OpenBSD's [tT]. Good that there are standards!


Bill

-----------------------------------------------------------------------
#!/bin/sh
#
# findperms - find node permissions

# Usage: ./findperms [-r [-t]] node
# Writes to stdout

# Will print:
# type mode owner.group path
# type mode owner.group path/tree..             [-r]
# type mode owner.group /tree..                 [-r -t]

os="$(uname)"

if [ "X$1" = "X-r" ]; then
    recursive=yes
    shift
fi

if [ "X$1" = "X-t" ]; then
    truncate=yes
    shift
fi

if [ -z "$1" ] || [ -n "$truncate" -a -z "$recursive" ]; then
    echo "Usage: ./findperms [-r [-t]] node"
    exit 1
fi

node="$1"

command="ls -ld $node"
if [ "X$recursive" = "Xyes" ]; then
    command="find $node -exec ls -ld {} \;"
fi

subst=" "
if [ "X$truncate" = "Xyes" ]; then
    subst=" $node"
fi

# OpenBSD and Linux use different output formats with 'ls -l'
# Merging the two awk commands into one turned out not to be a good idea 
(maintenance)
if [ X"$os" = X"OpenBSD" ]; then

    eval $command |
        sed -e 's/,  */,/' -e 's/ ->.*//' |
        grep -v "^total" |
        awk -F' ' '{ mod=0 }
                   /^.r......../ { mod += 400 }
                   /^..w......./ { mod += 200 }
                   /^...x....../ { mod += 100 }
                   /^...s....../ { mod += 4000 }
                   /^....r...../ { mod += 40 }
                   /^.....w..../ { mod += 20 }
                   /^......x.../ { mod += 10 }
                   /^......s.../ { mod += 2000 }
                   /^.......r../ { mod += 4 }
                   /^........w./ { mod += 2 }
                   /^.........x/ { mod += 1 }
                   /^.........T/ { mod += 1000 }
                   /^.........t/ { mod += 1001 }
                   { printf "%c %04d %s.%s ", substr($1, 1, 1), mod, $3, $4 }
                   { if ($9) print $9; else print $8 }' |
         sed "[EMAIL PROTECTED]@ @"

elif [ X"$os" = X"Linux" ]; then

    eval $command |
        sed -e 's/,  */,/' -e 's/ ->.*//' |
        grep -v "^total" |
        awk -F' ' '{ mod=0 }
                   /^.r......../ { mod += 400 }
                   /^..w......./ { mod += 200 }
                   /^...x....../ { mod += 100 }
                   /^...S....../ { mod += 4000 }
                   /^...s....../ { mod += 4100 }
                   /^....r...../ { mod += 40 }
                   /^.....w..../ { mod += 20 }
                   /^......x.../ { mod += 10 }
                   /^......S.../ { mod += 2000 }
                   /^......s.../ { mod += 2010 }
                   /^.......r../ { mod += 4 }
                   /^........w./ { mod += 2 }
                   /^.........x/ { mod += 1 }
                   /^.........t/ { mod += 1000 }
                   { printf "%c %04d %s.%s ", substr($1, 1, 1), mod, $3, $4 }
                   { if ($9) print $9; else print $8 }' |
         sed "[EMAIL PROTECTED]@ @"

fi


exit 0
-----------------------------------------------------------------------

On Mon, 2006-12-04 at 14:18 +0100, Robert Urban wrote:
> Hi Misc'ers,
> 
> I did something stupid on my 4.0 server and lost the contents of /bin.  
> I restored by
> booting from the install-cd, mounting /, /usr, and /var, and running
> 
>     cd /root-mount; pax -rz -f /cd/4.0/i386/base40.tgz
> 
> (please don't ask what the stupid thing was).
> 
> I saved my /etc, /var/db, /var/www, /var/cron beforehand, so these were 
> not affected.
> 
> The pax-connaisseurs among you will immediately notice that I forgot to 
> use "-p e" to
> preserve all permissions. I went through manually and reset 
> setuid/setguid bits for all
> relevant files, using a 3.9 system as my guide.
> 
> My question is, does base40.tgz contain the permissions/ownership that 
> the files should
> have after installation?
> Is it appropriate to write a script which uses the permissions and
> owner/group from base40.tgz to restore the same for all existing files 
> in the filesystem?
> Or do file permissions/ownership somehow get modified during the 
> installation?
> 
> thanks,
> 
> Rob Urban

Reply via email to