SELinux Operations: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
(Created page with "=Internal= * SELinux Subjects")
 
No edit summary
Line 2: Line 2:


* [[selinux#Subjects|SELinux Subjects]]
* [[selinux#Subjects|SELinux Subjects]]
=Get the SELinux Security Context for a Directory=
<pre>
ls -lZ <dir>
</pre>
=Diagnosing and Fixing SELinux Problems=
If you have a suspicion that SELinux may be at the root of your problems, run:
<pre>
sealert -a /var/log/audit/audit.log
</pre>
You may get an output similar to the following one, which helps diagnose the problem:
<pre>
[...]
SELinux is preventing /usr/sbin/httpd from write access on the file manager.node.nodes.lock.
[...]
</pre>
Then use <tt>audit2allow</tt> to parse the audit logs and generate the SELinux policy to allow a denied operation.
<pre>
grep httpd /var/log/audit/audit.log | audit2allow
</pre>
<pre>
#============= httpd_t ==============
allow httpd_t httpd_log_t:file write;
</pre>
After you see it, you can write the policy in a file:
<pre>
grep httpd /var/log/audit/audit.log | audit2allow -M mysepolicy
</pre>
This will generate two files: a binary .pp file and a text .te file.
Apply the policy with:
<pre>
semodule -i mysepolicy.pp
</pre>
The policy such applies survives a reboot.

Revision as of 23:08, 8 January 2016

Internal

Get the SELinux Security Context for a Directory

ls -lZ <dir>

Diagnosing and Fixing SELinux Problems

If you have a suspicion that SELinux may be at the root of your problems, run:

sealert -a /var/log/audit/audit.log

You may get an output similar to the following one, which helps diagnose the problem:

[...]
SELinux is preventing /usr/sbin/httpd from write access on the file manager.node.nodes.lock.
[...]

Then use audit2allow to parse the audit logs and generate the SELinux policy to allow a denied operation.

grep httpd /var/log/audit/audit.log | audit2allow
#============= httpd_t ==============
allow httpd_t httpd_log_t:file write;

After you see it, you can write the policy in a file:

grep httpd /var/log/audit/audit.log | audit2allow -M mysepolicy

This will generate two files: a binary .pp file and a text .te file.

Apply the policy with:

semodule -i mysepolicy.pp

The policy such applies survives a reboot.