H Dominick, thanks for the quick reply again, and for getting me over the hump. I went with the changes to the .te file, and am now getting the process started in the right domain. For completeness sake, here the following info: [proxyuser@lime cz]$ sudo sesearch -SCT --allow -s unconfined_t -t CZtp_exec_t <snip> Found 1 semantic te rules: type_transition unconfined_t CZtp_exec_t : process CZtp_t; The process now shows up with: [proxyuser@lime target]$ ps -efZ | grep CZtp unconfined_u:unconfined_r:CZtp_t:s0 501 6355 5903 0 15:26 pts/1 00:00:00 /bin/sh ./CZtp On 7/23/2011 9:10 PM, Dominick Grift wrote: > No, but you could add the following to the .te file: > > gen_require(` type unconfined_t; role unconfined_r; ') > CZtp_role(unconfined_r, unconfined_t) > > .. Instead of what i suggested in my previous reply. Both methods should > make the domain transition happen. > > On Sat, 2011-07-23 at 21:03 +0200, Michael Atighetchi wrote: >> One more point. Here is the .if file that sepolgen generated (see below >> between {{{ and }}}). >> Should I manually add the gen_requie and domatrans_pattern lines you >> suggested to that policy ? >> >> Michael >> >> {{{ >> >> ##<summary>policy for CZtp</summary> >> >> >> ######################################## >> ##<summary> >> ## Execute a domain transition to run CZtp. >> ##</summary> >> ##<param name="domain"> >> ##<summary> >> ## Domain allowed access. >> ##</summary> >> ##</param> >> # >> interface(`CZtp_domtrans',` >> gen_require(` >> type CZtp_t, CZtp_exec_t; >> ') >> >> domtrans_pattern($1, CZtp_exec_t, CZtp_t) >> ') >> >> >> ######################################## >> ##<summary> >> ## Execute CZtp in the CZtp domain, and >> ## allow the specified role the CZtp domain. >> ##</summary> >> ##<param name="domain"> >> ##<summary> >> ## Domain allowed access >> ##</summary> >> ##</param> >> ##<param name="role"> >> ##<summary> >> ## The role to be allowed the CZtp domain. >> ##</summary> >> ##</param> >> # >> interface(`CZtp_run',` >> gen_require(` >> type CZtp_t; >> ') >> >> CZtp_domtrans($1) >> role $2 types CZtp_t; >> ') >> >> ######################################## >> ##<summary> >> ## Role access for CZtp >> ##</summary> >> ##<param name="role"> >> ##<summary> >> ## Role allowed access >> ##</summary> >> ##</param> >> ##<param name="domain"> >> ##<summary> >> ## User domain for the role >> ##</summary> >> ##</param> >> # >> interface(`CZtp_role',` >> gen_require(` >> type CZtp_t; >> ') >> >> role $1 types CZtp_t; >> >> CZtp_domtrans($2) >> >> ps_process_pattern($2, CZtp_t) >> allow $2 CZtp_t:process signal; >> ') >> >> }}} >> >> >> >> On 7/23/2011 8:43 PM, Dominick Grift wrote: >>> You are probably missing a domain type transition. >>> >>> running the following command you can see if unconfined_t has a domain >>> type transition defined when it runs executable files with type >>> CZtp_exec_t: >>> >>> sesearch -SCT --allow -s unconfined_t -t CZtp_exec_t >>> >>> if none is specified then you must specify that your calling domain >>> unconfined_t, domain type transitions to CZtp_t when a file with type >>> CZtp_exec_t is executed. >>> >>> You will also need to allow the unconfined_r role the CZtp_t domain. >>> >>> After that you may want to allow unconfined_t to interact with CZtp_t in >>> other ways as well but at least by then the type transition should >>> happen. >>> >>> The policy: >>> >>> gen_require(` type unconfined_t, CZtp_exec_t, CZtp_t; role unconfined_r; >>> ') >>> domtrans_pattern(unconfined_t, CZtp_exec_t, CZtp_t) >>> role unconfined_r types CZtp_t; >>> >>> >>> On Sat, 2011-07-23 at 20:32 +0200, Michael Atighetchi wrote: >>>> Hi, >>>> >>>> I'm trying to create a new policy for a constrained process (started by >>>> an unconstrainted user) and am stuck trying to get the process started >>>> in the right context. >>>> >>>> Here are the steps I followed: >>>> >>>> 0. confirm SELinux status >>>> [proxyuser@lime ~]$ sestatus >>>> SELinux status: enabled >>>> SELinuxfs mount: /selinux >>>> Current mode: permissive >>>> Mode from config file: permissive >>>> Policy version: 24 >>>> Policy from config file: targeted >>>> >>>> [proxyuser@lime ~]$ cat /etc/redhat-release >>>> Fedora release 14 (Laughlin) >>>> >>>> [proxyuser@lime cz]$ id -Z >>>> unconfined_u:unconfined_r:unconfined_t:s0 >>>> >>>> 1. create policy via >>>> >>>> sepolgen -t 3 /home/proxyuser/trunk/aps-base/crumple-zone/target/CZtp >>>> >>>> Note that CZtp is a shell script which in turn calls the JVM. >>>> >>>> [proxyuser@lime cz]$ sudo ./CZtp.sh >>>> Building and Loading Policy >>>> + make -f /usr/share/selinux/devel/Makefile >>>> make: Nothing to be done for `all'. >>>> + /usr/sbin/semodule -i CZtp.pp >>>> + /sbin/restorecon -F -R -v >>>> /home/proxyuser/trunk/aps-base/crumple-zone/target/CZtp >>>> /sbin/restorecon reset >>>> /home/proxyuser/trunk/aps-base/crumple-zone/target/CZtp context >>>> system_u:system_r:CZtp_exec_t:s0->system_u:object_r:CZtp_exec_t:s0 >>>> >>>> 2. Verify that the the CZtp file is labeled properly: >>>> [proxyuser@lime cz]$ ls -lZ >>>> /home/proxyuser/trunk/aps-base/crumple-zone/target/CZtp >>>> -rwxr-xr-x. proxyuser proxyuser system_u:object_r:CZtp_exec_t:s0 >>>> /home/proxyuser/trunk/aps-base/crumple-zone/target/CZtp >>>> >>>> 3. start process >>>> [proxyuser@lime cz]$ cd /home/proxyuser/trunk/aps-base/crumple-zone/target/ >>>> [proxyuser@lime target]$ ./CZtp >>>> >>>> 4. Verify process context >>>> [proxyuser@lime ~]$ ps -efZ | grep -v grep | grep CZtp >>>> unconfined_u:unconfined_r:unconfined_t:s0 501 5789 5734 0 14:22 pts/0 >>>> 00:00:00 /bin/sh ./CZtp >>>> >>>> >>>> Note that the process shows up as unconfined_t, although it was labeled >>>> with CZtp_exec_t. >>>> >>>> What am I missing? >>>> >>>> >>>> >>>> 4. check process context >>>> >> -- Michael Atighetchi Senior Scientist Raytheon BBN Technologies 617-873-1679 matighet@xxxxxxx -- selinux mailing list selinux@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/selinux