gpg setuid access error
Bernard
bht@actrix.gen.nz
Sun Jul 1 04:25:02 2001
Hi all, I am lost and I need help.
The gpg program version gnupg-1.0.6-1.i586.rpm, which I installed as
setuid(root) on Redhat Linux 7, fails to access the files of the
caller when permissions are set as specified.
What am I missing? Is this a bug?
Background (refer to gpg.man as in the Windows distribution with the
same version);
BUGS
On many systems this program should be installed as
setuid(root). This is necessary to lock memory pages.
Locking memory pages prevents the operating system from
writing memory pages to disk. If you get no warning
message about insecure memory your operating system
supports locking without being root. The program drops
root privileges as soon as locked memory is allocated.
I executed as root:
chmod u+s /usr/bin/gpg
Then I logged on as another user ("foo") and issued the following
command:
gpg --keyring /home/foo/.gnupg/pubring.pgp --always-trust -r
recipient@somedomain.com -a -e
The errors I get are:
gpg: /home/foo/.gnupgp/secring.gpg: can't create keyring: Permission
denied
gpg: keyblock resource '/home/foo/.gnupgp/secring.gpg': file open
error
... more errors
all /home/foo/.gpg/* files are owned by foo!
permissions of
/home/foo/.gnupgp/secring.gpg
are:
-rw------- 1 foo foo ...
When I change the permission of the binary back with:
chmod u-s /usr/bin/gpg
then I get the expected warning:
Warning: using insecure memory!
but the program otherwise works as expected.
Note:
(the gpg command as above expects clear text input from stdin
(console), which has to be terminated with [Ctrl+D] on Linux.
Any help is highly appreciated.
Bernard
bht@actrix.gen.nz