Hi,

I had a request from bulgarian user of postgres. He complained
about non-working locale. His system is MANDRAKE 7.0 which comes
with postgres 6.5.3 I believe. After several messages we found
that problem was in startup script /etc/init.d/rc3.d
   su -l postgres -c 'postmaster .......'
 The problem was '-l', after removing it all problems were solved !
I'm not an expert in su, at least I don't know what '-l' is supposed
for, but it's worth to describe the problem and let people from
MANDRAKE to know. 

	Regards,

		Oleg

_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83




Sat, 5 Feb 2000 21:15:35 +0300 (GMT)
Oleg Bartunov <oleg@sai.msu.su>
Linux MANDRAKE startup startup script is broken ?
Oleg Bartunov wrote:
> 
> Hi,
> 
> I had a request from bulgarian user of postgres. He complained
> about non-working locale. His system is MANDRAKE 7.0 which comes
> with postgres 6.5.3 I believe. After several messages we found
> that problem was in startup script /etc/init.d/rc3.d
>    su -l postgres -c 'postmaster .......'
>  The problem was '-l', after removing it all problems were solved !

?!?!?!?  Do something for me: add a couple of lines in
/etc/rc.d/init.d/postgresql after the postmaster start:
su -l postgres -c 'set >/var/lib/pgsql/envvars-l.lst'
su postgres -c 'set >/var/lib/pgsql/envvaqrs-no-l.lst'

And e-mail me the two '*.lst' files out of /var/lib/pgsql.

> I'm not an expert in su, at least I don't know what '-l' is supposed

>From man su:
SU(1)                          FSF                          SU(1)

NAME
       su - run a shell with substitute user and group IDs

SYNOPSIS
       su [OPTION]... [-] [USER [ARG]...]

DESCRIPTION
       Change the effective user id and group id to that of USER.

       -, -l, --login
              make the shell a login shell
......

> for, but it's worth to describe the problem and let people from
> MANDRAKE to know.

The same problem should manifest itself in RedHat, which is what I build
the RPM's for.  Mandrake has been taking the RedHat RPM's and using
them, with modifications, up till now, so, if I fix this in the RedHat
RPM's, the Mandrake RPM's will follow from Mandrake shortly.

--
Lamar Owen
WGCR Internet Radio
1 Peter 4:11

Sat, 05 Feb 2000 15:37:00 -0500
Lamar Owen <lamar.owen@wgcr.org>
Re: [HACKERS] Linux MANDRAKE startup startup script is broken ?

On 05-Feb-2000 Oleg Bartunov wrote:
> Hi,
> 
> I had a request from bulgarian user of postgres. He complained
> about non-working locale. His system is MANDRAKE 7.0 which comes
> with postgres 6.5.3 I believe. After several messages we found
> that problem was in startup script /etc/init.d/rc3.d
>    su -l postgres -c 'postmaster .......'
>  The problem was '-l', after removing it all problems were solved !
> I'm not an expert in su, at least I don't know what '-l' is supposed
> for, but it's worth to describe the problem and let people from
> MANDRAKE to know. 

Switch -l cause su to emulate login procedure, 
i.e rewrite all environment. 
I use simple program to avoid such kind of collision,
and apropriate startup script

(see below sign)


-- 
Dmitry Samersoff, dms@wplus.net, ICQ:3161705
http://devnull.wplus.net
* There will come soft rains ...

==================== cat ===========================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>


int main(int argc, char *argv[])
{
  struct passwd *pw;
  uid_t u;
 
  if (!argv[1])
   { fprintf(stderr,"usage: su_postgres command\n");
     exit(0);
   }

  pw = getpwnam("postgres");
  if (!pw)
    { fprintf(stderr, "user postgres doesn't exist\n");
      exit(0);
    }
 setuid(pw->pw_uid);
 seteuid(pw->pw_uid);

 u = geteuid();
 if( u != pw->pw_uid)
   { fprintf(stderr,"Can\'t change uid to %d\n", pw->pw_uid);
     exit(0);
   }
  system(argv[1]);

}

=================================================================
# $Id: S81pgsql.in,v 1.2 1999/08/31 14:21:19 dms Exp $

PG_HOME="/usr/local/pgsql"
PG_DATA="$PG_HOME/data"
UDS="/tmp/.s.PGSQL.5432"

PS="@PS@"
GREP="@GREP@"

case "$1" in
'start')
        # If no postgres run, remove UDS and start postgres.
        pid=
        set -- `$PS | $GREP postmaster | $GREP -v grep`
        [ $? -eq 0 ] && pid=$1

        if [ -z "$pid" ]; then
                rm -f "$UDS"
                $PG_HOME/bin/su_postgres "$PG_HOME/bin/postmaster -D $PG_DATA -b
 $PG_HOME/bin/postgres -i -S -o -F &"
                echo "Postgres started"
        else
          echo "Postmaster already run with pid $pid"
        fi
        ;;
'stop')
        pid=
        set -- `$PS | $GREP postmaster | $GREP -v grep`
        [ $? -eq 0 ] && pid=$1

        if [ -z "$pid" ]; then
         echo "Postgres not run"
        else
         echo "Stoping postmaster with pid $pid" 
         kill $pid
        fi

        ;;
*)
        echo "USAGE: $0 {start | stop}"
        ;;
esac

=================================================================

Sun, 06 Feb 2000 00:01:09 +0300 (MSK)
Dmitry Samersoff <dms@wplus.net>
RE: [HACKERS] Linux MANDRAKE startup startup script is broken ?