All of lore.kernel.org
 help / color / mirror / Atom feed
From: dac.override@gmail.com (Dominick Grift)
To: refpolicy@oss.tresys.com
Subject: [refpolicy] [PATCH v2 1/5] wm: update the window manager (wm) module and enable its role template (v5)
Date: Wed, 14 Dec 2016 22:52:10 +0100	[thread overview]
Message-ID: <de57baa3-0dfc-1d41-ea1b-5a7d55607c2e@gmail.com> (raw)
In-Reply-To: <5c4ca0ef-3ab6-ffb4-9a1c-a0a1402b0e5b@gmail.com>

On 12/14/2016 10:45 PM, Dominick Grift wrote:
> On 12/14/2016 10:34 PM, Dominick Grift wrote:
>> On 12/14/2016 10:23 PM, Chris PeBenito via refpolicy wrote:
>>> On 12/14/16 10:33, Guido Trentalancia via refpolicy wrote:
>>>> Hello again.
>>>>
>>>> I am back with a possible solution to the problem that you described...
>>>>
>>>> On Wed, 14/12/2016 at 15.37 +0100, Guido Trentalancia via refpolicy
>>>> wrote:
>>>>> On Wed, 14/12/2016 at 21.01 +0800, Jason Zaman wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 14 Dec 2016 09:54, "Guido Trentalancia via refpolicy" <refpolicy
>>>>>> @o
>>>>>> ss.tresys.com> wrote:
>>>>>> Enable the window manager role (wm contrib module) and update
>>>>>> the module to work with gnome-shell.
>>>>>>
>>>>>> This patch requires the following recently posted patch for the
>>>>>> games module:
>>>>>>
>>>>>> [PATCH v3 1/2] games: general update and improved pulseaudio
>>>>>> integration
>>>>>> http://oss.tresys.com/pipermail/refpolicy/2016-December/008679.html
>>>>>>
>>>>>> This patch has received some testing with the following two
>>>>>> configurations:
>>>>>> - gnome-shell executing in normal mode (with display managers
>>>>>> other than gdm, such as xdm from XOrg);
>>>>>> - gnome-shell executing in gdm mode (with the Gnome Display
>>>>>> Manager).
>>>>>>
>>>>>> Patches 3/5, 4/5 and 5/5 are needed when gnome-shell is used
>>>>>> in conjunction with gdm.
>>>>>>
>>>>>> Since the window managers are not limited by gnome-shell, this
>>>>>> latter
>>>>>> version of the patch (along with part 2/5) uses separate optional
>>>>>> conditionals for the gnome and wm role templates.
>>>>>>
>>>>>> Signed-off-by: Guido Trentalancia <guido@trentalancia.net>
>>>>>> ---
>>>>>>  policy/modules/contrib/colord.te   |    5 ++
>>>>>>  policy/modules/contrib/dbus.te     |    5 ++
>>>>>>  policy/modules/contrib/wm.if       |   43 +++++++++++++++++-
>>>>>>  policy/modules/contrib/wm.te       |   88
>>>>>> ++++++++++++++++++++++++++++++++++++-
>>>>>>  policy/modules/roles/staff.te      |    8 ++-
>>>>>>  policy/modules/roles/sysadm.te     |    4 +
>>>>>>  policy/modules/roles/unprivuser.te |    8 ++-
>>>>>>  7 files changed, 155 insertions(+), 6 deletions(-)
>>>>>
>>>>> [...]
>>>>>
>>>>>>
>>>>>> @@ -55,10 +96,51 @@ optional_policy(`
>>>>>>  ')
>>>>>>
>>>>>>  optional_policy(`
>>>>>> +       consolekit_dbus_chat(wm_domain)
>>>>>> +')
>>>>>> +
>>>>>> +optional_policy(`
>>>>>>         devicekit_dbus_chat_power(wm_domain)
>>>>>>  ')
>>>>>>
>>>>>>  optional_policy(`
>>>>>> +       evolution_domtrans(wm_domain)
>>>>>> +
>>>>>> +       optional_policy(`
>>>>>> +               evolution_dbus_chat(wm_domain)
>>>>>> +               evolution_alarm_dbus_chat(wm_domain)
>>>>>> +       ')
>>>>>> +')
>>>>>> +
>>>>>> +optional_policy(`
>>>>>> +       games_domtrans(wm_domain)
>>>>>> +
>>>>>> +       optional_policy(`
>>>>>> +               games_dbus_chat(wm_domain)
>>>>>> +       ')
>>>>>> +')
>>>>>> +
>>>>>> +optional_policy(`
>>>>>> +       java_domtrans(wm_domain)
>>>>>> +')
>>>>>> +
>>>>>> +optional_policy(`
>>>>>> +       mono_domtrans(wm_domain)
>>>>>> +')
>>>>>> +
>>>>>> +optional_policy(`
>>>>>> +       mozilla_domtrans(wm_domain)
>>>>>> +
>>>>>> +       optional_policy(`
>>>>>> +               mozilla_dbus_chat(wm_domain)
>>>>>> +       ')
>>>>>> +')
>>>>>> +
>>>>>> +optional_policy(`
>>>>>> +       mplayer_domtrans(wm_domain)
>>>>>> +')
>>>>>> +
>>>>>> +optional_policy(`
>>>>>>         networkmanager_dbus_chat(wm_domain)
>>>>>>  ')
>>>>>>
>>>>>> Whoa are we going to have to add every single application to
>>>>>> wm_domain to be able to run it? That will get annoying super fast.
>>>>>> Isn't there an application_domain attribute we can use? If there
>>>>>> isn't we might want to reverse this so X application types instead
>>>>>> declare that wm can run them (something like the application_type
>>>>>> interface)
>>>>>
>>>>> I am now trying to get back to you on this, provided that I
>>>>> understood
>>>>> the meaning of what you proposed...
>>>>>
>>>>> I suppose you are suggesting to use an interface such as
>>>>> wm_application() in the module of each application that needs to be
>>>>> run
>>>>> by the window manager and avoid calling applicationname_domtrans()
>>>>> from
>>>>> the wm module.
>>>>>
>>>>> Even if that was possible, there would be a loss of visibility in the
>>>>> wm module about what applications it can actually run.
>>>>>
>>>>> The latter is undesirable in my opinion and defeats the purpose of
>>>>> having a separate wm module to control what the window manager can
>>>>> and
>>>>> cannot do, because at that point it would be each application module
>>>>> which decides if the application can run or not in the window
>>>>> manager.
>>>>
>>>> It is possible to achieve what you are seeking. You just need to use
>>>> the following interface (in policy/modules/contrib/wm.if):
>>>>
>>>> [cut]
>>>>
>>>> ########################################
>>>> ## <summary>
>>>> ##	Create a domain for applications
>>>> ##	that are launched by the window
>>>> ##	manager.
>>>> ## </summary>
>>>> ## <desc>
>>>> ##	<p>
>>>> ##	Create a domain for applications that are launched by the
>>>> ##	window manager (implying a domain transition).  Typically
>>>> ##	these are graphical applications that are run interactively.
>>>> ##	</p>
>>>> ##	<p>
>>>> ##	The types will be made usable as a domain and file, making
>>>> ##	calls to domain_type() and files_type() redundant.
>>>> ##	</p>
>>>> ## </desc>
>>>> ## <param name="target_domain">
>>>> ##	<summary>
>>>> ##	Type to be used in the domain transition as the application
>>>> ##	domain.
>>>> ##	</summary>
>>>> ## </param>
>>>> ## <param name="entry_point">
>>>> ##	<summary>
>>>> ##	Type of the program to be used as an entry point to this domain.
>>>> ##	</summary>
>>>> ## </param>
>>>> ## <param name="source_domain">
>>>> ##	<summary>
>>>> ##	Type to be used as the source window manager domain.
>>>> ##	</summary>
>>>> ## </param>
>>>> ## <infoflow type="none"/>
>>>> #
>>>> interface(`wm_application_domain',`
>>>> 	gen_require(`
>>>> 		attribute wm_domain;
>>>> 	')
>>>>
>>>> 	application_type($1)
>>>> 	ubac_constrained($1)
>>>> 	application_executable_file($2)
>>>> 	domtrans_pattern(wm_domain, $2, $1)
>>>> ')
>>>>
>>>> [cut]
>>>>
>>>> and then, for each application that you want to enable from the window
>>>> manager, you need to call the interface wm_application_domain() from
>>>> the application module similarly to the way the
>>>> userdom_user_application_domain() interface is currently called.
>>>>
>>>> For example, for mozilla:
>>>>
>>>> [cut]
>>>>
>>>> --- refpolicy-git-orig/policy/modules/contrib/mozilla.te	2016-12-09 22:29:53.579462880 +0100
>>>> +++ refpolicy-git/policy/modules/contrib/mozilla.te	2016-12-14 16:28:46.055294184 +0100
>>>> @@ -22,6 +39,7 @@ type mozilla_exec_t;
>>>>  typealias mozilla_t alias { user_mozilla_t staff_mozilla_t sysadm_mozilla_t };
>>>>  typealias mozilla_t alias { auditadm_mozilla_t secadm_mozilla_t };
>>>>  userdom_user_application_domain(mozilla_t, mozilla_exec_t)
>>>> +wm_application_domain(mozilla_t, mozilla_exec_t)
>>>
>>> I'd tend to prefer it this way, as long as you make this call optional.
>>
>> In the bigger picture this solution is a bit unwieldy in my view. There
>> are various components that need to be able to run programs on behalf of
>> the user. In this case it is gnome shell, but for example systemd --user
>> needs the same, and there are various other instances.
>>
>> The solution i have in dssp is not perfect either. But for domain
>> transitions that apply to more than the just shell i
>> use a type attribute.
>>
>> example: mozilla_run(staff_type_attribute, role_attribute)
>>
>> Then i associate the type attribute also with the programs that need to
>> be able to run the programs on behalf of the user.
>>
>> staff_type(staff_wm_t)
>> staff_type(staff_systemd_t)
>>
>> It is not perfect either but atleast it provides a single point of
>> failure. domain transitions apply automatically to all domains that need
>> to be able to run programs on behalf of the user
>>
> 
> Some other examples: "torsocks firefox", "systemd-inhibit firefox".
> 
> So lets say to have 10 user apps. Then you would have to update
> (atleast) these four domains to allow them to run them with the same
> domtrans as well. It gets ugly rather quick and hard to maintain
> 

But in reference policy this does not work well. due to the "_role()"
templates. The role templates also provides access to content, and we do
not want to allow for example staff_wm_t, staff_systemd_t,
staff_inhibit_t, staff_torsocks_t access to mozilla_home_t,
mozilla_tmp_t etc etc

>>
>>>
>>>
>>>>  role mozilla_roles types mozilla_t;
>>>>
>>>>  type mozilla_home_t;
>>>>
>>>> [cut]
>>>>
>>>> I hope this helps.
>>>>
>>>> If the majority of people prefer that the policy changes in this
>>>> direction, despite the side-effects that I have highlighted earlier on,
>>>> I can amend the initial patch.
>>>
>>>
>>>
>>>
>>
>>
> 
> 


-- 
Key fingerprint = 5F4D 3CDB D3F8 3652 FBD8  02D5 3B6C 5F1D 2C7B 6B02
https://sks-keyservers.net/pks/lookup?op=get&search=0x3B6C5F1D2C7B6B02
Dominick Grift

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 648 bytes
Desc: OpenPGP digital signature
Url : http://oss.tresys.com/pipermail/refpolicy/attachments/20161214/96a587b9/attachment.bin 

  reply	other threads:[~2016-12-14 21:52 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-07 17:00 [refpolicy] [PATCH] wm: update the window manager (wm) module and enable its role template Guido Trentalancia
2016-12-08 17:20 ` [refpolicy] [PATCH v2] " Guido Trentalancia
2016-12-08 17:51   ` Dominick Grift
2016-12-08 20:53     ` Guido Trentalancia
2016-12-08 21:13       ` Dominick Grift
2016-12-08 21:51         ` Guido Trentalancia
2016-12-09 22:21   ` [refpolicy] [PATCH v3] " Guido Trentalancia
2016-12-11 20:04     ` Chris PeBenito
2016-12-11 20:13       ` Guido Trentalancia
2016-12-11 20:47         ` Chris PeBenito
2016-12-11 21:56           ` Guido Trentalancia
2016-12-12  2:35             ` Luis Ressel
2016-12-14  0:48     ` [refpolicy] [PATCH 1/5] wm: update the window manager (wm) module and enable its role template (v4) Guido Trentalancia
2016-12-14  1:54       ` [refpolicy] [PATCH v2 1/5] wm: update the window manager (wm) module and enable its role template (v5) Guido Trentalancia
     [not found]         ` <CAPuKSJbhx+9kkU_KK5qX8s6ALknojqTeqmtjrkJR0fkVBn=wWg@mail.gmail.com>
2016-12-14 13:23           ` Guido Trentalancia
2016-12-14 21:25             ` Chris PeBenito
2016-12-14 21:29               ` Guido Trentalancia
2016-12-14 23:43               ` [refpolicy] [PATCH v3 1/5] wm: update the window manager (wm) module and enable its role template (v6) Guido Trentalancia
2016-12-16  0:31                 ` Chris PeBenito
2016-12-16 15:59                   ` [refpolicy] [PATCH v4 1/5 base part] wm: update the window manager (wm) module and enable its role template (v7) Guido Trentalancia
2016-12-17 14:05                     ` Chris PeBenito
2016-12-17 16:56                       ` Guido Trentalancia
2016-12-17 18:06                         ` Chris PeBenito
2016-12-16 15:59                   ` [refpolicy] [PATCH v4 1/5 contrib " Guido Trentalancia
2016-12-14 14:37           ` [refpolicy] [PATCH v2 1/5] wm: update the window manager (wm) module and enable its role template (v5) Guido Trentalancia
2016-12-14 15:33             ` Guido Trentalancia
2016-12-14 21:23               ` Chris PeBenito
2016-12-14 21:34                 ` Dominick Grift
2016-12-14 21:45                   ` Dominick Grift
2016-12-14 21:52                     ` Dominick Grift [this message]
2016-12-14 22:01                       ` Dominick Grift
2016-12-14 22:07                       ` Chris PeBenito
2016-12-14 22:13                         ` Dominick Grift
2016-12-14 22:14                         ` Guido Trentalancia
2016-12-14 22:20                           ` Dominick Grift
2016-12-14  0:48     ` [refpolicy] [PATCH 2/5] userdomain: separate optional conditionals for gnome and wm role templates Guido Trentalancia
2016-12-14  0:48     ` [refpolicy] [PATCH 3/5] networkmanager: enable dbus chat with xdm Guido Trentalancia
2016-12-14 12:44       ` Jason Zaman
2016-12-14 12:48         ` Dominick Grift
2016-12-14  0:49     ` [refpolicy] [PATCH 4/5] policykit: " Guido Trentalancia
2016-12-14  0:49     ` [refpolicy] [PATCH 5/5] rtkit: " Guido Trentalancia
2016-12-14 21:29       ` Chris PeBenito
2016-12-14 23:09         ` [refpolicy] [PATCH v2 " Guido Trentalancia
2016-12-17 16:43           ` Guido Trentalancia
2016-12-17 17:55             ` Chris PeBenito
2016-12-17 18:06               ` [refpolicy] [PATCH v3 " Guido Trentalancia
2016-12-18 22:57                 ` Chris PeBenito

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=de57baa3-0dfc-1d41-ea1b-5a7d55607c2e@gmail.com \
    --to=dac.override@gmail.com \
    --cc=refpolicy@oss.tresys.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.