Re:  BUG #17647: 12.12 package has difference on ubuntu 18.04 - Mailing list pgsql-bugs

From Julien Rouhaud
Subject Re:  BUG #17647: 12.12 package has difference on ubuntu 18.04
Date
Msg-id 20221018132519.tt3feryowdyhdvbn@jrouhaud
Whole thread Raw
In response to Re: Aw: BUG #17647: 12.12 package has difference on ubuntu 18.04  (Julien Rouhaud <rjuju123@gmail.com>)
Responses Aw: Re:  BUG #17647: 12.12 package has difference on ubuntu 18.04
List pgsql-bugs
On Tue, Oct 18, 2022 at 08:44:15PM +0800, Julien Rouhaud wrote:
> Hi,
>
> On Tue, Oct 18, 2022 at 10:19:20AM +0200, Mike Fröhner wrote:
> >
> > <html>
> >  <head>
> >   <meta name="viewport" content="width=device-width">
> >   <meta http-equiv="Content-Type" content="text/vnd.ui.insecure+html;charset=utf-8">
> >  </head>
> >  <body style="overflow-wrap:break-word; word-break: break-word;"><div class="mail_android_message"
style="line-height:1; padding: 0.5em">Hello<br/><br/>I have made some deeper investigation:<br/><br/>Steps to
reproduce:<br/><br/>```<br/>dockerpull ubuntu:18.04 && docker run -it --rm ubuntu:18.04 bash<br/>##
or<br/>dockerpull ubuntu:20.04 && docker run -it --rm ubuntu:20.04 bash<br/>## or<br/>docker pull ubuntu:22.04
&&docker run -it --rm ubuntu:22.04 bash<br/><br/><br/>apt-get update<br/>apt-get install -y vim strace less
curlca-certificates gnupg sudo lsb-release<br/><br/>curl <a
href="https://www.postgresql.org/media/keys/ACCC4CF8.asc">https://www.postgresql.org/media/keys/ACCC4CF8.asc</a>| gpg
--dearmor| sudo tee /etc/apt/<a href="http://trusted.gpg">trusted.gpg</a>.d/<a
href="http://apt.postgresql.org.gpg">apt.postgresql.org.gpg</a>>/dev/null<br/><br/>sh -c 'echo "deb <a
href="http://apt.postgresql.org/pub/repos/apt">http://apt.postgresql.org/pub/repos/apt</a>$(lsb_release -cs)-pgdg
main"> /etc/apt/<a href="http://sources.list">sources.list</a>.d/<a
href="http://pgdg.list">pgdg.list</a>'<br/>apt-getupdate<br/>apt-get install -y
postgresql-12<br/><br/>pg_ctlcluster12 main start<br/><br/>sudo -u postgres -i<br/>psql<br/>CREATE DATABASE
database_name;<br/>CREATEUSER my_username WITH PASSWORD 'my_password';<br/>GRANT ALL PRIVILEGES ON DATABASE
"database_name"to my_username;<br/>exit<br/><br/>echo '*:*:*:my_username:my_password' >
.pgpass<br/>chmod0600 .pgpass<br/>exit<br/><br/>##<br/>## this does not work for ubuntu 18.04 but for ubuntu
20.04/22.04<br/>##<br/>/usr/bin/sudo-u postgres psql -U my_username -h <a href="http://127.0.0.1">127.0.0.1</a>
database_name-c "CREATE TABLE foo (foo char);"<br/><br/>##<br/>## this works for all<br/>##<br/>sudo -u
postgres-i<br/>psql -U my_username -h <a href="http://127.0.0.1">127.0.0.1</a> database_name -c "CREATE TABLE foo
(foochar);"<br/>```<br/><br/>We have narrowed it down to three packages which have been upgraded on ubuntu 18.04
betweenworking and broken state:<br/>- `libpq5` upgraded from `14.5-1.pgdg18.04+1` to `15.0-1.pgdg18.04+1`<br/>-
`postgresql-client-common`and `postgresql-common` from `243.pgdg18.04+1` to `244.pgdg18.04+1`<br/><br/>None other
packageshave been upgraded (incl. ubuntu repo packages)!<br/><br/>For me it does look like a bug with in psql client
package.<br/><br/>regards<br/>Mike<br/><br/>--<br/>DieseNachricht wurde von meinem Android Mobiltelefon mit GMX Mail
gesendet.</div><divclass="mail_android_quote" style="line-height: 1; padding: 0.3em"><html><body>Am 17.10.22, 16:19
schriebPG Bug reporting form <noreply@postgresql.org>:</body></html><blockquote class="gmail_quote"
style="margin:0.8ex 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"> 
>
> You should configure your MUA to send plaintext too and not only html, as some
> people can't (and don't want to) read html-only emails.  After reading it on
> the html archives, I'm surprised to see that this would work at all on other
> ubuntu versions, and it doesn't look like a bug in our code.  sudo without -i
> will look for the .pgpass in the wrong place:
>
> # sudo -u postgres bash -c "echo \$HOME"
> /root
>
> # sudo -iu postgres bash -c "echo \$HOME"
> /var/lib/postgresql
>
> Do you get a different behavior for those commands on other ubuntu versions?

Scratch that, after checking the code I can see that up to version 14 we were
only relying on getpwuid or getpwuid_r (which would work with or without -i),
but starting with pg15 we first look at the $HOME variable which indeed is
problematic.

This was introduced in 376ce3e404b, per request at
https://www.postgresql.org/message-id/1634252654444.90107@mit.edu:

> According to getpwnam(3):
>
>   An application that wants to determine its user's home directory
>   should inspect the value of HOME (rather than the value
>   getpwuid(getuid())->pw_dir) since this allows the user to modify
>   their notion of "the home directory" during a login session.

So there is indeed a behavior change, but it's wanted and documented in the
release notes.



pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #17650: For the sixth time, the clipping function in the 120 partition table planning stage fails
Next
From: Julien Rouhaud
Date:
Subject: Re: BUG #17649: With libpg5 15.0 psql 10.22 uses HOME variable instead of uid and /etc/passwd to select .pgpass file