Bug 732072

Summary: AVC when updating cluster configuration
Product: Red Hat Enterprise Linux 6 Reporter: Nate Straz <nstraz>
Component: selinux-policyAssignee: Miroslav Grepl <mgrepl>
Status: CLOSED NOTABUG QA Contact: Milos Malik <mmalik>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.2CC: dwalsh, mmalik
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-08-19 18:27:22 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Nate Straz 2011-08-19 17:18:20 UTC
Description of problem:

While running a test which updates cluster.conf to add and remove nodes, I ran into the following error when running `cman_tool version -r.`

Unable to update relaxng schema: /usr/sbin/ccs_update_schema: line 375: /var/lib/cluster/rng_update.lock: Permission denied
cman_tool: Not reloading, generic error running ccs_config_validate

I believe this was caused by the following AVC:

type=SYSCALL msg=audit(1313704814.087:406): arch=c000003e syscall=2 success=no exit=-13 a0=28715f0 a1=241 a2=1b6 a3=fffffffffffffff0 items=0 ppid=8051 pid=8053 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="ccs_update_sche" exe="/bin/bash" subj=system_u:system_r:corosync_t:s0 key=(null)
type=AVC msg=audit(1313704823.999:407): avc:  denied  { write } for  pid=8402 comm="ccs_update_sche" name="cluster" dev=dm-0 ino=1442475 scontext=system_u:system_r:corosync_t:s0 tcontext=system_u:object_r:cluster_var_lib_t:s0 tclass=dir

It looks like some of the new binaries need to be labelled correctly.

[root@buzz-01 ~]# ls -Z `rpm -ql cman | grep bin`
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/sbin/ccs_config_dump
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/sbin/ccs_config_validate
lrwxrwxrwx. root root system_u:object_r:bin_t:s0       /usr/sbin/ccs_test -> ccs_tool
-rwxr-xr-x. root root system_u:object_r:corosync_exec_t:s0 /usr/sbin/ccs_tool
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/sbin/ccs_update_schema
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/sbin/cman_notify
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/sbin/cmannotifyd
-rwxr-xr-x. root root system_u:object_r:corosync_exec_t:s0 /usr/sbin/cman_tool
-rwxr-xr-x. root root system_u:object_r:dlm_controld_exec_t:s0 /usr/sbin/dlm_controld
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/sbin/dlm_tool
-rwxr-xr-x. root root system_u:object_r:fenced_exec_t:s0 /usr/sbin/fenced
-rwxr-xr-x. root root system_u:object_r:fenced_exec_t:s0 /usr/sbin/fence_node
-rwxr-xr-x. root root system_u:object_r:fenced_exec_t:s0 /usr/sbin/fence_tool
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/sbin/gfs_control
-rwxr-xr-x. root root system_u:object_r:gfs_controld_exec_t:s0 /usr/sbin/gfs_controld
-rwxr-xr-x. root root system_u:object_r:groupd_exec_t:s0 /usr/sbin/groupd
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/sbin/group_tool
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /usr/sbin/mkqdisk
-rwxr-xr-x. root root system_u:object_r:qdiskd_exec_t:s0 /usr/sbin/qdiskd


Version-Release number of selected component (if applicable):
cman-3.0.12.1-10.el6.x86_64
selinux-policy-3.7.19-107.el6.noarch

How reproducible:
Easily

Steps to Reproduce:
1. update cluster.conf
2. run cman_tool version -r
  
Actual results:

See above

Expected results:

cluster.conf should be updated around the cluster without causing selinux AVCs.

Additional info:

Comment 2 Nate Straz 2011-08-19 18:06:10 UTC
I should mention that I am running the tool from qarsh so we're starting in the qarshd_t context and transitioning to corosync_t

Comment 3 Miroslav Grepl 2011-08-19 18:27:22 UTC
# sesearch -A -s corosync_t -t cluster_var_lib_t
Found 3 semantic av rules:
   allow corosync_t cluster_var_lib_t : file { ioctl read write create getattr setattr lock append unlink link rename open } ; 
   allow corosync_t cluster_var_lib_t : dir { ioctl read write getattr lock add_name remove_name search open } ;


Nate,
something is wrong with your policy. Try to reinstall.