Commit graph

454 commits

Author SHA1 Message Date
Steve Beattie
d0edb879b8 utils/easyprof: fix regression test when apparmor-easyprof is not installed
Bug: https://bugs.launchpad.net/bugs/1294848

This patch fixes the testsuite for aa-easyprof when the easyprof
utilities and configuration files are not installed in the system.
What was happening was that verify_manifest was calling parse_args()
without the synthetic arguments created by the test case and passing
the result to AppArmorEasyProfile(). Because parse_args() didn't
have the synthetic arguments, it would parse the actual command line
arguments passed to the testscript, which of course didn't specify the
alternate configuration file location. This would work when easyprof
had been installed in the system, because the fallback configuration
file in /etc/apparmor/easyprof.conf would exist and specify template
and policy group locations. Without that, though, the tests would abort
due to not knowing the location of the templates and policy groups.

This patch fixes the issue by passing the synthetic argument list
to verify_manifest, which uses that when calling parse_args(). A
debugging statement that states which conffile is being used when
AppArmorEasyProfile is being instantiated.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Tyler Hicks <tyhicks@canonical.com>
2014-03-19 22:02:53 -07:00
Christian Boltz
5f3fc904b5 aa-genprof: fix last_audit_entry_time()
last_audit_entry_time() was waiting forever because 
subprocess.check_output() started tail without any parameters.
Fixed by removing shell=True (default is shell=False).

Also fix the regex ("^.*", the dot was missing)


Acked-by: Steve Beattie <steve@nxnw.org>
2014-03-20 00:10:13 +01:00
Steve Beattie
ad2973e89f Merge from launchpad translations:
- added beginning of utils translations for Polish and Swedish
- Some rejiggering of existing utils translations; I don't think any
  existing translations got lost, but there are new missing entries
- A whole bunch of comment updating for the parser translations

Acked-by: Steve Beattie <steve@nxnw.org>
2014-03-18 10:14:24 -07:00
Steve Beattie
19cf0fd89d merge from trunk 2014-03-18 10:02:27 -07:00
Launchpad Translations on behalf of apparmor-dev
12d13a4a33 Launchpad automatic translations update. 2014-03-18 05:31:37 +00:00
Kshitij Gupta
d9deb90953 Fix comments when multiple profiles in a single file
Signed-off-by: Kshitij Gupta <kgupta8592@gmail.com>
Acked-by: Christian Boltz <apparmor@cboltz.de>
2014-03-16 20:36:42 +05:30
Launchpad Translations on behalf of apparmor-dev
7d96d41f8e Launchpad automatic translations update. 2014-03-11 05:30:43 +00:00
Steve Beattie
579aa7cb3e utils: add simple parsing of multi-line rules [v3]
D-Bus rules in particular seem to get written as multi-line rules. This
patch adds very simple hackish support for multiple lines. Essentially,
what it does is if the parsing of a line doesn't match anything and
falls all the way through, it saves the line and prepends it to the next
line that occurs in the profile, but *only* if the line does not have a
trailing comma to indicate the end of a rule. If the trailing comma
exists, then it assumes that it's a rule that it doesn't understand and
aborts.

With this patch, the simpler tools (aa-enforce, aa-complain, etc.) can
parse policies containing multi-line rules to an extent and continue to
function correctly. Again, aa-logprof and aa-genprof may have issues on
the writing back of profiles, so some assistance testing here would be
appreciated.

Some testcases are added to exercise the regex that looks for a rule
with a trailing comma but can still handle rules that have (,) or {,}
in them.

Patch history:
  v1 - initial version
  v2 - simplify and rearrange rule-ending comma search regex, since
       we only care about the trailing comma
     - add a new regex to search for trailing comments to filter out
     - simplify reset of lastline variable
     - restructure tests into a new script, and add more tests
  v3 - add additional testcases, most of which are problematic and thus
       commented out :(

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
Acked-by: Christian Boltz <apparmor@cboltz.de>
2014-03-07 10:04:57 -08:00
Steve Beattie
0e33e27401 utils: add very limited dbus rule support
This patch adds very limited support for very dumb parsing of dbus
rules. Basically, it stores dbus rules as raw strings wrapped in
a class.

There's class structure to indicate how I'd like to see fuller future
support for dbus rules to be implemented and act as a guidepost for
how to handle most rules, moving away from the giant structure of
nested dictionaries. A stub test script is included as well, with a
modification to the make check target to set the PYTHONPATH to point
in the right place.

With this patch, aa-audit, aa-autodep, aa-complain, aa-disable,
and aa-enforce all function for me. aa-logprof and aa-genprof have
functionality issues for me at the moment (one of them dumps a
backtrace even without this patch), and I'm not sure the writing out
of dbus rules is completely implemented for modified profiles.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-07 09:58:54 -08:00
Steve Beattie
2eb307661f utils: split out aa-genprof command
This patch splits out the genprof tool functionality into a separate
command function, merging with the use_autodep function that already
existed.

Patch history:
 v1 - initial revision
 v2 - mark strings for translation and modify message when a profile
      name is passed to aa-autodep, rather than a program name/path.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-06 11:54:38 -08:00
Steve Beattie
d37de1fd46 utils: split out aa-audit function
This patch moves the audit functionality to an audit specific command
function.

As an aside, the -r option is left in place here, because aa-audit
is a bit orthogonal to aa-enforce, aa-complain, and aa-disable.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-06 11:52:00 -08:00
Steve Beattie
0f32b02deb utils: split out aa-complain function
This patch creates a separate tool.cmd_complain function, as well as
removes the -r remove option, to match aa-enforce and aa-disable.
It also cleans up some bits in aa-enforce now that aa-complain and
aa-enforce have been separated.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-06 11:51:00 -08:00
Steve Beattie
a18b499552 utils: split out aa-enforce function
This patch splits out the aa-enforce functionality into a separate
method in the aa_tools class.  It also removes one last reference to
the no-longer-existent -r option in the aa-enforce manpage.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-06 11:49:43 -08:00
Steve Beattie
eb76275cea utils: let aa-disable take profile name as arguments
This patch modifies the aa-disable tool implementation to allow it to
take a profile name (rather than a program name) as the argument(s)
for what to disable, as this was supported behavior in the perl
tools. (The rest of the commands that make use of the aa_tools.act()
method have not been exercised with this patch in place, as further
patches will separate those out.)

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-06 11:48:09 -08:00
Steve Beattie
bea00cf66b utils: two minor cleanups in aa.py
This patch removes a debugging print statement accidentally left in,
as well as a duplicated initialization to a variable, and moves the
variable init closer to the declaration that the variable is a global.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-06 10:34:08 -08:00
Steve Beattie
daf437f4e3 utils: don't delete tmpdir when debugging test-aa-easyprof.py
It's not useful to report the location of the temporary directory for
each test if you're going to immediately delete it.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-06 10:30:14 -08:00
Steve Beattie
390cfb2cd5 utils: fix apparmor.ui references in aa-genprof
aa-genprof was incorrectly trying to refer to UI_xxx functions in
apparmor.aa rather than the correct apparmor.ui. This patch fixes the
issue.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-06 10:22:26 -08:00
Steve Beattie
7580a02c6c utils: remove generated vim manpage on make clean
Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-06 10:20:21 -08:00
Steve Beattie
07bcb79b1d utils: use realpath of tmpdir in test-aa-easyprof.py
The relative directory tests in test-aa-easyprof.py were failing when
TMPDIR pointed to a directory that was a symlink, because the generated
tmpdir path was not the same as the realpath that easyprof resolved to.
This patch sets the tmpdir to the realpath of the result of the
tempfile.mkdtemp() to avoid the issue.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Christian Boltz <apparmor@cboltz.de>
2014-03-05 13:13:39 -08:00
Steve Beattie
6ceb2030f9 utils: more verbose fail messages for relative dir tests in test-aa-easyprof.py
Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Christian Boltz <apparmor@cboltz.de>
2014-03-05 13:12:12 -08:00
Steve Beattie
6cf4cbea21 utils: remove aa-enforce '--remove' option
This patch removes the '--remove' option on aa-enforce as well as from
the man page. It also removes the test entry that contains it, but I
don't think this is entirely correct because I think the second half
of the test is dependent on the (now deleted) first half of the test.

(It also removes a missed reference to --revert in the aa-disable man
page.)

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-03 14:59:47 -08:00
Steve Beattie
3575ca4ac9 utils: remove aa-disable non-functional '-r' option
This patch removes the non-funcional -r option for aa-disable, as
well as the test and manpage documentation for it.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-03 13:29:32 -08:00
Steve Beattie
4f8dea0db8 utils: make test-aa-easyprof.py cope with UsrMove
The test-aa-easyprof.py script has '/bin/ls' hardcoded as a path;
however, on systems that have undergone UsrMove, this is a symlink to
/usr/bin/ls. This patch fixes the issue by getting the realpath of
/bin/ls and storing it as an instance field.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-03 13:26:41 -08:00
Steve Beattie
fc24ae63ef s patch splits out the disable functionality from the
apparmor/tools.py:act() method into a separate cmd_disable()
method. The intent is to unwind the logic in act() into smaller, more
digestible chunks, while sharing commonality via helper functions
(e.g. the added get_next_to_profile() function).

A secondary driver of this change is that the tools fail when used
against the trunk profiles, due to act() forcing all the profiles to
be read and the tools not understanding the recently added dbus rules
(they were intentionally ignored as part of scoping the rewrite).
Unfortunately, this is not a solution for aa-enforce, aa-complain, etc.
as they are expected to know enough about profiles to understand and
update profile flags.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Christian Boltz <apparmor@cboltz.de>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-03-03 07:50:12 -08:00
Christian Boltz
6a44e0eef5 add recursive_print() to common.py.
It prints a data structure in an easily readable output and is quite 
useful for debugging. However, I don't recommend to call it in 
production code ;-)

Acked-by: Kshitij Gupta <kgupta8592 at gmail.com>
2014-02-28 23:31:16 +01:00
Kshitij Gupta
781d237798 Fix tests for new tools.
Update path to tools in minitools_test.py
Fix assert values in config_test.py

Signed-off: Kshitij Gupta <kgupta8592@gmail.com>
Acked-by: Christian Boltz <apparmor@cboltz.de>
2014-02-28 16:09:00 +05:30
Steve Beattie
5045d74716 utils: add common symlink to test/ clean target, to compensate for
packaging systems that do a make clean while trying to represent
changes.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-02-27 16:47:06 -08:00
Steve Beattie
20f26a0680 utils: hook in vim generator sanity test into make check
Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-02-27 16:25:00 -08:00
Steve Beattie
0dede73da8 utils: fix path in test-aadecode.py and push make check into the test/
subdirectory.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2014-02-27 16:23:35 -08:00
Seth Arnold
fc7a7004da Fix module import errors, remove extraneous newlines
AttributeError: 'module' object has no attribute 'UI_Info'
AttributeError: 'module' object has no attribute 'open_file_read'
AttributeError: 'module' object has no attribute 'check_for_apparmor'

Signed-off-by: Seth Arnold <seth.arnold@canonical.com>
Acked-by: Steve Beattie <steve@nxnw.org>
2014-02-27 14:53:25 -08:00
Christian Boltz
7e60928b34 aa-autodep (and therefore also aa-genprof) created a nearly-empty
profile files with only tunables/global, but no profile. This patch 
makes sure that the profile itsself is also written to the profile file.

Without the added line, filelist[prof_filename]['profiles'].keys()) in 
serialize_profile was empty, which means the loop that writes the 
profile was never executed.

Acked-by: Steve Beattie <steve@nxnw.org>
2014-02-26 23:41:00 +01:00
Christian Boltz
410e1eb132 Change aa-complain / set_complain() to (only) add the complain flag.
We don't need to additionally create a force-complain symlink.

Acked-by: Steve Beattie <steve@nxnw.org>
2014-02-25 13:17:46 +01:00
Steve Beattie
361f08bad8 utils: fix cmd reference in apparmor/tools.py
This patch fixes up the parser command invocation via
apparmor/common.py:cmd(), as it handles stdout/stderr redirection,
and the redirection that was being attempted were being handed as
arguments to the parser.

Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Christian Boltz <apparmor@cboltz.de>
2014-02-24 14:22:35 -08:00
Christian Boltz
a5d003f90d new profile tools - handling of "(F)inish"
Let "(F)inish" ask the user if he wants to save the changed profiles 
before exiting, instead of aborting without saving (we already have 
Abo(r)t for that ;-)


Acked-by: Kshitij Gupta <kgupta8592@gmail.com>
2014-02-24 20:56:28 +01:00
Christian Boltz
ce8429523d fix two (unrelated) issues in common.py:
- add some debug logging in valid_path()
- fix a py2 incompability in DebugLogger.__init__ (OSError vs. IOError)

Acked-by: Kshitij Gupta <kgupta8592@gmail.com>
2014-02-24 20:34:21 +01:00
Christian Boltz
2e3d542c28 Profile parsing: some fixes around the REPOSITORY: line
- use the (new) "parts" variable for the line.split result to make the 
  code less confusing
- change the line.startswith to check for "REPOSITORY:" (note the 
  added ":") like it was in the code before my previous patch.
- make the check for "NEVERSUBMIT" more exact
- print a warning on invalid REPOSITORY: lines and make sure to keep
  them as unmodified line (it might just be a "normal" comment someone
  added manually)


Acked-by: Kshitij Gupta <kgupta8592@gmail.com> (on IRC)
2014-02-24 19:20:11 +01:00
Christian Boltz
295a836324 new profile tools: preserve full initial comment
This patch
- preserves the complete initial comment
- makes sure whitespace inside the comment is kept (except leading 
  whitespace - line.trim() is still applied).
- no longer removes the "# vim:syntax" line

Note: I didn't test if handling the "REPOSITORY" line still works (in
theory it should), but without a working repo, I don't care too much ;-)


Acked-by: Steve Beattie <steve@nxnw.org>
2014-02-22 13:09:15 +01:00
Launchpad Translations on behalf of apparmor-dev
1c731c92fd Launchpad automatic translations update. 2014-02-22 05:26:17 +00:00
Launchpad Translations on behalf of apparmor-dev
00ca3bf967 Launchpad automatic translations update. 2014-02-21 05:14:03 +00:00
Steve Beattie
e4c534fc99 merge apparmor trunk back into the tree 2014-02-20 17:37:42 -08:00
Launchpad Translations on behalf of apparmor-dev
ff2be24203 Launchpad automatic translations update. 2014-02-18 05:12:47 +00:00
Launchpad Translations on behalf of apparmor-dev
20e0063dfc Launchpad automatic translations update. 2014-02-16 05:28:50 +00:00
Steve Beattie
b98c40181c utils/apparmor/yasti.py: remove XXX comments; when the time comes for
someone to attempt to see if things work with the python ycp bindings,
they'll discover whether the functions are the right ones or not.
2014-02-14 22:52:31 -08:00
Steve Beattie
7fab3a7a69 Sync with trunk. 2014-02-14 14:47:18 -08:00
Steve Beattie
ec7676bdec utils/aa-*: adjust python shebang lines to ease rewriting to an
alternate python if installed via the python-tools-setup.py script.
2014-02-14 14:42:19 -08:00
Steve Beattie
a482139616 utils/aa-autodep: make --force be a boolean argument, not require an additional value 2014-02-14 12:25:13 -08:00
Steve Beattie
3cbbeac60d utils/apparmor/tools.py: fix misimport of UI stuff as well as a paren
depth error in use_autodep()
2014-02-14 12:19:55 -08:00
Steve Beattie
edb874a2de utils/apparmor/aa.py: fix confusion over name vs data structure 2014-02-14 11:54:02 -08:00
Steve Beattie
4d2b9b5c5d utils/apparmor/aa.py: fix dict/list confusion in create_new_profile() 2014-02-14 11:20:20 -08:00
Seth Arnold
b432cf45c9 Add aa-easyprof and easyprof.py and related pieces from the Ubuntu
apparmor packaging.

These were originally 0030-easyprof-sdk.patch and
0037-easyprof-sdk-pt2.patch. Jamie posted an updated
0030-easyprof-sdk_v2.patch and I squashed both patches into one commit.

Acked-By: Jamie Strandboge <jamie@canonical.com>
2014-02-13 17:53:40 -08:00