Annotation of embedaddon/sudo/sudo.pp, revision 1.1

1.1     ! misho       1: %set
        !             2:        if test -n "$flavor"; then
        !             3:                name="sudo-$flavor"
        !             4:                pp_kit_package="sudo_$flavor"
        !             5:        else
        !             6:                name="sudo"
        !             7:                pp_kit_package="sudo"
        !             8:        fi
        !             9:        summary="Provide limited super-user privileges to specific users"
        !            10:        description="Sudo is a program designed to allow a sysadmin to give \
        !            11: limited root privileges to users and log root activity.  \
        !            12: The basic philosophy is to give as few privileges as possible but \
        !            13: still allow people to get their work done."
        !            14:        vendor="Todd C. Miller"
        !            15:        copyright="(c) 1993-1996,1998-2011 Todd C. Miller"
        !            16: 
        !            17: %if [aix]
        !            18:        # AIX package summary is limited to 40 characters
        !            19:        summary="Configurable super-user privileges"
        !            20: 
        !            21:        # Convert to 4 part version for AIX, including patch level
        !            22:        pp_aix_version=`echo $version|sed -e 's/^\([0-9]*\.[0-9]*\.[0-9]*\)p\([0-9]*\)$/\1.\2/' -e 's/^\([0-9]*\.[0-9]*\.[0-9]*\)[^0-9\.].*$/\1/' -e 's/^\([0-9]*\.[0-9]*\.[0-9]*\)$/\1.0/'`
        !            23: %endif
        !            24: 
        !            25: %if [kit]
        !            26:        # Strip off patchlevel for kit which only supports xyz versions
        !            27:        pp_kit_version="`echo $version|sed -e 's/\.//g' -e 's/[^0-9][^0-9]*[0-9][0-9]*$//'`"
        !            28:        pp_kit_name="TCM"
        !            29: %endif
        !            30: 
        !            31: %if [sd]
        !            32:        pp_sd_vendor_tag="TCM"
        !            33: %endif
        !            34: 
        !            35: %if [solaris]
        !            36:        pp_solaris_name="TCM${name}"
        !            37:        pp_solaris_pstamp=`/usr/bin/date "+%B %d, %Y"`
        !            38: %endif
        !            39: 
        !            40: %if [rpm,deb]
        !            41:        # Convert patch level into release and remove from version
        !            42:        pp_rpm_release="`expr \( $version : '.*p\([0-9][0-9]*\)' \| 0 \) + 1`"
        !            43:        pp_rpm_version="`expr $version : '\(.*\)p[0-9][0-9]*'`"
        !            44:        pp_rpm_license="BSD"
        !            45:        pp_rpm_url="http://www.sudo.ws/"
        !            46:        pp_rpm_group="Applications/System"
        !            47:        pp_rpm_packager="Todd.Miller@courtesan.com"
        !            48:        if test -n "$linux_audit"; then
        !            49:                pp_rpm_requires="audit-libs >= $linux_audit"
        !            50:        fi
        !            51: 
        !            52:        pp_deb_maintainer="$pp_rpm_packager"
        !            53:        pp_deb_release="$pp_rpm_release"
        !            54:        pp_deb_version="$pp_rpm_version"
        !            55: %else
        !            56:        # For all but RPM and Debian we need to install sudoers with a different
        !            57:        # name and make a copy of it if there is no existing file.
        !            58:        mv ${pp_destdir}$sudoersdir/sudoers ${pp_destdir}$sudoersdir/sudoers.dist
        !            59: %endif
        !            60: 
        !            61: %if [rpm]
        !            62:        # Add distro info to release
        !            63:        osrelease=`echo "$pp_rpm_distro" | sed -e 's/^[^0-9]*//' -e 's/-.*$//'`
        !            64:        case "$pp_rpm_distro" in
        !            65:        centos*|rhel*)
        !            66:                pp_rpm_release="$pp_rpm_release.el${osrelease%%[0-9]}"
        !            67:                ;;
        !            68:        sles*)
        !            69:                pp_rpm_release="$pp_rpm_release.sles$osrelease"
        !            70:                ;;
        !            71:        esac
        !            72: 
        !            73:        # Uncomment some Defaults in sudoers
        !            74:        # Note that the order must match that of sudoers.
        !            75:        case "$pp_rpm_distro" in
        !            76:        centos*|rhel*)
        !            77:                /bin/ed - ${pp_destdir}${sudoersdir}/sudoers <<-'EOF'
        !            78:                /Locale settings/+1,s/^# //
        !            79:                /Desktop path settings/+1,s/^# //
        !            80:                w
        !            81:                q
        !            82:                EOF
        !            83:                ;;
        !            84:        sles*)
        !            85:                /bin/ed - ${pp_destdir}${sudoersdir}/sudoers <<-'EOF'
        !            86:                /Locale settings/+1,s/^# //
        !            87:                /ConsoleKit session/+1,s/^# //
        !            88:                /allow any user to run sudo if they know the password/+2,s/^# //
        !            89:                /allow any user to run sudo if they know the password/+3,s/^# //
        !            90:                w
        !            91:                q
        !            92:                EOF
        !            93:                ;;
        !            94:        esac
        !            95: 
        !            96:        # For RedHat the doc dir is expected to include version and release
        !            97:        case "$pp_rpm_distro" in
        !            98:        centos*|rhel*)
        !            99:                mv ${pp_destdir}/${docdir} ${pp_destdir}/${docdir}-${version}-${pp_rpm_release}
        !           100:                docdir=${docdir}-${version}-${pp_rpm_release}
        !           101:                ;;
        !           102:        esac
        !           103: 
        !           104:        # Choose the correct PAM file by distro, must be tab indented for "<<-"
        !           105:        case "$pp_rpm_distro" in
        !           106:        centos*|rhel*)
        !           107:                mkdir -p ${pp_destdir}/etc/pam.d
        !           108:                if test $osrelease -lt 50; then
        !           109:                        cat > ${pp_destdir}/etc/pam.d/sudo <<-EOF
        !           110:                        #%PAM-1.0
        !           111:                        auth       required     pam_stack.so service=system-auth
        !           112:                        account    required     pam_stack.so service=system-auth
        !           113:                        password   required     pam_stack.so service=system-auth
        !           114:                        session    required     pam_limits.so
        !           115:                        EOF
        !           116:                else
        !           117:                        cat > ${pp_destdir}/etc/pam.d/sudo <<-EOF
        !           118:                        #%PAM-1.0
        !           119:                        auth       include      system-auth
        !           120:                        account    include      system-auth
        !           121:                        password   include      system-auth
        !           122:                        session    optional     pam_keyinit.so revoke
        !           123:                        session    required     pam_limits.so
        !           124:                        EOF
        !           125:                        cat > ${pp_destdir}/etc/pam.d/sudo-i <<-EOF
        !           126:                        #%PAM-1.0
        !           127:                        auth       include      sudo
        !           128:                        account    include      sudo
        !           129:                        password   include      sudo
        !           130:                        session    optional     pam_keyinit.so force revoke
        !           131:                        session    required     pam_limits.so
        !           132:                        EOF
        !           133:                fi
        !           134:                ;;
        !           135:          sles*)
        !           136:                mkdir -p ${pp_destdir}/etc/pam.d
        !           137:                if test $osrelease -lt 10; then
        !           138:                        cat > ${pp_destdir}/etc/pam.d/sudo <<-EOF
        !           139:                        #%PAM-1.0
        !           140:                        auth     required       pam_unix2.so
        !           141:                        session  required       pam_limits.so
        !           142:                        EOF
        !           143:                else
        !           144:                        cat > ${pp_destdir}/etc/pam.d/sudo <<-EOF
        !           145:                        #%PAM-1.0
        !           146:                        auth     include        common-auth
        !           147:                        account  include        common-account
        !           148:                        password include        common-password
        !           149:                        session  include        common-session
        !           150:                        # session  optional     pam_xauth.so
        !           151:                        EOF
        !           152:                fi
        !           153:                ;;
        !           154:        esac
        !           155: %endif
        !           156: 
        !           157: %if [deb]
        !           158:        # Uncomment some Defaults and the %sudo rule in sudoers
        !           159:        # Note that the order must match that of sudoers and be tab-indented.
        !           160:        /bin/ed - ${pp_destdir}${sudoersdir}/sudoers <<-'EOF'
        !           161:        /Locale settings/+1,s/^# //
        !           162:        /X11 resource/+1,s/^# //
        !           163:        /^# \%sudo/,s/^# //
        !           164:        w
        !           165:        q
        !           166:        EOF
        !           167:        mkdir -p ${pp_destdir}/etc/pam.d
        !           168:        cat > ${pp_destdir}/etc/pam.d/sudo <<-EOF
        !           169:        #%PAM-1.0
        !           170: 
        !           171:        @include common-auth
        !           172:        @include common-account
        !           173: 
        !           174:        session required pam_permit.so
        !           175:        session required pam_limits.so
        !           176:        EOF
        !           177: %endif
        !           178: 
        !           179:        # OS-level directories that should generally exist but might not.
        !           180:        extradirs=`echo ${pp_destdir}/${mandir}/[mc]* | sed "s#${pp_destdir}/##g"`
        !           181:        extradirs="$extradirs `dirname $docdir` `dirname $timedir`"
        !           182:        test -d ${pp_destdir}/etc/pam.d && extradirs="${extradirs} /etc/pam.d"
        !           183:        for dir in $bindir $sbindir $libexecdir $includedir $extradirs; do
        !           184:                while test "$dir" != "/"; do
        !           185:                        osdirs="${osdirs}${osdirs+ }$dir/"
        !           186:                        dir=`dirname $dir`
        !           187:                done
        !           188:        done
        !           189:        osdirs=`echo $osdirs | tr " " "\n" | sort -u`
        !           190: 
        !           191: %files
        !           192:        $osdirs                -
        !           193:        $bindir/sudo        4111 root:
        !           194:        $bindir/sudoedit    4111 root:
        !           195:        $sbindir/visudo     0111
        !           196:        $bindir/sudoreplay  0111
        !           197:        $includedir/sudo_plugin.h
        !           198:        $libexecdir/*           optional
        !           199:        $sudoersdir/sudoers.d/  0750 $sudoers_uid:$sudoers_gid
        !           200:        $timedir/               0700 root:
        !           201:        $docdir/
        !           202:        $docdir/*
        !           203:        $localedir/             optional
        !           204:        $localedir/**           optional
        !           205:        /etc/pam.d/*            volatile,optional
        !           206: %if [rpm,deb]
        !           207:        $sudoersdir/sudoers $sudoers_mode $sudoers_uid:$sudoers_gid volatile
        !           208: %else
        !           209:        $sudoersdir/sudoers.dist $sudoers_mode $sudoers_uid:$sudoers_gid volatile
        !           210: %endif
        !           211: 
        !           212: %files [!aix]
        !           213:        $mandir/man*/*
        !           214: 
        !           215: %files [aix]
        !           216:        # Some versions use catpages, some use manpages.
        !           217:        $mandir/cat*/* optional
        !           218:        $mandir/man*/* optional
        !           219: 
        !           220: %post [!rpm,deb]
        !           221:        # Don't overwrite an existing sudoers file
        !           222:        sudoersdir=%{sudoersdir}
        !           223:        if test ! -r $sudoersdir/sudoers; then
        !           224:                cp $sudoersdir/sudoers.dist $sudoersdir/sudoers
        !           225:                chmod %{sudoers_mode} $sudoersdir/sudoers
        !           226:                chown %{sudoers_uid} $sudoersdir/sudoers
        !           227:                chgrp %{sudoers_gid} $sudoersdir/sudoers
        !           228:        fi
        !           229: 
        !           230: %post [deb]
        !           231:        # dpkg-deb does not maintain the mode on the sudoers file, and
        !           232:        # installs it 0640 when sudo requires 0440
        !           233:        chmod %{sudoers_mode} %{sudoersdir}/sudoers
        !           234: 
        !           235:        # create symlink to ease transition to new path for ldap config
        !           236:        # if old config file exists and new one doesn't
        !           237:        if test X"%{flavor}" = X"ldap" -a \
        !           238:            -r /etc/ldap/ldap.conf -a ! -r /etc/sudo-ldap.conf; then
        !           239:                ln -s /etc/ldap/ldap.conf /etc/sudo-ldap.conf
        !           240:        fi
        !           241: 
        !           242:        # Debian uses a sudo group in its default sudoers file
        !           243:        perl -e '
        !           244:                exit 0 if getgrnam("sudo");
        !           245:                $gid = 27; # default debian sudo gid
        !           246:                setgrent();
        !           247:                while (getgrgid($gid)) { $gid++; }
        !           248:                if ($gid != 27) {
        !           249:                        print "On Debian we normally use gid 27 for \"sudo\".\n";
        !           250:                        $gname = getgrgid(27);
        !           251:                        print "However, on your system gid 27 is group \"$gname\".\n\n";
        !           252:                        print "Would you like me to stop configuring sudo so that you can change this? [n] "; 
        !           253:                        $ans = <STDIN>;
        !           254:                        if ($ans =~ /^[yY]/) {
        !           255:                                print "\"dpkg --pending --configure\" will restart the configuration.\n\n";
        !           256:                                exit 1;
        !           257:                        }
        !           258:                }
        !           259:                print "Creating group \"sudo\" with gid = $gid\n";
        !           260:                system("groupadd -g $gid sudo");
        !           261:                exit 0;
        !           262:        '
        !           263: 
        !           264: %preun [deb]
        !           265:        # Remove the /etc/ldap/ldap.conf -> /etc/sudo-ldap.conf symlink if
        !           266:        # it matches what we created in the postinstall script.
        !           267:        if test X"%{flavor}" = X"ldap" -a \
        !           268:            X"`readlink /etc/sudo-ldap.conf 2>/dev/null`" = X"/etc/ldap/ldap.conf"; then
        !           269:                rm -f /etc/sudo-ldap.conf
        !           270:        fi

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>