[augeas-devel] Some ideas about how to use Augeas with IPA

Dmitri Pal dpal at redhat.com
Tue May 13 18:38:40 UTC 2008


Hi David,

Now I understand the case with the validation.
Here is the case when I had some problems.

File:
===================================================================
# This is the SELinux file

system_u;*;*;system_u;s0-s0:c0.c1023
root;redsox.boston.redhat.com;*;unconfined_u;s0-s0:c0.c1023
dwalsh;people.redhat.com;*;xguest_u;s0
dwalsh;people.fedoraproject.com;*;xguest_u;s0
dwalsh;redline.boston.redhat.com;*;user_u;s0
dwalsh;redsox.boston.redhat.com;*;unconfined_u;s0-s0:c0.c1023
dwalsh;redsox.boston.redhat.com;ssh;guest_u;s0-s0:c0.c1023
+engineering;redsox;ssh;staff_u;s0-s0:c0.c1023
+engineering;*;ssh;staff_u;s0-s0:c0.c1023
+engineering;*;*;staff_u;s0-s0:c0.c1023
*;*;xdm;xguest_u;s0
*;*;*;guest_u;s0
===========================================================

Lenses:
===========================================================

(* Parsing SELinux file *)

module Selinux =
  autoload xfm

  let sep = del /[ \t]*;[ \t]*/ ";"

  let eol = Util.del_str "\n"

  let comment = [ del /#.*\n/ "# " ]
  let emptyln = [ del /[ \t]*\n/ "\n" ]
  let word = /[^# \n\t;]+/
  let record = [ seq "rule" .  [ label "user" . store  word ] . sep .
                               [ label "machine" . store word ] . sep .
                               [ label "service" .  store word ] . sep .
                               [ label "seuser". store word ] . sep .
                               [ label "mls" . store word ] . eol ]

  let lns = ( emptyln | comment | record ) *

  let xfm = transform lns (incl "/etc/selinux/targeted/senew")

(* Local Variables: *)
(* mode: caml *)
(* End: *)

======================================================

Tree

augtool> ls /files/etc/selinux/targeted/senew/*
user = system_u
machine = *
service = *
seuser = system_u
mls = s0-s0:c0.c1023
user = root
machine = redsox.boston.redhat.com
service = *
seuser = unconfined_u
mls = s0-s0:c0.c1023
user = dwalsh
machine = people.redhat.com
service = *
seuser = xguest_u
mls = s0
user = dwalsh
machine = people.fedoraproject.com
service = *
seuser = xguest_u
mls = s0
user = dwalsh
machine = redline.boston.redhat.com
service = *
seuser = user_u
mls = s0
user = dwalsh
machine = redsox.boston.redhat.com
service = *
seuser = unconfined_u
mls = s0-s0:c0.c1023
user = dwalsh
machine = redsox.boston.redhat.com
service = ssh
seuser = guest_u
mls = s0-s0:c0.c1023
user = +engineering
machine = redsox
service = ssh
seuser = staff_u
mls = s0-s0:c0.c1023
user = +engineering
machine = *
service = ssh
seuser = staff_u
mls = s0-s0:c0.c1023
user = +engineering
machine = *
service = *
seuser = staff_u
mls = s0-s0:c0.c1023
user = *
machine = *
service = xdm
seuser = xguest_u
mls = s0
user = *
machine = *
service = *
seuser = guest_u
mls = s0

============================================================
Commands

augtool> set /files/etc/selinux/targeted/senew/100/user test
augtool> set /files/etc/selinux/targeted/senew/100/machine test-machine
augtool> set /files/etc/selinux/targeted/senew/100/service test-service
augtool> set /files/etc/selinux/targeted/senew/100/seuser test-role
augtool> set /files/etc/selinux/targeted/senew/100/mls bla:bla:bla
augtool> save
augtool> 

As a result a new line in file appears

test;test-machine;test-service;test-role;bla:bla:bla

Now I update it:

augtool> set /files/etc/selinux/targeted/senew/100/user test;user
augtool> save

Save should have failed since it creates the file that can't be parsed
back properly. It succeeds and file now has:

test;user;test-machine;test-service;test-role;bla:bla:bla

===============================================================

As for other issues, unfortunately we do not have the code to do what I
am talking about. But I will try to create some examples to illustrate
the issues. It will take me some time since I am focusing on other
things at the moment and not ready to start developing things myself.

Thanks,
Dmitri
 




More information about the augeas-devel mailing list