Trouble starting postgresql
Alan M. Evans
ame1 at extratech.com
Tue May 30 18:21:57 UTC 2006
On Tue, 2006-05-30 at 10:48, Paul Howarth wrote:
> Alan M. Evans wrote:
> > On Tue, 2006-05-30 at 09:10, Paul Howarth wrote:
> > [ ... ]
> >> If that's all you have, it shouldn't be difficult to fix.
> >>
> >> Set yourself up for making local policy modules:
> >>
> >> # yum install checkpolicy
> >> # cd /root
> >> # mkdir selinux.local
> >> # cd selinux.local
> >> # chcon -R -t usr_t .
> >> # ln -s /usr/share/selinux/devel/Makefile .
> >>
> >> Make a local policy module for this issue, in this directory:
> >>
> >> 1. Create a file postgresql.te with this content:
> >>
> >> module postgresql 0.1;
> >>
> >> require {
> >> class dir search;
> >> class lnk_file read;
> >>
> >> type home_root_t;
> >> type postgresql_t;
> >> type var_lib_t;
> >> };
> >>
> >> # Allow postgresql to read /var/lib/pgsql -> /home/pgsql symlink
> >> # if present
> >> allow postgresql_t var_lib_t:lnk_file read;
> >>
> >> # Allow postgresql to search directory /home
> >> allow postgresql_t home_root_t:dir search;
> >>
> >> 2. Create a file postgresql.fc with this content:
> >>
> >> /home/pgsql -d
> >> gen_context(system_u:object_r:var_lib_t,s0)
> >> /home/pgsql/data(/.*)?
> >> gen_context(system_u:object_r:postgresql_db_t,s0)
> >> /home/pgsql/pgstartup.log --
> >> gen_context(system_u:object_r:postgresql_log_t,s0)
> >>
> >> (that's three long lines)
> >>
> >> 3. Create an empty postgresql.if file:
> >>
> >> # touch postgresql.if
> >>
> >> 4. Build the policy module
> >>
> >> # make
> >>
> >> Install your new policy module:
> >>
> >> # semodule -i postgresql.pp
> >>
> >> Fix file contexts:
> >>
> >> # restorecon -Rv /home/pgsql
> >>
> >> Hopefully that should get you going in enforcing mode.
> >
> > Well, that restorecon set all the contexts back to user_home_t. Ugh.
>
> Ugh indeed. My fix is incomplete. Can you post the output of:
> # semanage fcontext -l | grep pgsql
Sure:
# semanage fcontext -l | grep pgsql
/usr/lib/pgsql/test/regress/pg_regress regular file
system_u:object_r:postgresql_exec_t:s0
/var/lib/pgsql/data(/.*)? all files
system_u:object_r:postgresql_db_t:s0
/home/pgsql/pgstartup.log regular file
system_u:object_r:postgresql_log_t:s0
/var/lib/pgsql/pgstartup.log all files
system_u:object_r:postgresql_log_t:s0
/usr/share/jonas/pgsql(/.*)? all files
system_u:object_r:postgresql_db_t:s0
/home/pgsql directory
system_u:object_r:var_lib_t:s0
/home/pgsql/data(/.*)? all files
system_u:object_r:postgresql_db_t:s0
/usr/lib/pgsql/test/regress/.*\.sh regular file
system_u:object_r:bin_t:s0
/usr/lib/pgsql/test/regres(/.*)? all files
system_u:object_r:postgresql_db_t:s0
> I trust that /home/pgsql is not some user's home directory?
That is correct.
> > After recursively setting the data directory to postgresql_db_t and the
> > logfile to postgresql_log_t, service starts up without complaint. So
> > then:
> >
> > postgresql started... check
> > database located under /home/pgsql... check
> > SELinux enforcing... yep
> > postgresql service not excluded... yes
> > read and write data to db... YES!
> >
> > Excellent. I presume I should keep these SELinux policy source files in
> > a safe place in case this configuration is required again.
>
> I'd keep them around for reference purposes but the policy module should
> survive reboots and base policy updates.
>
> > Thank you so much for your assistance! I have one final question. Do you
> > have any recommendations for decent documentation on SELinux
> > administration? Online is alright, but book recommendations are
> > perfectly welcome.
>
> Not really. I think it's too much of a moving target at the moment to
> find anything that's up to date in print.
>
> > I hope to avoid having to go through this in the future. My goal is
> > really to understand the process. Right now, all I can do is describe
> > the problem and hope someone can walk me through the solution as you
> > have done. (I learn well from examples, so I know much more now that
> > I've at least gone through it.)
>
> The way I learned about it was by reading the FC3 SELinux/Apache FAQ
> (http://fedora.redhat.com/docs/selinux-apache-fc3/), which is a bit out
> of date now, particularly regarding policy customization, hanging out on
> fedora-selinux-list, and getting my own systems working to my own
> satisfaction in enforcing mode.
>
> The online documentation is getting better, and a good place to start is
> probably: http://fedoraproject.org/wiki/SELinux
I'll have a look at those, and probably lurk the fedora-selinux-list for
awhile. You've been very helpful.
-Alan
More information about the users
mailing list