Trouble starting postgresql

Alan M. Evans ame1 at extratech.com
Tue May 30 17:40:00 UTC 2006


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.

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.

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.

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.)

-Alan




More information about the fedora-list mailing list