All of lore.kernel.org
 help / color / mirror / Atom feed
* PythonSELinux binding problem
@ 2011-07-21 21:33 rarob
  2011-07-22 13:44 ` Stephen Smalley
  2011-07-22 13:46 ` Daniel J Walsh
  0 siblings, 2 replies; 4+ messages in thread
From: rarob @ 2011-07-21 21:33 UTC (permalink / raw)
  To: selinux

Hi,
  I'm using the python selinux bindings to determine if SELinux is
disable/permissive/enforcing.  The following snippet of code works just
fine on RH5 and F10 regardless of the SELinux mode, but fails with an
error on F11/12/13 and RH6 if SELinux is disabled.

$ python -c 'import selinux ; print selinux.security_getenforce()'

Under RH5 and F10 I correctly get the -1/0/1 returns for
disabled/permissive/enforcing, as specified in the man pages for
'security_getenforce'.  Under F11/12/13 and RH6 for permissive and
enforcing I get the correct return values, but if the system is in
disabled mode instead an OSError is thrown for 'No such file or
directory'.  I haven't look at the source for the underlying
security_getenforce() system call, but I suspect is is assuming that the
/selinux pseudo filesystem is populated (as in permissive/enforcing mode),
and is not handling the case where that pseudo filesystem is empty.

For now I've got my python calls wrapped in try/except blocks treating any
exception as SELinux in disabled mode.

I wasn't sure where the best place to log this as a bug is, either for the
libselinux-python package or libselinux itself.

-Rob



--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: PythonSELinux binding problem
  2011-07-21 21:33 PythonSELinux binding problem rarob
@ 2011-07-22 13:44 ` Stephen Smalley
  2011-07-22 14:00   ` Eric Paris
  2011-07-22 13:46 ` Daniel J Walsh
  1 sibling, 1 reply; 4+ messages in thread
From: Stephen Smalley @ 2011-07-22 13:44 UTC (permalink / raw)
  To: rarob; +Cc: selinux, Daniel J Walsh, Eric Paris, Steve Lawrence

On Thu, 2011-07-21 at 17:33 -0400, rarob@travelinglightfarm.net wrote:
> Hi,
>   I'm using the python selinux bindings to determine if SELinux is
> disable/permissive/enforcing.  The following snippet of code works just
> fine on RH5 and F10 regardless of the SELinux mode, but fails with an
> error on F11/12/13 and RH6 if SELinux is disabled.
> 
> $ python -c 'import selinux ; print selinux.security_getenforce()'
> 
> Under RH5 and F10 I correctly get the -1/0/1 returns for
> disabled/permissive/enforcing, as specified in the man pages for
> 'security_getenforce'.  Under F11/12/13 and RH6 for permissive and
> enforcing I get the correct return values, but if the system is in
> disabled mode instead an OSError is thrown for 'No such file or
> directory'.  I haven't look at the source for the underlying
> security_getenforce() system call, but I suspect is is assuming that the
> /selinux pseudo filesystem is populated (as in permissive/enforcing mode),
> and is not handling the case where that pseudo filesystem is empty.
> 
> For now I've got my python calls wrapped in try/except blocks treating any
> exception as SELinux in disabled mode.
> 
> I wasn't sure where the best place to log this as a bug is, either for the
> libselinux-python package or libselinux itself.

I don't know why this would have ever worked, as security_getenforce()
has always returned -1 with errno ENOENT if there is no selinuxfs mount.
Maybe the older python bindings handled this error condition?  The
correct test for enabled/disabled is selinux.is_selinux_enabled(), and
that should be checked prior to calling security_getenforce().

-- 
Stephen Smalley
National Security Agency


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: PythonSELinux binding problem
  2011-07-21 21:33 PythonSELinux binding problem rarob
  2011-07-22 13:44 ` Stephen Smalley
@ 2011-07-22 13:46 ` Daniel J Walsh
  1 sibling, 0 replies; 4+ messages in thread
From: Daniel J Walsh @ 2011-07-22 13:46 UTC (permalink / raw)
  To: rarob; +Cc: selinux

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 07/21/2011 05:33 PM, rarob@travelinglightfarm.net wrote:
> Hi, I'm using the python selinux bindings to determine if SELinux is 
> disable/permissive/enforcing.  The following snippet of code works
> just fine on RH5 and F10 regardless of the SELinux mode, but fails
> with an error on F11/12/13 and RH6 if SELinux is disabled.
> 
> $ python -c 'import selinux ; print selinux.security_getenforce()'
> 
> Under RH5 and F10 I correctly get the -1/0/1 returns for 
> disabled/permissive/enforcing, as specified in the man pages for 
> 'security_getenforce'.  Under F11/12/13 and RH6 for permissive and 
> enforcing I get the correct return values, but if the system is in 
> disabled mode instead an OSError is thrown for 'No such file or 
> directory'.  I haven't look at the source for the underlying 
> security_getenforce() system call, but I suspect is is assuming that
> the /selinux pseudo filesystem is populated (as in
> permissive/enforcing mode), and is not handling the case where that
> pseudo filesystem is empty.
> 
> For now I've got my python calls wrapped in try/except blocks
> treating any exception as SELinux in disabled mode.
> 
> I wasn't sure where the best place to log this as a bug is, either
> for the libselinux-python package or libselinux itself.
> 
> -Rob
> 
> 
> 
> -- This message was distributed to subscribers of the selinux mailing
> list. If you no longer wish to subscribe, send mail to
> majordomo@tycho.nsa.gov with the words "unsubscribe selinux" without
> quotes as the message.

We have modified python to act correctly when it receives and error from
the underlying C Library and throw an exception with the STDERR reported.

I do not believe this is a bug.  And writing exception handling in
python is the correct behaviour, checking for -1 was the incorrect
behaviour from a python point of view.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEUEARECAAYFAk4pfyMACgkQrlYvE4MpobP4+ACbBvgfbP/yQt7lBk8HEQvNAO+O
LcoAl0RWJYGD3IJKEYsMK2NZe72fPEY=
=HGQR
-----END PGP SIGNATURE-----

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: PythonSELinux binding problem
  2011-07-22 13:44 ` Stephen Smalley
@ 2011-07-22 14:00   ` Eric Paris
  0 siblings, 0 replies; 4+ messages in thread
From: Eric Paris @ 2011-07-22 14:00 UTC (permalink / raw)
  To: Stephen Smalley
  Cc: rarob, selinux, Daniel J Walsh, Eric Paris, Steve Lawrence

On Fri, Jul 22, 2011 at 9:44 AM, Stephen Smalley <sds@tycho.nsa.gov> wrote:
> On Thu, 2011-07-21 at 17:33 -0400, rarob@travelinglightfarm.net wrote:
>> Hi,
>>   I'm using the python selinux bindings to determine if SELinux is
>> disable/permissive/enforcing.  The following snippet of code works just
>> fine on RH5 and F10 regardless of the SELinux mode, but fails with an
>> error on F11/12/13 and RH6 if SELinux is disabled.
>>
>> $ python -c 'import selinux ; print selinux.security_getenforce()'
>>
>> Under RH5 and F10 I correctly get the -1/0/1 returns for
>> disabled/permissive/enforcing, as specified in the man pages for
>> 'security_getenforce'.  Under F11/12/13 and RH6 for permissive and
>> enforcing I get the correct return values, but if the system is in
>> disabled mode instead an OSError is thrown for 'No such file or
>> directory'.  I haven't look at the source for the underlying
>> security_getenforce() system call, but I suspect is is assuming that the
>> /selinux pseudo filesystem is populated (as in permissive/enforcing mode),
>> and is not handling the case where that pseudo filesystem is empty.
>>
>> For now I've got my python calls wrapped in try/except blocks treating any
>> exception as SELinux in disabled mode.
>>
>> I wasn't sure where the best place to log this as a bug is, either for the
>> libselinux-python package or libselinux itself.
>
> I don't know why this would have ever worked, as security_getenforce()
> has always returned -1 with errno ENOENT if there is no selinuxfs mount.
> Maybe the older python bindings handled this error condition?  The
> correct test for enabled/disabled is selinux.is_selinux_enabled(), and
> that should be checked prior to calling security_getenforce().

Looks like the change is in my tree (but not upstream)  [not the title
is slightly wrong]

http://git.infradead.org/users/eparis/selinux-userspace.git/commitdiff/958217e94829487815ea3b62b264aa18b466ce4a


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-07-22 14:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-21 21:33 PythonSELinux binding problem rarob
2011-07-22 13:44 ` Stephen Smalley
2011-07-22 14:00   ` Eric Paris
2011-07-22 13:46 ` Daniel J Walsh

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.