Novell NSS volumes mounted in Linux offer a great benefit for backup/restore by exposing their assigned trustees and inherited rights masks (IRM) in a XML file inside the Volume. If you take a look inside the .NETWARE directory on the mountpoint, you'll see a file called .trusteedatabase.xml. If your backup plan includes this file, recovery of trustees and IRM is an easy task which can be accomplished with this script I wrote.

#!/usr/bin/perl -w

# Copyright (c) 2008 Michael Fladischer, Austria.
# All rights reserved.
#
# Author: Michael Fladischer , 2008
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GPL.

use Getopt::Std;
use XML::XPath;

use vars qw/ %opt /;

sub init()
{
    use Getopt::Std;
    getopts( 'hvp:m:', \%opt ) or usage();
    usage() if $opt{h} or !$opt{m} or !$opt{p};
}

sub usage()
{
    print STDERR << "EOF";
This program is free software; you can redistribute it and/or modify it
under the terms of the GPL.

Restore trustees and inherited rights masks from XML.

usage: $0 [-hvd] -m mountpoint -p pattern

-h            : this (help) message
-v            : verbose output
-m mountpoint : mountpoint of NSS volume
-p pattern    : path to match

example: $0 -v -m /media/nss/VOLUME -p /users
EOF
    exit;
}   

init();

my $xp = XML::XPath->new(filename => $opt{m}.
                "/._NETWARE/.trustee_database.xml");

foreach my $trustee ($xp->find(
                    "/volume_trustees/trustee[starts-with(\@path,'".
                    $opt{p}."')]")->get_nodelist) {
    if ($opt{v}) {
        print "Restore trustee for ".
            $opt{m}.$trustee->find('@path')."\n";
        print " ".$trustee->find('name')->string_value." -> ".
            $trustee->find('rights')->string_value."\n";
    }
    system("ncpcon rights add ".$opt{m}.$trustee->find('@path').
        " ".substr($trustee->find('name')->string_value, 1).
        " ".$trustee->find('rights')->string_value." &>/dev/null");
}
foreach my $irm ($xp->find(
                "/volume_trustees/inherited_rights_mask[starts-with(\@path,'".
                $opt{p}."')]")->get_nodelist) {
    if ($opt{v}) {
        print "Restore inherited rights mask for ".  
            $opt{m}.$irm->find('@path')."\n";
        print " ".$irm->find('rights')->string_value."\n";
    }
    system("ncpcon irm set ".$opt{m}.$irm->find('@path').
        " ".$irm->find('rights')->string_value." &>/dev/null");
}