mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-09-04 00:05:14 +00:00
Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
12b3b63594 | ||
|
bedcb8c19c | ||
|
c504acb09e | ||
|
39b9985afb | ||
|
2758e2e2a1 | ||
|
1203923be3 | ||
|
aeebcbc243 | ||
|
31c4dc80a8 | ||
|
31a57bdfa9 | ||
|
4f4eded593 | ||
|
4f9183b23e | ||
|
3cb61c5dae | ||
|
c613d8a884 | ||
|
d11055aa0c | ||
|
7e84f4efe9 | ||
|
9a960a22a9 | ||
|
7ef2ae9b05 | ||
|
4ae5e94aec | ||
|
32e48a077d |
@@ -172,7 +172,7 @@ $(BUILDRPMSUBDIRS):
|
|||||||
.PHONY: _clean
|
.PHONY: _clean
|
||||||
.SILENT: _clean
|
.SILENT: _clean
|
||||||
_clean:
|
_clean:
|
||||||
-rm -f ${NAME}-${VERSION}-*.tar.gz
|
-[ -z "${NAME}" ] || rm -f ${NAME}-${VERSION}-*.tar.gz
|
||||||
-rm -f ${MANPAGES} *.[0-9].gz ${HTMLMANPAGES} pod2htm*.tmp
|
-rm -f ${MANPAGES} *.[0-9].gz ${HTMLMANPAGES} pod2htm*.tmp
|
||||||
|
|
||||||
# =====================
|
# =====================
|
||||||
|
@@ -1 +1 @@
|
|||||||
2.8.98
|
2.9.0
|
||||||
|
@@ -26,9 +26,9 @@ INCLUDES = $(all_includes)
|
|||||||
# For more information, see:
|
# For more information, see:
|
||||||
# http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
|
# http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
|
||||||
#
|
#
|
||||||
AA_LIB_CURRENT = 2
|
AA_LIB_CURRENT = 3
|
||||||
AA_LIB_REVISION = 0
|
AA_LIB_REVISION = 0
|
||||||
AA_LIB_AGE = 1
|
AA_LIB_AGE = 2
|
||||||
|
|
||||||
SUFFIXES = .pc.in .pc
|
SUFFIXES = .pc.in .pc
|
||||||
|
|
||||||
|
@@ -8,13 +8,13 @@ msgstr ""
|
|||||||
"Project-Id-Version: apparmor-parser\n"
|
"Project-Id-Version: apparmor-parser\n"
|
||||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||||
"PO-Revision-Date: 2013-11-15 22:02+0000\n"
|
"PO-Revision-Date: 2014-10-16 21:22+0000\n"
|
||||||
"Last-Translator: Andi Chandler <Unknown>\n"
|
"Last-Translator: Anthony Harrington <untaintableangel@ubuntu.com>\n"
|
||||||
"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
|
"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-09-14 05:58+0000\n"
|
"X-Launchpad-Export-Date: 2014-10-17 05:36+0000\n"
|
||||||
"X-Generator: Launchpad (build 17196)\n"
|
"X-Generator: Launchpad (build 17196)\n"
|
||||||
"Language: en_GB\n"
|
"Language: en_GB\n"
|
||||||
|
|
||||||
@@ -62,30 +62,30 @@ msgstr "Profile does not match signature\n"
|
|||||||
|
|
||||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||||
msgid "Profile version not supported by Apparmor module\n"
|
msgid "Profile version not supported by Apparmor module\n"
|
||||||
msgstr ""
|
msgstr "Profile version not supported by Apparmor module\n"
|
||||||
|
|
||||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||||
msgid "Profile already exists\n"
|
msgid "Profile already exists\n"
|
||||||
msgstr ""
|
msgstr "Profile already exists\n"
|
||||||
|
|
||||||
#: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73
|
#: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73
|
||||||
msgid "Profile doesn't exist\n"
|
msgid "Profile doesn't exist\n"
|
||||||
msgstr ""
|
msgstr "Profile doesn't exist\n"
|
||||||
|
|
||||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||||
msgstr ""
|
msgstr "Permission denied; attempted to load a profile while confined?\n"
|
||||||
|
|
||||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown error (%d): %s\n"
|
msgid "Unknown error (%d): %s\n"
|
||||||
msgstr ""
|
msgstr "Unknown error (%d): %s\n"
|
||||||
|
|
||||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||||
#: ../parser_interface.c:96
|
#: ../parser_interface.c:96
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: Unable to add \"%s\". "
|
msgid "%s: Unable to add \"%s\". "
|
||||||
msgstr ""
|
msgstr "%s: Unable to add \"%s\". "
|
||||||
|
|
||||||
#: ../parser_interface.c:121 ../parser_interface.c:124
|
#: ../parser_interface.c:121 ../parser_interface.c:124
|
||||||
#: ../parser_interface.c:101
|
#: ../parser_interface.c:101
|
||||||
@@ -97,19 +97,19 @@ msgstr ""
|
|||||||
#: ../parser_interface.c:106
|
#: ../parser_interface.c:106
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: Unable to remove \"%s\". "
|
msgid "%s: Unable to remove \"%s\". "
|
||||||
msgstr ""
|
msgstr "%s: Unable to remove \"%s\". "
|
||||||
|
|
||||||
#: ../parser_interface.c:131 ../parser_interface.c:134
|
#: ../parser_interface.c:131 ../parser_interface.c:134
|
||||||
#: ../parser_interface.c:111
|
#: ../parser_interface.c:111
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: Unable to write to stdout\n"
|
msgid "%s: Unable to write to stdout\n"
|
||||||
msgstr ""
|
msgstr "%s: Unable to write to stdout\n"
|
||||||
|
|
||||||
#: ../parser_interface.c:135 ../parser_interface.c:138
|
#: ../parser_interface.c:135 ../parser_interface.c:138
|
||||||
#: ../parser_interface.c:115
|
#: ../parser_interface.c:115
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: Unable to write to output file\n"
|
msgid "%s: Unable to write to output file\n"
|
||||||
msgstr ""
|
msgstr "%s: Unable to write to output file\n"
|
||||||
|
|
||||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||||
|
1038
utils/aa-mergeprof
1038
utils/aa-mergeprof
File diff suppressed because it is too large
Load Diff
@@ -6,13 +6,17 @@ aa-mergeprof - merge AppArmor security profiles.
|
|||||||
|
|
||||||
=head1 SYNOPSIS
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
B<aa-mergeprof I<E<lt>mineE<gt>> I<E<lt>userE<gt>> I<E<lt>otherE<gt>> [I<-d /path/to/profiles>]>
|
B<aa-mergeprof I<file> [I<file> ...] [I<-d /path/to/profiles>]>
|
||||||
|
|
||||||
=head1 OPTIONS
|
=head1 OPTIONS
|
||||||
|
|
||||||
|
B<file>
|
||||||
|
|
||||||
|
One or more files containing profiles to merge into the profile directory (see -d).
|
||||||
|
|
||||||
B<-d --dir /path/to/profiles>
|
B<-d --dir /path/to/profiles>
|
||||||
|
|
||||||
Specifies where to look for the AppArmor security profile set.
|
Specifies the target directory for the merged AppArmor security profile set.
|
||||||
Defaults to /etc/apparmor.d.
|
Defaults to /etc/apparmor.d.
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
@@ -1938,7 +1938,7 @@ def ask_the_questions():
|
|||||||
#
|
#
|
||||||
for family in sorted(log_dict[aamode][profile][hat]['netdomain'].keys()):
|
for family in sorted(log_dict[aamode][profile][hat]['netdomain'].keys()):
|
||||||
# severity handling for net toggles goes here
|
# severity handling for net toggles goes here
|
||||||
for sock_type in sorted(log_dict[profile][profile][hat]['netdomain'][family].keys()):
|
for sock_type in sorted(log_dict[aamode][profile][hat]['netdomain'][family].keys()):
|
||||||
if profile_known_network(aa[profile][hat], family, sock_type):
|
if profile_known_network(aa[profile][hat], family, sock_type):
|
||||||
continue
|
continue
|
||||||
default_option = 1
|
default_option = 1
|
||||||
@@ -1993,7 +1993,10 @@ def ask_the_questions():
|
|||||||
q.headers += [_('Socket Type'), sock_type]
|
q.headers += [_('Socket Type'), sock_type]
|
||||||
|
|
||||||
elif ans == 'CMD_ALLOW':
|
elif ans == 'CMD_ALLOW':
|
||||||
selection = options[selected]
|
if options:
|
||||||
|
selection = options[selected]
|
||||||
|
else:
|
||||||
|
selection = 'network %s %s' % (family, sock_type)
|
||||||
done = True
|
done = True
|
||||||
if re_match_include(selection): # re.search('#include\s+<.+>$', selection):
|
if re_match_include(selection): # re.search('#include\s+<.+>$', selection):
|
||||||
inc = re_match_include(selection) # re.search('#include\s+<(.+)>$', selection).groups()[0]
|
inc = re_match_include(selection) # re.search('#include\s+<(.+)>$', selection).groups()[0]
|
||||||
@@ -2631,7 +2634,7 @@ RE_PROFILE_NETWORK = re.compile(RE_AUDIT_DENY + 'network(.*)' + RE_EOL)
|
|||||||
RE_NETWORK_FAMILY_TYPE = re.compile('\s+(\S+)\s+(\S+)\s*,$')
|
RE_NETWORK_FAMILY_TYPE = re.compile('\s+(\S+)\s+(\S+)\s*,$')
|
||||||
RE_NETWORK_FAMILY = re.compile('\s+(\S+)\s*,$')
|
RE_NETWORK_FAMILY = re.compile('\s+(\S+)\s*,$')
|
||||||
RE_PROFILE_CHANGE_HAT = re.compile('^\s*\^(\"??.+?\"??)' + RE_COMMA_EOL)
|
RE_PROFILE_CHANGE_HAT = re.compile('^\s*\^(\"??.+?\"??)' + RE_COMMA_EOL)
|
||||||
RE_PROFILE_HAT_DEF = re.compile('^\s*\^(\"??.+?\"??)\s+((flags=)?\((.+)\)\s+)*\{' + RE_EOL)
|
RE_PROFILE_HAT_DEF = re.compile('^\s*(\^|hat\s+)(?P<hat>\"??.+?\"??)\s+((flags=)?\((?P<flags>.+)\)\s+)*\{' + RE_EOL)
|
||||||
RE_PROFILE_DBUS = re.compile(RE_AUDIT_DENY + '(dbus\s*,|dbus\s+[^#]*\s*,)' + RE_EOL)
|
RE_PROFILE_DBUS = re.compile(RE_AUDIT_DENY + '(dbus\s*,|dbus\s+[^#]*\s*,)' + RE_EOL)
|
||||||
RE_PROFILE_MOUNT = re.compile(RE_AUDIT_DENY + '((mount|remount|umount|unmount)(\s+[^#]*)?\s*,)' + RE_EOL)
|
RE_PROFILE_MOUNT = re.compile(RE_AUDIT_DENY + '((mount|remount|umount|unmount)(\s+[^#]*)?\s*,)' + RE_EOL)
|
||||||
RE_PROFILE_SIGNAL = re.compile(RE_AUDIT_DENY + '(signal\s*,|signal\s+[^#]*\s*,)' + RE_EOL)
|
RE_PROFILE_SIGNAL = re.compile(RE_AUDIT_DENY + '(signal\s*,|signal\s+[^#]*\s*,)' + RE_EOL)
|
||||||
@@ -2903,7 +2906,7 @@ def parse_profile_data(data, file, do_include):
|
|||||||
if matches[3]:
|
if matches[3]:
|
||||||
file_prefix = True
|
file_prefix = True
|
||||||
|
|
||||||
path = matches[4].strip()
|
path = strip_quotes(matches[4].strip())
|
||||||
mode = matches[5]
|
mode = matches[5]
|
||||||
nt_name = matches[6]
|
nt_name = matches[6]
|
||||||
if nt_name:
|
if nt_name:
|
||||||
@@ -3141,14 +3144,14 @@ def parse_profile_data(data, file, do_include):
|
|||||||
|
|
||||||
elif RE_PROFILE_HAT_DEF.search(line):
|
elif RE_PROFILE_HAT_DEF.search(line):
|
||||||
# An embedded hat syntax definition starts
|
# An embedded hat syntax definition starts
|
||||||
matches = RE_PROFILE_HAT_DEF.search(line).groups()
|
matches = RE_PROFILE_HAT_DEF.search(line)
|
||||||
if not profile:
|
if not profile:
|
||||||
raise AppArmorException(_('Syntax Error: Unexpected hat definition found in file: %(file)s line: %(line)s') % { 'file': file, 'line': lineno + 1 })
|
raise AppArmorException(_('Syntax Error: Unexpected hat definition found in file: %(file)s line: %(line)s') % { 'file': file, 'line': lineno + 1 })
|
||||||
|
|
||||||
in_contained_hat = True
|
in_contained_hat = True
|
||||||
hat = matches[0]
|
hat = matches.group('hat')
|
||||||
hat = strip_quotes(hat)
|
hat = strip_quotes(hat)
|
||||||
flags = matches[3]
|
flags = matches.group('flags')
|
||||||
|
|
||||||
profile_data[profile][hat]['flags'] = flags
|
profile_data[profile][hat]['flags'] = flags
|
||||||
profile_data[profile][hat]['declared'] = False
|
profile_data[profile][hat]['declared'] = False
|
||||||
@@ -4200,7 +4203,7 @@ def serialize_profile_from_old_profile(profile_data, name, options):
|
|||||||
if matches[2]:
|
if matches[2]:
|
||||||
user = True
|
user = True
|
||||||
|
|
||||||
path = matches[4].strip()
|
path = strip_quotes(matches[4].strip())
|
||||||
mode = matches[5]
|
mode = matches[5]
|
||||||
nt_name = matches[6]
|
nt_name = matches[6]
|
||||||
if nt_name:
|
if nt_name:
|
||||||
@@ -4318,11 +4321,12 @@ def serialize_profile_from_old_profile(profile_data, name, options):
|
|||||||
#To-Do
|
#To-Do
|
||||||
pass
|
pass
|
||||||
elif RE_PROFILE_HAT_DEF.search(line):
|
elif RE_PROFILE_HAT_DEF.search(line):
|
||||||
matches = RE_PROFILE_HAT_DEF.search(line).groups()
|
matches = RE_PROFILE_HAT_DEF.search(line)
|
||||||
in_contained_hat = True
|
in_contained_hat = True
|
||||||
hat = matches[0]
|
hat = matches.group('hat')
|
||||||
hat = strip_quotes(hat)
|
hat = strip_quotes(hat)
|
||||||
flags = matches[3]
|
flags = matches.group('flags')
|
||||||
|
|
||||||
if not write_prof_data[hat]['flags'] == flags:
|
if not write_prof_data[hat]['flags'] == flags:
|
||||||
correct = False
|
correct = False
|
||||||
if not write_prof_data[hat]['declared'] is False:
|
if not write_prof_data[hat]['declared'] is False:
|
||||||
|
@@ -168,19 +168,21 @@ def get_directory_contents(path):
|
|||||||
|
|
||||||
def open_file_read(path, encoding='UTF-8'):
|
def open_file_read(path, encoding='UTF-8'):
|
||||||
'''Open specified file read-only'''
|
'''Open specified file read-only'''
|
||||||
try:
|
return open_file_anymode('r', path, encoding)
|
||||||
orig = codecs.open(path, 'r', encoding)
|
|
||||||
except Exception:
|
|
||||||
raise
|
|
||||||
|
|
||||||
return orig
|
|
||||||
|
|
||||||
def open_file_write(path):
|
def open_file_write(path):
|
||||||
'''Open specified file in write/overwrite mode'''
|
'''Open specified file in write/overwrite mode'''
|
||||||
try:
|
return open_file_anymode('w', path, 'UTF-8')
|
||||||
orig = codecs.open(path, 'w', 'UTF-8')
|
|
||||||
except Exception:
|
def open_file_anymode(mode, path, encoding='UTF-8'):
|
||||||
raise
|
'''Open specified file in specified mode'''
|
||||||
|
|
||||||
|
errorhandling = 'surrogateescape'
|
||||||
|
if sys.version_info[0] < 3:
|
||||||
|
errorhandling = 'replace'
|
||||||
|
|
||||||
|
orig = codecs.open(path, mode, encoding, errors=errorhandling)
|
||||||
|
|
||||||
return orig
|
return orig
|
||||||
|
|
||||||
def readkey():
|
def readkey():
|
||||||
@@ -198,6 +200,8 @@ def readkey():
|
|||||||
def hasher():
|
def hasher():
|
||||||
'''A neat alternative to perl's hash reference'''
|
'''A neat alternative to perl's hash reference'''
|
||||||
# Creates a dictionary for any depth and returns empty dictionary otherwise
|
# Creates a dictionary for any depth and returns empty dictionary otherwise
|
||||||
|
# WARNING: when reading non-existing sub-dicts, empty dicts will be added.
|
||||||
|
# This might cause strange effects when using .keys()
|
||||||
return collections.defaultdict(hasher)
|
return collections.defaultdict(hasher)
|
||||||
|
|
||||||
def convert_regexp(regexp):
|
def convert_regexp(regexp):
|
||||||
|
@@ -143,9 +143,9 @@ class Severity(object):
|
|||||||
"""Returns the max possible rank for file resources containing variables"""
|
"""Returns the max possible rank for file resources containing variables"""
|
||||||
regex_variable = re.compile('@{([^{.]*)}')
|
regex_variable = re.compile('@{([^{.]*)}')
|
||||||
rank = None
|
rank = None
|
||||||
if '@' in resource:
|
matches = regex_variable.search(resource)
|
||||||
variable = regex_variable.search(resource).groups()[0]
|
if matches:
|
||||||
variable = '@{%s}' % variable
|
variable = '@{%s}' % matches.groups()[0]
|
||||||
#variables = regex_variable.findall(resource)
|
#variables = regex_variable.findall(resource)
|
||||||
for replacement in self.severity['VARIABLES'][variable]:
|
for replacement in self.severity['VARIABLES'][variable]:
|
||||||
resource_replaced = self.variable_replace(variable, replacement, resource)
|
resource_replaced = self.variable_replace(variable, replacement, resource)
|
||||||
|
116
utils/po/de.po
116
utils/po/de.po
@@ -7,47 +7,47 @@ msgstr ""
|
|||||||
"Project-Id-Version: apparmor-utils\n"
|
"Project-Id-Version: apparmor-utils\n"
|
||||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||||
"POT-Creation-Date: 2014-09-14 19:29+0530\n"
|
"POT-Creation-Date: 2014-09-14 19:29+0530\n"
|
||||||
"PO-Revision-Date: 2014-09-12 08:19+0000\n"
|
"PO-Revision-Date: 2014-09-23 21:09+0000\n"
|
||||||
"Last-Translator: Christian Boltz <Unknown>\n"
|
"Last-Translator: Christian Boltz <Unknown>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-09-15 06:02+0000\n"
|
"X-Launchpad-Export-Date: 2014-09-24 05:57+0000\n"
|
||||||
"X-Generator: Launchpad (build 17196)\n"
|
"X-Generator: Launchpad (build 17196)\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
|
|
||||||
#: ../aa-genprof:56
|
#: ../aa-genprof:52
|
||||||
msgid "Generate profile for the given program"
|
msgid "Generate profile for the given program"
|
||||||
msgstr "Profil für das angegebene Programm erstellen"
|
msgstr "Profil für das angegebene Programm erstellen"
|
||||||
|
|
||||||
#: ../aa-genprof:57 ../aa-logprof:25 ../aa-cleanprof:24 ../aa-mergeprof:34
|
#: ../aa-genprof:53 ../aa-logprof:25 ../aa-cleanprof:24 ../aa-mergeprof:31
|
||||||
#: ../aa-autodep:25 ../aa-audit:25 ../aa-complain:24 ../aa-enforce:24
|
#: ../aa-autodep:25 ../aa-audit:25 ../aa-complain:24 ../aa-enforce:24
|
||||||
#: ../aa-disable:24
|
#: ../aa-disable:24
|
||||||
msgid "path to profiles"
|
msgid "path to profiles"
|
||||||
msgstr "Pfad zu den Profilen"
|
msgstr "Pfad zu den Profilen"
|
||||||
|
|
||||||
#: ../aa-genprof:58 ../aa-logprof:26
|
#: ../aa-genprof:54 ../aa-logprof:26
|
||||||
msgid "path to logfile"
|
msgid "path to logfile"
|
||||||
msgstr "Pfad zur Logdatei"
|
msgstr "Pfad zur Logdatei"
|
||||||
|
|
||||||
#: ../aa-genprof:59
|
#: ../aa-genprof:55
|
||||||
msgid "name of program to profile"
|
msgid "name of program to profile"
|
||||||
msgstr "Name des Programms, für das ein Profil erstellt werden soll"
|
msgstr "Name des Programms, für das ein Profil erstellt werden soll"
|
||||||
|
|
||||||
#: ../aa-genprof:69 ../aa-logprof:37
|
#: ../aa-genprof:65 ../aa-logprof:37
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The logfile %s does not exist. Please check the path"
|
msgid "The logfile %s does not exist. Please check the path"
|
||||||
msgstr "Die Logdatei %s existiert nicht. Bitte überprüfen Sie den Pfad"
|
msgstr "Die Logdatei %s existiert nicht. Bitte überprüfen Sie den Pfad"
|
||||||
|
|
||||||
#: ../aa-genprof:75 ../aa-logprof:43 ../aa-unconfined:36
|
#: ../aa-genprof:71 ../aa-logprof:43 ../aa-unconfined:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"It seems AppArmor was not started. Please enable AppArmor and try again."
|
"It seems AppArmor was not started. Please enable AppArmor and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"AppArmor wurde offenbar nicht gestartet. Aktivieren Sie AppArmor und "
|
"AppArmor wurde offenbar nicht gestartet. Aktivieren Sie AppArmor und "
|
||||||
"versuchen Sie es erneut."
|
"versuchen Sie es erneut."
|
||||||
|
|
||||||
#: ../aa-genprof:80 ../aa-mergeprof:47
|
#: ../aa-genprof:76
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s is not a directory."
|
msgid "%s is not a directory."
|
||||||
msgstr "%s ist kein Verzeichnis."
|
msgstr "%s ist kein Verzeichnis."
|
||||||
@@ -62,12 +62,12 @@ msgid ""
|
|||||||
"use the full path as parameter."
|
"use the full path as parameter."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-genprof:96
|
#: ../aa-genprof:92
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s does not exists, please double-check the path."
|
msgid "%s does not exists, please double-check the path."
|
||||||
msgstr "%s existiert nicht. Bitte überprüfen Sie den Pfad"
|
msgstr "%s existiert nicht. Bitte überprüfen Sie den Pfad"
|
||||||
|
|
||||||
#: ../aa-genprof:124
|
#: ../aa-genprof:120
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"Before you begin, you may wish to check if a\n"
|
"Before you begin, you may wish to check if a\n"
|
||||||
@@ -76,7 +76,7 @@ msgid ""
|
|||||||
"more information:"
|
"more information:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-genprof:126
|
#: ../aa-genprof:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please start the application to be profiled in\n"
|
"Please start the application to be profiled in\n"
|
||||||
"another window and exercise its functionality now.\n"
|
"another window and exercise its functionality now.\n"
|
||||||
@@ -97,11 +97,11 @@ msgstr ""
|
|||||||
"Für jedes AppArmor-Ereignis haben Sie die Gelegenheit anzugeben,\n"
|
"Für jedes AppArmor-Ereignis haben Sie die Gelegenheit anzugeben,\n"
|
||||||
"ob der Zugriff zugelassen oder verweigert werden soll."
|
"ob der Zugriff zugelassen oder verweigert werden soll."
|
||||||
|
|
||||||
#: ../aa-genprof:147
|
#: ../aa-genprof:143
|
||||||
msgid "Profiling"
|
msgid "Profiling"
|
||||||
msgstr "Profilerstellung"
|
msgstr "Profilerstellung"
|
||||||
|
|
||||||
#: ../aa-genprof:165
|
#: ../aa-genprof:161
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"Reloaded AppArmor profiles in enforce mode."
|
"Reloaded AppArmor profiles in enforce mode."
|
||||||
@@ -109,14 +109,14 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"AppArmor-Profile wurden im Erzwingen-Modus neu geladen."
|
"AppArmor-Profile wurden im Erzwingen-Modus neu geladen."
|
||||||
|
|
||||||
#: ../aa-genprof:166
|
#: ../aa-genprof:162
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"Please consider contributing your new profile!\n"
|
"Please consider contributing your new profile!\n"
|
||||||
"See the following wiki page for more information:"
|
"See the following wiki page for more information:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-genprof:167
|
#: ../aa-genprof:163
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Finished generating profile for %s."
|
msgid "Finished generating profile for %s."
|
||||||
msgstr "Profilerstellung für %s abgeschlossen."
|
msgstr "Profilerstellung für %s abgeschlossen."
|
||||||
@@ -133,8 +133,8 @@ msgstr ""
|
|||||||
msgid "Cleanup the profiles for the given programs"
|
msgid "Cleanup the profiles for the given programs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-cleanprof:25 ../aa-autodep:26 ../aa-audit:27 ../aa-complain:25
|
#: ../aa-cleanprof:25 ../aa-autodep:26 ../aa-audit:27 ../aa-complain:26
|
||||||
#: ../aa-enforce:25 ../aa-disable:25
|
#: ../aa-enforce:26 ../aa-disable:26
|
||||||
msgid "name of program"
|
msgid "name of program"
|
||||||
msgstr "Name des Programms"
|
msgstr "Name des Programms"
|
||||||
|
|
||||||
@@ -146,141 +146,133 @@ msgstr ""
|
|||||||
msgid "Perform a 2-way or 3-way merge on the given profiles"
|
msgid "Perform a 2-way or 3-way merge on the given profiles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-mergeprof:31
|
#: ../aa-mergeprof:28
|
||||||
msgid "your profile"
|
msgid "your profile"
|
||||||
msgstr "Ihr Profil"
|
msgstr "Ihr Profil"
|
||||||
|
|
||||||
#: ../aa-mergeprof:32
|
#: ../aa-mergeprof:29
|
||||||
msgid "base profile"
|
msgid "base profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-mergeprof:33
|
#: ../aa-mergeprof:30
|
||||||
msgid "other profile"
|
msgid "other profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-mergeprof:67 ../apparmor/aa.py:2345
|
#: ../aa-mergeprof:53
|
||||||
msgid ""
|
msgid ""
|
||||||
"The following local profiles were changed. Would you like to save them?"
|
"The following local profiles were changed. Would you like to save them?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die folgenden lokalen Profile wurden geändert. Möchten Sie sie speichern?"
|
"Die folgenden lokalen Profile wurden geändert. Möchten Sie sie speichern?"
|
||||||
|
|
||||||
#: ../aa-mergeprof:148 ../aa-mergeprof:430 ../apparmor/aa.py:1767
|
#: ../aa-mergeprof:131 ../aa-mergeprof:413
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr "Pfad"
|
msgstr "Pfad"
|
||||||
|
|
||||||
#: ../aa-mergeprof:149
|
#: ../aa-mergeprof:132
|
||||||
msgid "Select the appropriate mode"
|
msgid "Select the appropriate mode"
|
||||||
msgstr "Wählen Sie den passenden Modus"
|
msgstr "Wählen Sie den passenden Modus"
|
||||||
|
|
||||||
#: ../aa-mergeprof:166
|
#: ../aa-mergeprof:149
|
||||||
msgid "Unknown selection"
|
msgid "Unknown selection"
|
||||||
msgstr "Unbekannte Auswahl"
|
msgstr "Unbekannte Auswahl"
|
||||||
|
|
||||||
#: ../aa-mergeprof:183 ../aa-mergeprof:209
|
#: ../aa-mergeprof:166 ../aa-mergeprof:192
|
||||||
msgid "File includes"
|
msgid "File includes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-mergeprof:183 ../aa-mergeprof:209
|
#: ../aa-mergeprof:166 ../aa-mergeprof:192
|
||||||
msgid "Select the ones you wish to add"
|
msgid "Select the ones you wish to add"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-mergeprof:195 ../aa-mergeprof:222
|
#: ../aa-mergeprof:178 ../aa-mergeprof:205
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Adding %s to the file."
|
msgid "Adding %s to the file."
|
||||||
msgstr "%s wird zum Profil hinzugefügt."
|
msgstr "%s wird zum Profil hinzugefügt."
|
||||||
|
|
||||||
#: ../aa-mergeprof:199 ../apparmor/aa.py:2258
|
#: ../aa-mergeprof:182
|
||||||
msgid "unknown"
|
msgid "unknown"
|
||||||
msgstr "unbekannt"
|
msgstr "unbekannt"
|
||||||
|
|
||||||
#: ../aa-mergeprof:224 ../aa-mergeprof:275 ../aa-mergeprof:516
|
#: ../aa-mergeprof:207 ../aa-mergeprof:258 ../aa-mergeprof:499
|
||||||
#: ../aa-mergeprof:558 ../aa-mergeprof:675 ../apparmor/aa.py:1620
|
#: ../aa-mergeprof:541 ../aa-mergeprof:658
|
||||||
#: ../apparmor/aa.py:1859 ../apparmor/aa.py:1899 ../apparmor/aa.py:2012
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Deleted %s previous matching profile entries."
|
msgid "Deleted %s previous matching profile entries."
|
||||||
msgstr "%s vorherige übereinstimmende Profileinträge wurden gelöscht."
|
msgstr "%s vorherige übereinstimmende Profileinträge wurden gelöscht."
|
||||||
|
|
||||||
#: ../aa-mergeprof:244 ../aa-mergeprof:429 ../aa-mergeprof:629
|
#: ../aa-mergeprof:227 ../aa-mergeprof:412 ../aa-mergeprof:612
|
||||||
#: ../aa-mergeprof:656 ../apparmor/aa.py:992 ../apparmor/aa.py:1252
|
#: ../aa-mergeprof:639
|
||||||
#: ../apparmor/aa.py:1562 ../apparmor/aa.py:1603 ../apparmor/aa.py:1766
|
|
||||||
#: ../apparmor/aa.py:1958 ../apparmor/aa.py:1994
|
|
||||||
msgid "Profile"
|
msgid "Profile"
|
||||||
msgstr "Profil"
|
msgstr "Profil"
|
||||||
|
|
||||||
#: ../aa-mergeprof:245 ../apparmor/aa.py:1563 ../apparmor/aa.py:1604
|
#: ../aa-mergeprof:228
|
||||||
msgid "Capability"
|
msgid "Capability"
|
||||||
msgstr "Capability"
|
msgstr "Capability"
|
||||||
|
|
||||||
#: ../aa-mergeprof:246 ../aa-mergeprof:480 ../apparmor/aa.py:1258
|
#: ../aa-mergeprof:229 ../aa-mergeprof:463
|
||||||
#: ../apparmor/aa.py:1564 ../apparmor/aa.py:1605 ../apparmor/aa.py:1817
|
|
||||||
msgid "Severity"
|
msgid "Severity"
|
||||||
msgstr "Schweregrad"
|
msgstr "Schweregrad"
|
||||||
|
|
||||||
#: ../aa-mergeprof:273 ../aa-mergeprof:514 ../apparmor/aa.py:1618
|
#: ../aa-mergeprof:256 ../aa-mergeprof:497
|
||||||
#: ../apparmor/aa.py:1857
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Adding %s to profile."
|
msgid "Adding %s to profile."
|
||||||
msgstr "%s wird zum Profil hinzugefügt."
|
msgstr "%s wird zum Profil hinzugefügt."
|
||||||
|
|
||||||
#: ../aa-mergeprof:282 ../apparmor/aa.py:1627
|
#: ../aa-mergeprof:265
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Adding capability %s to profile."
|
msgid "Adding capability %s to profile."
|
||||||
msgstr "Capability %s zum Profil hinzugefügt."
|
msgstr "Capability %s zum Profil hinzugefügt."
|
||||||
|
|
||||||
#: ../aa-mergeprof:289 ../apparmor/aa.py:1634
|
#: ../aa-mergeprof:272
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Denying capability %s to profile."
|
msgid "Denying capability %s to profile."
|
||||||
msgstr "Capability %s wird dem Profil verweigert."
|
msgstr "Capability %s wird dem Profil verweigert."
|
||||||
|
|
||||||
#: ../aa-mergeprof:439 ../aa-mergeprof:470 ../apparmor/aa.py:1776
|
#: ../aa-mergeprof:422 ../aa-mergeprof:453
|
||||||
#: ../apparmor/aa.py:1807
|
|
||||||
msgid "(owner permissions off)"
|
msgid "(owner permissions off)"
|
||||||
msgstr "(Eigentümerberechtigungen deaktiviert)"
|
msgstr "(Eigentümerberechtigungen deaktiviert)"
|
||||||
|
|
||||||
#: ../aa-mergeprof:444 ../apparmor/aa.py:1781
|
#: ../aa-mergeprof:427
|
||||||
msgid "(force new perms to owner)"
|
msgid "(force new perms to owner)"
|
||||||
msgstr "(neue Berechtigungen für Eigentümer erzwingen)"
|
msgstr "(neue Berechtigungen für Eigentümer erzwingen)"
|
||||||
|
|
||||||
#: ../aa-mergeprof:447 ../apparmor/aa.py:1784
|
#: ../aa-mergeprof:430
|
||||||
msgid "(force all rule perms to owner)"
|
msgid "(force all rule perms to owner)"
|
||||||
msgstr "(alle Regelberechtigungen für Eigentümer erzwingen)"
|
msgstr "(alle Regelberechtigungen für Eigentümer erzwingen)"
|
||||||
|
|
||||||
#: ../aa-mergeprof:459 ../apparmor/aa.py:1796
|
#: ../aa-mergeprof:442
|
||||||
msgid "Old Mode"
|
msgid "Old Mode"
|
||||||
msgstr "Alter Modus"
|
msgstr "Alter Modus"
|
||||||
|
|
||||||
#: ../aa-mergeprof:460 ../apparmor/aa.py:1797
|
#: ../aa-mergeprof:443
|
||||||
msgid "New Mode"
|
msgid "New Mode"
|
||||||
msgstr "Neuer Modus"
|
msgstr "Neuer Modus"
|
||||||
|
|
||||||
#: ../aa-mergeprof:475 ../apparmor/aa.py:1812
|
#: ../aa-mergeprof:458
|
||||||
msgid "(force perms to owner)"
|
msgid "(force perms to owner)"
|
||||||
msgstr "(Berechtigungen für Eigentümer erzwingen)"
|
msgstr "(Berechtigungen für Eigentümer erzwingen)"
|
||||||
|
|
||||||
#: ../aa-mergeprof:478 ../apparmor/aa.py:1815
|
#: ../aa-mergeprof:461
|
||||||
msgid "Mode"
|
msgid "Mode"
|
||||||
msgstr "Modus"
|
msgstr "Modus"
|
||||||
|
|
||||||
#: ../aa-mergeprof:556
|
#: ../aa-mergeprof:556
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Adding %(path)s %(mod)s to profile"
|
msgid "Adding %(path)s %(mod)s to profile"
|
||||||
msgstr ""
|
msgstr "%(path)s %(mod)s wird zum Profil hinzugefügt"
|
||||||
|
|
||||||
#: ../aa-mergeprof:574 ../apparmor/aa.py:1915
|
#: ../aa-mergeprof:557
|
||||||
msgid "Enter new path: "
|
msgid "Enter new path: "
|
||||||
msgstr "Neuen Pfad eingeben: "
|
msgstr "Neuen Pfad eingeben: "
|
||||||
|
|
||||||
#: ../aa-mergeprof:630 ../aa-mergeprof:657 ../apparmor/aa.py:1959
|
#: ../aa-mergeprof:613 ../aa-mergeprof:640
|
||||||
#: ../apparmor/aa.py:1995
|
|
||||||
msgid "Network Family"
|
msgid "Network Family"
|
||||||
msgstr "Netzwerkfamilie"
|
msgstr "Netzwerkfamilie"
|
||||||
|
|
||||||
#: ../aa-mergeprof:631 ../aa-mergeprof:658 ../apparmor/aa.py:1960
|
#: ../aa-mergeprof:614 ../aa-mergeprof:641
|
||||||
#: ../apparmor/aa.py:1996
|
|
||||||
msgid "Socket Type"
|
msgid "Socket Type"
|
||||||
msgstr "Socket-Typ"
|
msgstr "Socket-Typ"
|
||||||
|
|
||||||
#: ../aa-mergeprof:673 ../apparmor/aa.py:2010
|
#: ../aa-mergeprof:656
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Adding %s to profile"
|
msgid "Adding %s to profile"
|
||||||
msgstr "%s wird zum Profil hinzugefügt."
|
msgstr "%s wird zum Profil hinzugefügt."
|
||||||
@@ -288,12 +280,12 @@ msgstr "%s wird zum Profil hinzugefügt."
|
|||||||
#: ../aa-mergeprof:683 ../apparmor/aa.py:2020
|
#: ../aa-mergeprof:683 ../apparmor/aa.py:2020
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Adding network access %(family)s %(type)s to profile."
|
msgid "Adding network access %(family)s %(type)s to profile."
|
||||||
msgstr ""
|
msgstr "Netzwerkzugriff %(family)s %(type)s wird zum Profil hinzugefügt."
|
||||||
|
|
||||||
#: ../aa-mergeprof:689 ../apparmor/aa.py:2026
|
#: ../aa-mergeprof:689 ../apparmor/aa.py:2026
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Denying network access %(family)s %(type)s to profile"
|
msgid "Denying network access %(family)s %(type)s to profile"
|
||||||
msgstr ""
|
msgstr "Netzwerkzugriff %(family)s %(type)s wird dem Profil verweigert."
|
||||||
|
|
||||||
#: ../aa-autodep:23
|
#: ../aa-autodep:23
|
||||||
msgid "Generate a basic AppArmor profile by guessing requirements"
|
msgid "Generate a basic AppArmor profile by guessing requirements"
|
||||||
@@ -327,11 +319,11 @@ msgstr "Das angegebene Programm in den Erzwingen-Modus versetzen"
|
|||||||
msgid "Disable the profile for the given programs"
|
msgid "Disable the profile for the given programs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-unconfined:28
|
#: ../aa-unconfined:26
|
||||||
msgid "Lists unconfined processes having tcp or udp ports"
|
msgid "Lists unconfined processes having tcp or udp ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../aa-unconfined:29
|
#: ../aa-unconfined:27
|
||||||
msgid "scan all processes from /proc"
|
msgid "scan all processes from /proc"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
1129
utils/po/en_GB.po
Normal file
1129
utils/po/en_GB.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -52,6 +52,8 @@ class Test(unittest.TestCase):
|
|||||||
self.assertEqual(rank, 9, 'Wrong rank')
|
self.assertEqual(rank, 9, 'Wrong rank')
|
||||||
self.assertEqual(sev_db.rank('/etc/apparmor/**', 'r') , 6, 'Invalid Rank')
|
self.assertEqual(sev_db.rank('/etc/apparmor/**', 'r') , 6, 'Invalid Rank')
|
||||||
self.assertEqual(sev_db.rank('/etc/**', 'r') , 10, 'Invalid Rank')
|
self.assertEqual(sev_db.rank('/etc/**', 'r') , 10, 'Invalid Rank')
|
||||||
|
self.assertEqual(sev_db.rank('/usr/foo@bar', 'r') , 10, 'Invalid Rank') ## filename containing @
|
||||||
|
self.assertEqual(sev_db.rank('/home/foo@bar', 'rw') , 6, 'Invalid Rank') ## filename containing @
|
||||||
|
|
||||||
# Load all variables for /sbin/klogd and test them
|
# Load all variables for /sbin/klogd and test them
|
||||||
sev_db.load_variables('profiles/sbin.klogd')
|
sev_db.load_variables('profiles/sbin.klogd')
|
||||||
|
@@ -12,13 +12,15 @@ endif
|
|||||||
MANPAGES=apparmor.vim.5
|
MANPAGES=apparmor.vim.5
|
||||||
VIM_INSTALL_PATH=${DESTDIR}/usr/share/apparmor
|
VIM_INSTALL_PATH=${DESTDIR}/usr/share/apparmor
|
||||||
|
|
||||||
all: apparmor.vim manpages
|
all: apparmor.vim manpages htmlmanpages
|
||||||
|
|
||||||
apparmor.vim: apparmor.vim.in Makefile create-apparmor.vim.py
|
apparmor.vim: apparmor.vim.in Makefile create-apparmor.vim.py
|
||||||
${PYTHON} create-apparmor.vim.py > apparmor.vim
|
${PYTHON} create-apparmor.vim.py > apparmor.vim
|
||||||
|
|
||||||
manpages: $(MANPAGES)
|
manpages: $(MANPAGES)
|
||||||
|
|
||||||
|
htmlmanpages: $(HTMLMANPAGES)
|
||||||
|
|
||||||
install: apparmor.vim manpages
|
install: apparmor.vim manpages
|
||||||
install -d $(VIM_INSTALL_PATH)
|
install -d $(VIM_INSTALL_PATH)
|
||||||
install -m 644 $< $(VIM_INSTALL_PATH)
|
install -m 644 $< $(VIM_INSTALL_PATH)
|
||||||
@@ -29,5 +31,5 @@ check: check_pod_files
|
|||||||
#Testing with all pythons
|
#Testing with all pythons
|
||||||
$(call pyalldo, create-apparmor.vim.py > /dev/null)
|
$(call pyalldo, create-apparmor.vim.py > /dev/null)
|
||||||
|
|
||||||
clean:
|
clean: _clean
|
||||||
rm -f apparmor.vim common $(MANPAGES)
|
rm -f apparmor.vim common
|
||||||
|
@@ -113,7 +113,7 @@ syn match sdError /^.*$/ contains=sdComment "highlight all non-valid lines as er
|
|||||||
" TODO: make a separate pattern for variable definitions, then mark sdGlob as contained
|
" TODO: make a separate pattern for variable definitions, then mark sdGlob as contained
|
||||||
syn match sdGlob /\v\?|\*|\{.*,.*\}|[[^\]]\+\]|\@\{[a-zA-Z][a-zA-Z0-9_]*\}/
|
syn match sdGlob /\v\?|\*|\{.*,.*\}|[[^\]]\+\]|\@\{[a-zA-Z][a-zA-Z0-9_]*\}/
|
||||||
|
|
||||||
syn match sdAlias /\v^alias\s+@@FILENAME@@\s+-\>\s+@@FILENAME@@@@EOL@@/ contains=sdGlob
|
syn match sdAlias /\v^alias\s+@@FILENAME@@\s+-\>\s+@@FILENAME@@@@EOL@@/ contains=sdGlob,sdComment
|
||||||
|
|
||||||
" syn match sdComment /#.*/
|
" syn match sdComment /#.*/
|
||||||
|
|
||||||
@@ -164,10 +164,10 @@ syn match sdRLimit /\v^\s*set\s+rlimit\s+rttime\s+\<\=\s+[0-9]+(ms|seconds|minut
|
|||||||
syn match sdRLimit /\v^\s*set\s+rlimit\s+(cpu|rttime|nofile|nproc|rtprio|locks|sigpending|fsize|data|stack|core|rss|as|memlock|msgqueue|nice)\s+\<\=\s+infinity@@EOL@@/ contains=sdComment
|
syn match sdRLimit /\v^\s*set\s+rlimit\s+(cpu|rttime|nofile|nproc|rtprio|locks|sigpending|fsize|data|stack|core|rss|as|memlock|msgqueue|nice)\s+\<\=\s+infinity@@EOL@@/ contains=sdComment
|
||||||
|
|
||||||
" link rules
|
" link rules
|
||||||
syn match sdEntryW /\v^\s+@@auditdenyowner@@link\s+(subset\s+)?@@FILENAME@@\s+-\>\s+@@FILENAME@@@@EOL@@/ contains=sdGlob
|
syn match sdEntryW /\v^\s+@@auditdenyowner@@link\s+(subset\s+)?@@FILENAME@@\s+-\>\s+@@FILENAME@@@@EOL@@/ contains=sdGlob,sdComment
|
||||||
|
|
||||||
|
|
||||||
syn match sdExtHat /\v^\s+(\^|profile\s+)\S+@@EOL@@/ contains=sdComment " hat without {...}
|
syn match sdExtHat /\v^\s+(\^|hat\s+|profile\s+)\S+@@EOL@@/ contains=sdComment " hat without {...}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -176,7 +176,7 @@ syn match sdProfileName /\v^((profile\s+)?\/\S+|profile\s+([a-zA-Z0-9]\S*\s)?\S+
|
|||||||
syn match sdProfileStart /{/ contained
|
syn match sdProfileStart /{/ contained
|
||||||
syn match sdProfileEnd /^}\s*(#.*)?$/ contained " TODO: syn region does not (yet?) allow usage of comment in end=
|
syn match sdProfileEnd /^}\s*(#.*)?$/ contained " TODO: syn region does not (yet?) allow usage of comment in end=
|
||||||
" TODO: Removing the $ mark from end= will allow non-comments also :-(
|
" TODO: Removing the $ mark from end= will allow non-comments also :-(
|
||||||
syn match sdHatName /\v^\s+(\^|profile\s+)\S+\s+@@flags@@=\{/ contains=sdProfileStart,sdFlags,sdComment
|
syn match sdHatName /\v^\s+(\^|hat\s+|profile\s+)\S+\s+@@flags@@=\{/ contains=sdProfileStart,sdFlags,sdComment
|
||||||
syn match sdHatStart /{/ contained
|
syn match sdHatStart /{/ contained
|
||||||
syn match sdHatEnd /}/ contained " TODO: allow comments + [same as for syn match sdProfileEnd]
|
syn match sdHatEnd /}/ contained " TODO: allow comments + [same as for syn match sdProfileEnd]
|
||||||
syn match sdFlags /\v@@flags@@/ contained contains=sdFlagKey
|
syn match sdFlags /\v@@flags@@/ contained contains=sdFlagKey
|
||||||
@@ -190,7 +190,7 @@ syn match sdInclude /\s*include\s<\S*>/ " TODO: doesn't check until $
|
|||||||
" basic profile block...
|
" basic profile block...
|
||||||
" \s+ does not work in end=, therefore using \s\s*
|
" \s+ does not work in end=, therefore using \s\s*
|
||||||
syn region Normal start=/\v^(profile\s+)?\S+\s+@@flags@@=\{/ matchgroup=sdProfileEnd end=/^}\s*$/ contains=sdProfileName,Hat,@sdEntry,sdComment,sdError,sdInclude
|
syn region Normal start=/\v^(profile\s+)?\S+\s+@@flags@@=\{/ matchgroup=sdProfileEnd end=/^}\s*$/ contains=sdProfileName,Hat,@sdEntry,sdComment,sdError,sdInclude
|
||||||
syn region Hat start=/\v^\s+(\^|profile\s+)\S+\s+@@flags@@=\{/ matchgroup=sdHatEnd end=/^\s\s*}\s*$/ contains=sdHatName,@sdEntry,sdComment,sdError,sdInclude
|
syn region Hat start=/\v^\s+(\^|hat\s+|profile\s+)\S+\s+@@flags@@=\{/ matchgroup=sdHatEnd end=/^\s\s*}\s*$/ contains=sdHatName,@sdEntry,sdComment,sdError,sdInclude
|
||||||
|
|
||||||
" file permissions
|
" file permissions
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user