aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml56
-rw-r--r--checkpolicy/Makefile7
-rw-r--r--checkpolicy/VERSION2
-rw-r--r--checkpolicy/checkpolicy.819
-rw-r--r--checkpolicy/checkpolicy.c2
-rw-r--r--checkpolicy/ru/checkmodule.857
-rw-r--r--checkpolicy/ru/checkpolicy.859
-rw-r--r--dbus/VERSION2
-rw-r--r--dbus/org.selinux.policy6
-rw-r--r--gui/Makefile7
-rw-r--r--gui/VERSION2
-rw-r--r--gui/polgen.ui6
-rw-r--r--gui/ru/selinux-polgengui.835
-rw-r--r--gui/ru/system-config-selinux.836
-rw-r--r--libselinux/Android.bp1
-rw-r--r--libselinux/VERSION2
-rw-r--r--libselinux/man/Makefile25
-rw-r--r--libselinux/man/ru/man5/booleans.583
-rw-r--r--libselinux/man/ru/man5/customizable_types.563
-rw-r--r--libselinux/man/ru/man5/default_contexts.575
-rw-r--r--libselinux/man/ru/man5/default_type.543
-rw-r--r--libselinux/man/ru/man5/failsafe_context.568
-rw-r--r--libselinux/man/ru/man5/file_contexts.51
-rw-r--r--libselinux/man/ru/man5/file_contexts.homedirs.51
-rw-r--r--libselinux/man/ru/man5/file_contexts.local.51
-rw-r--r--libselinux/man/ru/man5/file_contexts.subs.51
-rw-r--r--libselinux/man/ru/man5/file_contexts.subs_dist.51
-rw-r--r--libselinux/man/ru/man5/local.users.572
-rw-r--r--libselinux/man/ru/man5/media.51
-rw-r--r--libselinux/man/ru/man5/removable_context.539
-rw-r--r--libselinux/man/ru/man5/secolor.conf.5180
-rw-r--r--libselinux/man/ru/man5/securetty_types.549
-rw-r--r--libselinux/man/ru/man5/selabel_db.5219
-rw-r--r--libselinux/man/ru/man5/selabel_file.5219
-rw-r--r--libselinux/man/ru/man5/selabel_media.592
-rw-r--r--libselinux/man/ru/man5/selabel_x.5168
-rw-r--r--libselinux/man/ru/man5/sepgsql_contexts.51
-rw-r--r--libselinux/man/ru/man5/service_seusers.571
-rw-r--r--libselinux/man/ru/man5/seusers.567
-rw-r--r--libselinux/man/ru/man5/user_contexts.585
-rw-r--r--libselinux/man/ru/man5/virtual_domain_context.544
-rw-r--r--libselinux/man/ru/man5/virtual_image_context.546
-rw-r--r--libselinux/man/ru/man5/x_contexts.51
-rw-r--r--libselinux/man/ru/man8/avcstat.835
-rw-r--r--libselinux/man/ru/man8/booleans.846
-rw-r--r--libselinux/man/ru/man8/getenforce.819
-rw-r--r--libselinux/man/ru/man8/getsebool.840
-rw-r--r--libselinux/man/ru/man8/matchpathcon.862
-rw-r--r--libselinux/man/ru/man8/sefcontext_compile.870
-rw-r--r--libselinux/man/ru/man8/selinux.8106
-rw-r--r--libselinux/man/ru/man8/selinuxenabled.821
-rw-r--r--libselinux/man/ru/man8/selinuxexeccon.828
-rw-r--r--libselinux/man/ru/man8/setenforce.832
-rw-r--r--libselinux/man/ru/man8/togglesebool.823
-rw-r--r--libselinux/src/Makefile2
-rw-r--r--libselinux/src/audit2why.map6
-rw-r--r--libselinux/src/booleans.c1
-rw-r--r--libselinux/src/checkAccess.c4
-rw-r--r--libselinux/src/label_db.c3
-rw-r--r--libselinux/src/label_file.c4
-rw-r--r--libselinux/src/load_policy.c4
-rw-r--r--libselinux/src/selinux_config.c17
-rw-r--r--libselinux/src/selinux_restorecon.c16
-rw-r--r--libselinux/src/selinuxswig_python.i7
-rw-r--r--libselinux/utils/matchpathcon.c2
-rw-r--r--libsemanage/VERSION2
-rw-r--r--libsemanage/man/Makefile19
-rw-r--r--libsemanage/man/ru/man5/semanage.conf.5117
-rw-r--r--libsemanage/src/boolean_record.c54
-rw-r--r--libsemanage/src/handle.c2
-rw-r--r--libsemanage/src/handle_internal.h9
-rw-r--r--libsepol/VERSION2
-rw-r--r--libsepol/cil/src/cil_binary.c14
-rw-r--r--libsepol/cil/src/cil_resolve_ast.c9
-rw-r--r--libsepol/cil/src/cil_symtab.c1
-rw-r--r--libsepol/cil/src/cil_write_ast.c4
-rw-r--r--libsepol/man/Makefile19
-rw-r--r--libsepol/man/ru/man8/chkcon.839
-rw-r--r--libsepol/src/expand.c6
-rw-r--r--libsepol/src/kernel_to_cil.c6
-rw-r--r--libsepol/src/kernel_to_conf.c2
-rw-r--r--libsepol/src/module_to_cil.c4
-rw-r--r--libsepol/src/util.c4
-rw-r--r--mcstrans/VERSION2
-rw-r--r--mcstrans/man/Makefile11
-rw-r--r--mcstrans/man/ru/man8/mcs.824
-rw-r--r--mcstrans/man/ru/man8/mcstransd.832
-rw-r--r--mcstrans/man/ru/man8/setrans.conf.8106
-rw-r--r--policycoreutils/VERSION2
-rw-r--r--policycoreutils/load_policy/Makefile7
-rw-r--r--policycoreutils/load_policy/ru/load_policy.841
-rw-r--r--policycoreutils/man/Makefile10
-rw-r--r--policycoreutils/man/ru/man5/selinux_config.5145
-rw-r--r--policycoreutils/newrole/Makefile7
-rw-r--r--policycoreutils/newrole/ru/newrole.1109
-rw-r--r--policycoreutils/run_init/Makefile7
-rw-r--r--policycoreutils/run_init/ru/open_init_pty.842
-rw-r--r--policycoreutils/run_init/ru/run_init.826
-rw-r--r--policycoreutils/scripts/Makefile7
-rw-r--r--policycoreutils/scripts/ru/fixfiles.894
-rw-r--r--policycoreutils/secon/Makefile7
-rw-r--r--policycoreutils/secon/ru/secon.1120
-rw-r--r--policycoreutils/semodule/Makefile7
-rw-r--r--policycoreutils/semodule/ru/genhomedircon.825
-rw-r--r--policycoreutils/semodule/ru/semodule.8133
-rw-r--r--policycoreutils/sestatus/Makefile9
-rw-r--r--policycoreutils/sestatus/ru/sestatus.879
-rw-r--r--policycoreutils/sestatus/ru/sestatus.conf.597
-rw-r--r--policycoreutils/setfiles/Makefile7
-rw-r--r--policycoreutils/setfiles/ru/restorecon.8193
-rw-r--r--policycoreutils/setfiles/ru/restorecon_xattr.8115
-rw-r--r--policycoreutils/setfiles/ru/setfiles.8221
-rw-r--r--policycoreutils/setsebool/Makefile7
-rw-r--r--policycoreutils/setsebool/ru/setsebool.827
-rw-r--r--policycoreutils/setsebool/setsebool.c15
-rw-r--r--python/Makefile4
-rw-r--r--python/VERSION2
-rw-r--r--python/audit2allow/.gitignore1
-rw-r--r--python/audit2allow/Makefile15
-rw-r--r--python/audit2allow/ru/audit2allow.1210
-rw-r--r--python/audit2allow/ru/audit2why.11
-rw-r--r--python/audit2allow/sepolgen-ifgen8
-rw-r--r--python/audit2allow/test_audit2allow.py19
-rw-r--r--python/audit2allow/test_dummy_policy.cil75
-rw-r--r--python/chcat/Makefile9
-rw-r--r--python/chcat/ru/chcat.857
-rw-r--r--python/semanage/Makefile7
-rw-r--r--python/semanage/ru/semanage-boolean.860
-rw-r--r--python/semanage/ru/semanage-dontaudit.832
-rw-r--r--python/semanage/ru/semanage-export.836
-rw-r--r--python/semanage/ru/semanage-fcontext.884
-rw-r--r--python/semanage/ru/semanage-ibendport.867
-rw-r--r--python/semanage/ru/semanage-ibpkey.867
-rw-r--r--python/semanage/ru/semanage-import.835
-rw-r--r--python/semanage/ru/semanage-interface.862
-rw-r--r--python/semanage/ru/semanage-login.867
-rw-r--r--python/semanage/ru/semanage-module.861
-rw-r--r--python/semanage/ru/semanage-node.859
-rw-r--r--python/semanage/ru/semanage-permissive.847
-rw-r--r--python/semanage/ru/semanage-port.869
-rw-r--r--python/semanage/ru/semanage-user.870
-rw-r--r--python/semanage/ru/semanage.884
-rw-r--r--python/semanage/semanage122
-rw-r--r--python/semanage/semanage.85
-rw-r--r--python/semanage/seobject.py4
-rw-r--r--python/sepolgen/src/sepolgen/defaults.py5
-rw-r--r--python/sepolgen/src/sepolgen/output.py6
-rw-r--r--python/sepolgen/src/sepolgen/refparser.py2
-rw-r--r--python/sepolgen/src/sepolgen/yacc.py214
-rw-r--r--python/sepolicy/Makefile7
-rw-r--r--python/sepolicy/ru/sepolgen.81
-rw-r--r--python/sepolicy/ru/sepolicy-booleans.829
-rw-r--r--python/sepolicy/ru/sepolicy-communicate.840
-rw-r--r--python/sepolicy/ru/sepolicy-generate.8173
-rw-r--r--python/sepolicy/ru/sepolicy-gui.829
-rw-r--r--python/sepolicy/ru/sepolicy-interface.841
-rw-r--r--python/sepolicy/ru/sepolicy-manpage.838
-rw-r--r--python/sepolicy/ru/sepolicy-network.890
-rw-r--r--python/sepolicy/ru/sepolicy-transition.834
-rw-r--r--python/sepolicy/ru/sepolicy.877
-rw-r--r--python/sepolicy/sepolicy/generate.py4
-rw-r--r--python/sepolicy/sepolicy/gui.py3
-rw-r--r--python/sepolicy/sepolicy/interface.py8
-rwxr-xr-xpython/sepolicy/sepolicy/manpage.py4
-rw-r--r--restorecond/Makefile9
-rw-r--r--restorecond/VERSION2
-rw-r--r--restorecond/ru/restorecond.841
-rw-r--r--sandbox/Makefile9
-rw-r--r--sandbox/VERSION2
-rw-r--r--sandbox/ru/sandbox.542
-rw-r--r--sandbox/ru/sandbox.8100
-rw-r--r--sandbox/ru/seunshare.842
-rwxr-xr-xscripts/env_use_destdir36
-rwxr-xr-xscripts/release24
-rwxr-xr-xscripts/run-flake85
-rw-r--r--secilc/Android.bp13
-rw-r--r--secilc/VERSION2
-rw-r--r--semodule-utils/VERSION2
-rw-r--r--semodule-utils/semodule_expand/Makefile7
-rw-r--r--semodule-utils/semodule_expand/ru/semodule_expand.831
-rw-r--r--semodule-utils/semodule_link/Makefile7
-rw-r--r--semodule-utils/semodule_link/ru/semodule_link.832
-rw-r--r--semodule-utils/semodule_package/Makefile7
-rw-r--r--semodule-utils/semodule_package/ru/semodule_package.848
-rw-r--r--semodule-utils/semodule_package/ru/semodule_unpackage.824
185 files changed, 7023 insertions, 316 deletions
diff --git a/.travis.yml b/.travis.yml
index 00d0c54a..7a9e73ce 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,21 +11,20 @@ compiler:
env:
matrix:
# Test the last version of Python and Ruby together, with some linkers
- - PYVER=python3.7 RUBYLIBVER=2.5.1
- - PYVER=python3.7 RUBYLIBVER=2.5.1 TEST_FLAGS_OVERRIDE=1
- - PYVER=python3.7 RUBYLIBVER=2.5.1 LINKER=gold
- - PYVER=python3.7 RUBYLIBVER=2.5.1 LINKER=bfd
+ - PYVER=python3.7 RUBYLIBVER=2.6
+ - PYVER=python3.7 RUBYLIBVER=2.6 TEST_FLAGS_OVERRIDE=1
+ - PYVER=python3.7 RUBYLIBVER=2.6 LINKER=gold
+ - PYVER=python3.7 RUBYLIBVER=2.6 LINKER=bfd
# Test several Python versions
- - PYVER=python2.7 RUBYLIBVER=2.5.1
- - PYVER=python3.5 RUBYLIBVER=2.5.1
- - PYVER=python3.6 RUBYLIBVER=2.5.1
- # pypy2.7 seems not to be available in Travis-CI Xenial template yet.
- # https://github.com/travis-ci/travis-ci/issues/9542
- #- PYVER=pypy RUBYLIBVER=2.5.1
- - PYVER=pypy3.5 RUBYLIBVER=2.5.1
-
- # Test several Ruby versions
+ - PYVER=python2.7 RUBYLIBVER=2.6
+ - PYVER=python3.5 RUBYLIBVER=2.6
+ - PYVER=python3.6 RUBYLIBVER=2.6
+ - PYVER=pypy2.7-6.0 RUBYLIBVER=2.6
+ - PYVER=pypy3.5-6.0 RUBYLIBVER=2.6
+
+ # Test several Ruby versions (http://rubies.travis-ci.org/)
+ - PYVER=python3.7 RUBYLIBVER=2.5.1
- PYVER=python3.7 RUBYLIBVER=2.4
- PYVER=python3.7 RUBYLIBVER=2.3
- PYVER=python3.7 RUBYLIBVER=2.2
@@ -33,9 +32,9 @@ env:
matrix:
exclude:
- compiler: clang
- env: PYVER=python3.7 RUBYLIBVER=2.5.1 LINKER=gold
+ env: PYVER=python3.7 RUBYLIBVER=2.6 LINKER=gold
- compiler: clang
- env: PYVER=python3.7 RUBYLIBVER=2.5.1 LINKER=bfd
+ env: PYVER=python3.7 RUBYLIBVER=2.6 LINKER=bfd
# Use Travis-CI Ubuntu 16.04 Xenial Xerus infrastructure, "full image" variant
sudo: required
@@ -64,14 +63,16 @@ addons:
- xmlto
install:
- # Download refpolicy Makefile for sepolgen tests
- - sudo mkdir -p /usr/share/selinux/default
- - sudo curl --retry 10 -o /usr/share/selinux/default/Makefile 'https://raw.githubusercontent.com/SELinuxProject/refpolicy/RELEASE_2_20180114/support/Makefile.devel'
- - sudo sed "s,^PREFIX :=.*,PREFIX := $TRAVIS_BUILD_DIR/installdir/usr," -i /usr/share/selinux/default/Makefile
- - sudo mkdir -p /usr/share/selinux/refpolicy/include
- - sudo curl --retry 10 -o /usr/share/selinux/refpolicy/include/build.conf 'https://raw.githubusercontent.com/SELinuxProject/refpolicy/RELEASE_2_20180114/build.conf'
+ # Download and install refpolicy headers for sepolgen tests
+ - curl --location --retry 10 -o "$TRAVIS_BUILD_DIR/refpolicy.tar.bz2" https://github.com/SELinuxProject/refpolicy/releases/download/RELEASE_2_20180701/refpolicy-2.20180701.tar.bz2
+ - tar -C "$TRAVIS_BUILD_DIR" -xvjf "$TRAVIS_BUILD_DIR/refpolicy.tar.bz2"
+ # Make refpolicy Makefile use the new toolchain when building modules
+ - sed -e "s,^PREFIX :=.*,PREFIX := \$(DESTDIR)/usr," -i "$TRAVIS_BUILD_DIR/refpolicy/support/Makefile.devel"
+ - sudo make -C "$TRAVIS_BUILD_DIR/refpolicy" install-headers
+ - sudo rm -rf "$TRAVIS_BUILD_DIR/refpolicy.tar.bz2" "$TRAVIS_BUILD_DIR/refpolicy"
- sudo mkdir -p /etc/selinux
- echo 'SELINUXTYPE=refpolicy' | sudo tee /etc/selinux/config
+ - echo 'SELINUX_DEVEL_PATH = /usr/share/selinux/refpolicy' | sudo tee /etc/selinux/sepolgen.conf
# Make sepolgen tests work without really installing anything in the real root (doing this would conflict with Ubuntu packages)
- sed -e "s,\"\(/usr/bin/[cs]\),\"$TRAVIS_BUILD_DIR/installdir\1," -i python/sepolgen/src/sepolgen/module.py
@@ -96,8 +97,12 @@ before_script:
- export PYTHON="$VIRTUAL_ENV/bin/python"
# Use the header files in /opt/python/... for Python because the virtualenvs do not provide Python.h
- export PKG_CONFIG_PATH="/opt/python/$($PYTHON -c 'import sys;print("%d.%d.%d" % sys.version_info[:3])')/lib/pkgconfig"
- # PyPy does not provide a config file for pkg-config nor a pypy-c.so
- - if echo "$PYVER" | grep -q pypy ; then export PYINC=-I$($PYTHON -c 'import sys;print(sys.prefix)')/include PYLIBS= ; fi
+ # PyPy does not provide a config file for pkg-config
+ # libpypy-c.so is provided in bin/libpypy-c.so for PyPy and bin/libpypy3-c.so for PyPy3
+ - if echo "$PYVER" | grep -q pypy ; then
+ export PYINC=-I$($PYTHON -c 'import sys;print(sys.prefix)')/include ;
+ export PYLIBS="$($PYTHON -c 'import sys;print("-L%s/bin -l%s" % (sys.prefix, "pypy-c" if sys.version_info < (3,) else "pypy3-c"))')" ;
+ fi
# Find the Ruby executable with version $RUBYLIBVER
- rvm reinstall ruby-$RUBYLIBVER --binary
@@ -124,10 +129,7 @@ script:
- make all $EXPLICIT_MAKE_VARS -k
# Set up environment variables for the tests
- - export LD_LIBRARY_PATH="$DESTDIR/usr/lib:$DESTDIR/lib"
- - export PATH="$DESTDIR/usr/sbin:$DESTDIR/usr/bin:$DESTDIR/sbin:$DESTDIR/bin:$PATH"
- - export PYTHONPATH="$DESTDIR$($PYTHON -c "from distutils.sysconfig import *;print(get_python_lib(prefix='/usr'))")"
- - export RUBYLIB="$DESTDIR/$($RUBY -e 'puts RbConfig::CONFIG["vendorlibdir"]'):$DESTDIR/$($RUBY -e 'puts RbConfig::CONFIG["vendorarchdir"]')"
+ - . ./scripts/env_use_destdir
# Show variables (to help debugging issues)
- echo "$LD_LIBRARY_PATH"
diff --git a/checkpolicy/Makefile b/checkpolicy/Makefile
index 4c817cd6..0d282ef9 100644
--- a/checkpolicy/Makefile
+++ b/checkpolicy/Makefile
@@ -1,6 +1,7 @@
#
# Makefile for building the checkpolicy program
#
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -55,6 +56,12 @@ install: all
install -m 755 $(TARGETS) $(DESTDIR)$(BINDIR)
install -m 644 checkpolicy.8 $(DESTDIR)$(MANDIR)/man8
install -m 644 checkmodule.8 $(DESTDIR)$(MANDIR)/man8
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ fi ; \
+ done
relabel: install
/sbin/restorecon $(DESTDIR)$(BINDIR)/checkpolicy
diff --git a/checkpolicy/VERSION b/checkpolicy/VERSION
index a4412fa7..29cba064 100644
--- a/checkpolicy/VERSION
+++ b/checkpolicy/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/checkpolicy/checkpolicy.8 b/checkpolicy/checkpolicy.8
index 1c8805d5..8f7dad41 100644
--- a/checkpolicy/checkpolicy.8
+++ b/checkpolicy/checkpolicy.8
@@ -3,7 +3,7 @@
checkpolicy \- SELinux policy compiler
.SH SYNOPSIS
.B checkpolicy
-.I "[\-b[F]] [\-C] [\-d] [\-M] [\-c policyvers] [\-o output_file] [input_file]"
+.I "[\-b[F]] [\-C] [\-d] [\-U handle_unknown (allow,deny,reject)] [\-M] [\-c policyvers] [\-o output_file] [\-S] [\-t target_platform (selinux,xen)] [\-V] [input_file]"
.br
.SH "DESCRIPTION"
This manual page describes the
@@ -21,30 +21,33 @@ policy.conf or policy, depending on whether the \-b flag is specified.
.B \-b,\-\-binary
Read an existing binary policy file rather than a source policy.conf file.
.TP
+.B \-F,\-\-conf
+Write policy.conf file rather than binary policy file. Can only be used with binary policy file.
+.TP
.B \-C,\-\-cil
Write CIL policy file rather than binary policy file.
.TP
.B \-d,\-\-debug
Enter debug mode after loading the policy.
.TP
-.B \-F,\-\-conf
-Write policy.conf file rather than binary policy file. Can only be used with binary policy file.
+.B \-U,\-\-handle-unknown <action>
+Specify how the kernel should handle unknown classes or permissions (deny, allow or reject).
.TP
.B \-M,\-\-mls
Enable the MLS policy when checking and compiling the policy.
.TP
+.B \-c policyvers
+Specify the policy version, defaults to the latest.
+.TP
.B \-o,\-\-output filename
Write a binary policy file to the specified filename.
.TP
-.B \-c policyvers
-Specify the policy version, defaults to the latest.
+.B \-S,\-\-sort
+Sort ocontexts before writing out the binary policy. This option makes output of checkpolicy consistent with binary policies created by semanage and secilc.
.TP
.B \-t,\-\-target
Specify the target platform (selinux or xen).
.TP
-.B \-U,\-\-handle-unknown <action>
-Specify how the kernel should handle unknown classes or permissions (deny, allow or reject).
-.TP
.B \-V,\-\-version
Show version information.
.TP
diff --git a/checkpolicy/checkpolicy.c b/checkpolicy/checkpolicy.c
index 14dc91a3..e0a00f7c 100644
--- a/checkpolicy/checkpolicy.c
+++ b/checkpolicy/checkpolicy.c
@@ -113,7 +113,7 @@ static __attribute__((__noreturn__)) void usage(const char *progname)
printf
("usage: %s [-b[F]] [-C] [-d] [-U handle_unknown (allow,deny,reject)] [-M] "
"[-c policyvers (%d-%d)] [-o output_file] [-S] "
- "[-t target_platform (selinux,xen)] [input_file]\n",
+ "[-t target_platform (selinux,xen)] [-V] [input_file]\n",
progname, POLICYDB_VERSION_MIN, POLICYDB_VERSION_MAX);
exit(1);
}
diff --git a/checkpolicy/ru/checkmodule.8 b/checkpolicy/ru/checkmodule.8
new file mode 100644
index 00000000..93e68e70
--- /dev/null
+++ b/checkpolicy/ru/checkmodule.8
@@ -0,0 +1,57 @@
+.TH CHECKMODULE 8
+.SH ИМЯ
+checkmodule \- компилятор модулей политики SELinux
+.SH ОБЗОР
+.B checkmodule
+.I "[\-h] [\-b] [\-C] [\-m] [\-M] [\-U handle_unknown ] [\-V] [\-o output_file] [input_file]"
+.SH "ОПИСАНИЕ"
+Эта страница руководства содержит описание команды
+.BR checkmodule.
+.PP
+.B checkmodule
+- это программа, которая проверяет и компилирует модуль политики безопасности SELinux в двоичное представление. Она может создавать либо базовый модуль политики (по умолчанию), либо небазовый модуль политики (параметр \-m); обычно требуется создать небазовый модуль политики для последующего добавления в существующее хранилище модулей, в котором уже есть базовый модуль, предоставленный базовой политикой. Используйте semodule_package, чтобы объединить этот модуль с соответствующим необязательным файлом контекстов файлов и таким образом создать пакет политики, а затем используйте semodule для установки пакета модуля в хранилище модулей и загрузите получившуюся политику.
+
+.SH ПАРАМЕТРЫ
+.TP
+.B \-b,\-\-binary
+Прочитать существующий файл двоичного модуля политики вместо исходного файла модуля политики. Этот параметр полезен при разработке/отладке.
+.TP
+.B \-C,\-\-cil
+Записать файл политики CIL, а не двоичный файл политики.
+.TP
+.B \-h,\-\-help
+Вывести справку.
+.TP
+.B \-m
+Создать небазовый модуль политики.
+.TP
+.B \-M,\-\-mls
+Включить поддержку MLS/MCS при проверке и компиляции модуля политики.
+.TP
+.B \-V,\-\-version
+Показать версии политики, созданные этой программой. Обратите внимание, что в настоящее время не поддерживается сборка более ранних версий.
+.TP
+.B \-o,\-\-output filename
+Записать файл двоичного модуля политики с указанным именем файла.
+Без указания имени файла checkmodule только проверит синтаксис исходного файла модуля и не будет создавать двоичный модуль.
+.TP
+.B \-U,\-\-handle-unknown <action>
+Указать, как ядро должно обрабатывать неизвестные классы или разрешения (запрещать, разрешать или отклонять).
+
+.SH ПРИМЕР
+.nf
+# Собрать небазовый модуль политики с включённой системой безопасности MLS/MCS.
+$ checkmodule \-M \-m httpd.te \-o httpd.mod
+.fi
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.B semodule(8), semodule_package(8)
+Документация SELinux по адресу http://www.nsa.gov/research/selinux,
+в частности - "Настройка политики SELinux".
+
+
+.SH АВТОРЫ
+Эта страница руководства была скопирована со страницы руководства checkpolicy, написанной Arpad Magosanyi <mag@bunuel.tii.matav.hu>,
+и отредактирована Dan Walsh <dwalsh@redhat.com>.
+Программа была написана Stephen Smalley <sds@tycho.nsa.gov>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/checkpolicy/ru/checkpolicy.8 b/checkpolicy/ru/checkpolicy.8
new file mode 100644
index 00000000..b2868e7c
--- /dev/null
+++ b/checkpolicy/ru/checkpolicy.8
@@ -0,0 +1,59 @@
+.TH CHECKPOLICY 8
+.SH ИМЯ
+checkpolicy \- компилятор политики SELinux
+.SH ОБЗОР
+.B checkpolicy
+.I "[\-b[F]] [\-C] [\-d] [\-M] [\-c policyvers] [\-o output_file] [input_file]"
+.br
+.SH "ОПИСАНИЕ"
+Эта страница руководства содержит описание команды
+.BR checkpolicy.
+.PP
+.B checkpolicy
+- это программа, которая проверяет и компилирует конфигурацию политики безопасности SELinux в двоичное представление, которое можно загрузить в ядро. Если имя входного файла не указано, checkpolicy попытается выполнить чтение из policy.conf или policy (если указан флаг \-b).
+
+.SH ПАРАМЕТРЫ
+.TP
+.B \-b,\-\-binary
+Прочитать существующий двоичный файл политики, а не исходный файл policy.conf.
+.TP
+.B \-C,\-\-cil
+Записать файл политики CIL, а не двоичный файл политики.
+.TP
+.B \-d,\-\-debug
+Войти в режим отладки после загрузки политики.
+.TP
+.B \-F,\-\-conf
+Записать файл policy.conf, а не двоичный файл политики. Этот параметр можно использовать только при работе с двоичным файлом политики.
+.TP
+.B \-M,\-\-mls
+Включить политику MLS при проверке и компиляции политики.
+.TP
+.B \-o,\-\-output filename
+Записать двоичный файл политики с указанным именем файла.
+.TP
+.B \-c policyvers
+Указать версию политики (по умолчанию используется последняя).
+.TP
+.B \-t,\-\-target
+Указать целевую платформу (selinux или xen).
+.TP
+.B \-U,\-\-handle-unknown <action>
+Указать, как ядро должно обрабатывать неизвестные классы или разрешения (запрещать, разрешать или отклонять).
+.TP
+.B \-V,\-\-version
+Показать сведения о версии.
+.TP
+.B \-h,\-\-help
+Показать сведения об использовании.
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+Документация SELinux по адресу http://www.nsa.gov/research/selinux,
+в частности - "Настройка политики SELinux".
+
+
+.SH АВТОРЫ
+Эта страница руководства была написана Arpad Magosanyi <mag@bunuel.tii.matav.hu>,
+и отредактирована Stephen Smalley <sds@tycho.nsa.gov>.
+Программа была написана Stephen Smalley <sds@tycho.nsa.gov>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/dbus/VERSION b/dbus/VERSION
index a4412fa7..29cba064 100644
--- a/dbus/VERSION
+++ b/dbus/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/dbus/org.selinux.policy b/dbus/org.selinux.policy
index 01266102..9772127b 100644
--- a/dbus/org.selinux.policy
+++ b/dbus/org.selinux.policy
@@ -70,9 +70,9 @@
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
- <action id="org.selinux.change_policy_type">
- <description>SELinux write access</description>
- <message>System policy prevents change_policy_type access to SELinux</message>
+ <action id="org.selinux.change_default_mode">
+ <description>Change SELinux default enforcing mode</description>
+ <message>System policy prevents change_default_policy access to SELinux</message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
diff --git a/gui/Makefile b/gui/Makefile
index d42348b5..c2f982de 100644
--- a/gui/Makefile
+++ b/gui/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
SHAREDIR ?= $(PREFIX)/share/system-config-selinux
@@ -34,6 +35,12 @@ install: all
install -m 644 $(TARGETS) $(DESTDIR)$(SHAREDIR)
install -m 644 system-config-selinux.8 $(DESTDIR)$(MANDIR)/man8
install -m 644 selinux-polgengui.8 $(DESTDIR)$(MANDIR)/man8
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
install -m 644 system-config-selinux.png $(DESTDIR)$(DATADIR)/pixmaps
install -m 644 system-config-selinux.png $(DESTDIR)$(DATADIR)/icons/hicolor/24x24/apps
install -m 644 system-config-selinux.png $(DESTDIR)$(DATADIR)/system-config-selinux
diff --git a/gui/VERSION b/gui/VERSION
index a4412fa7..29cba064 100644
--- a/gui/VERSION
+++ b/gui/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/gui/polgen.ui b/gui/polgen.ui
index aa4c70af..6a8c0672 100644
--- a/gui/polgen.ui
+++ b/gui/polgen.ui
@@ -1975,7 +1975,7 @@ Tab</property>
<object class="GtkLabel" id="label17">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label">Add File</property>
+ <property name="label" translatable="yes">Add File</property>
<property name="use_underline">True</property>
</object>
<packing>
@@ -2028,7 +2028,7 @@ Tab</property>
<object class="GtkLabel" id="label16">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label">Add Directory</property>
+ <property name="label" translatable="yes">Add Directory</property>
<property name="use_underline">True</property>
</object>
<packing>
@@ -2176,7 +2176,7 @@ Tab</property>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label">Add Boolean</property>
+ <property name="label" translatable="yes">Add Boolean</property>
<property name="use_underline">True</property>
</object>
<packing>
diff --git a/gui/ru/selinux-polgengui.8 b/gui/ru/selinux-polgengui.8
new file mode 100644
index 00000000..a8e692a6
--- /dev/null
+++ b/gui/ru/selinux-polgengui.8
@@ -0,0 +1,35 @@
+.TH "selinux-polgengui" "8" "8 апреля 2013" "Руководство по утилитам настройки системы"
+
+.SH ИМЯ
+selinux\-polgengui \- утилита для создания политики SELinux
+
+.SH ОБЗОР
+.B selinux-polgengui
+
+.SH ОПИСАНИЕ
+\fBselinux-polgengui\fP - графическая утилита, которую можно использовать, чтобы создать платформу для сборки политики SELinux.
+.SH ПАРАМЕТРЫ
+Нет
+
+.SH ФАЙЛЫ
+\fi/usr/bin/selinux-polgengui\fP
+
+.SH Примеры
+Чтобы запустить программу, введите:
+
+selinux-polgengui
+
+.PP
+.SH "СМОТРИТЕ ТАКЖЕ"
+.TP
+selinux(1), sepolicy(8), sepolicy-generate(8)
+.PP
+
+.SH СООБЩЕНИЯ ОБ ОШИБКАХ
+Отправляйте сообщения об ошибках по адресу <http://bugzilla.redhat.com>.
+
+.SH ЛИЦЕНЗИЯ И АВТОРЫ
+\fBselinux-polgengui\fP распространяется на условиях Стандартной Общественной Лицензии
+GNU, авторские права принадлежат Red Hat, Inc.
+.br
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/gui/ru/system-config-selinux.8 b/gui/ru/system-config-selinux.8
new file mode 100644
index 00000000..0b91a3bd
--- /dev/null
+++ b/gui/ru/system-config-selinux.8
@@ -0,0 +1,36 @@
+.TH "system-config-selinux" "8" "8 апреля 2013" "Руководство по утилитам настройки системы"
+
+.SH ИМЯ
+system\-config\-selinux \- утилита для управления SELinux
+
+.SH ОБЗОР
+.B system-config-selinux
+
+.SH ОПИСАНИЕ
+Утилита \fBsystem-config-selinux\fP предоставляет графический интерфейс для управления конфигурацией SELinux.
+
+.SH ПАРАМЕТРЫ
+Нет
+
+.SH ФАЙЛЫ
+\fi/usr/bin/system-config-selinux\fP
+
+.SH Примеры
+Чтобы запустить программу, введите:
+
+system-config-selinux
+
+.PP
+.SH "СМОТРИТЕ ТАКЖЕ"
+.TP
+selinux(1), semanage(8)
+.PP
+
+.SH СООБЩЕНИЯ ОБ ОШИБКАХ
+Отправляйте сообщения об ошибках по адресу <http://bugzilla.redhat.com>.
+
+.SH ЛИЦЕНЗИЯ И АВТОРЫ
+\fBsystem-config-selinux\fP распространяется на условиях Стандартной Общественной Лицензии
+GNU, авторские права принадлежат Red Hat, Inc.
+.br
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/Android.bp b/libselinux/Android.bp
index f0857fb5..24c6fdb3 100644
--- a/libselinux/Android.bp
+++ b/libselinux/Android.bp
@@ -104,6 +104,7 @@ cc_library {
vndk: {
enabled: true,
},
+ double_loadable: true,
recovery_available: true,
host_supported: true,
diff --git a/libselinux/VERSION b/libselinux/VERSION
index a4412fa7..29cba064 100644
--- a/libselinux/VERSION
+++ b/libselinux/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/libselinux/man/Makefile b/libselinux/man/Makefile
index f634d1fe..4b3626d2 100644
--- a/libselinux/man/Makefile
+++ b/libselinux/man/Makefile
@@ -1,8 +1,13 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
-MAN8DIR ?= $(PREFIX)/share/man/man8
-MAN5DIR ?= $(PREFIX)/share/man/man5
-MAN3DIR ?= $(PREFIX)/share/man/man3
+MANDIR ?= $(PREFIX)/share/man
+MAN3SUBDIR ?= man3
+MAN5SUBDIR ?= man5
+MAN8SUBDIR ?= man8
+MAN3DIR ?= $(MANDIR)/$(MAN3SUBDIR)
+MAN5DIR ?= $(MANDIR)/$(MAN5SUBDIR)
+MAN8DIR ?= $(MANDIR)/$(MAN8SUBDIR)
all:
@@ -13,6 +18,20 @@ install: all
install -m 644 man3/*.3 $(DESTDIR)$(MAN3DIR)
install -m 644 man5/*.5 $(DESTDIR)$(MAN5DIR)
install -m 644 man8/*.8 $(DESTDIR)$(MAN8DIR)
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang}/man3 ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/$(MAN3SUBDIR) ; \
+ install -m 644 $${lang}/man3/*.3 $(DESTDIR)$(MANDIR)/$${lang}/$(MAN3SUBDIR) ; \
+ fi ; \
+ if [ -e $${lang}/man5 ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/$(MAN5SUBDIR) ; \
+ install -m 644 $${lang}/man5/*.5 $(DESTDIR)$(MANDIR)/$${lang}/$(MAN5SUBDIR) ; \
+ fi ; \
+ if [ -e $${lang}/man8 ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/$(MAN8SUBDIR) ; \
+ install -m 644 $${lang}/man8/*.8 $(DESTDIR)$(MANDIR)/$${lang}/$(MAN8SUBDIR) ; \
+ fi ; \
+ done
relabel:
diff --git a/libselinux/man/ru/man5/booleans.5 b/libselinux/man/ru/man5/booleans.5
new file mode 100644
index 00000000..1471e58b
--- /dev/null
+++ b/libselinux/man/ru/man5/booleans.5
@@ -0,0 +1,83 @@
+.TH "booleans" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+booleans \- файлы конфигурации логических переключателей SELinux
+.
+.SH "ОПИСАНИЕ"
+Файл \fIbooleans\fR (если имеется) содержит логические переключатели, обеспечивающие поддержку определённого дистрибутива.
+.sp
+Файл \fIbooleans.local\fR (если имеется) содержит созданные локально логические переключатели.
+.sp
+Оба файла содержат список имён логических переключателей и соответствующих этим именам значений.
+.sp
+Обычно файл \fIbooleans\fR и/или файл \fIbooleans.local\fR отсутствуют (они устарели). Но эти файлы могут присутствовать, если имеется приложение, которое поддерживает SELinux и использует перечисленные далее функции libselinux:
+.sp
+.RS
+.BR security_set_boolean_list "(3) "
+.RS
+Записывает файл \fIbooleans.local\fR, если флаг \fIpermanent\fR = \fI1\fR.
+.sp
+.RE
+.RE
+.RS
+.BR security_load_booleans "(3) "
+.RS
+Выполняет поиск файла \fIbooleans\fR и/или файла \fIbooleans.local\fR по адресу \fBselinux_booleans_path\fR(3) (если в качестве параметра не указан конкретный путь).
+.RE
+.RE
+.sp
+\fBbooleans\fR(8) содержит подробные сведения о логических переключателях, а \fBsetsebool\fR(8) - описание того, как установить логические переключатели, которые не будут сбрасываться при перезагрузках.
+.sp
+\fBselinux_booleans_path\fR(3) вернёт путь активной политики к этим файлам. Файлы логических переключателей по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/booleans
+.br
+.I /etc/selinux/{SELINUXTYPE}/booleans.local
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.
+.SH "ФОРМАТ ФАЙЛА"
+Оба файла имеют один и тот же формат и содержат одно или несколько имён логических переключателей и их значения.
+.sp
+Формат:
+.RS
+.I boolean_name
+.I value
+.sp
+.RE
+Где:
+.RS
+.I boolean_name
+.RS
+Имя логического переключателя.
+.RE
+.I value
+.RS
+Значение логического переключателя по умолчанию. Может быть одним из следующих:
+.RS
+.IR true " | " false " | " 1 " | " 0
+.RE
+.RE
+.RE
+.sp
+Если
+.B SETLOCALDEFS
+указано в файле
+.I config
+SELinux (см.
+.BR selinux_config "(5)), то " selinux_mkload_policy "(3) будет проверять наличие файла "
+.I booleans.local
+по адресу
+.BR selinux_booleans_path (3),
+а также файла
+.I local.users
+(см.
+.BR local.users "(5)) по адресу " selinux_users_path "(3). "
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " booleans "(8), " setsebool "(8), " semanage "(8), " selinux_booleans_path "(3), " security_set_boolean_list "(3), " security_load_booleans "(3), " selinux_mkload_policy "(3), " selinux_users_path "(3), " selinux_config "(5), " local.users "(5) "
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/customizable_types.5 b/libselinux/man/ru/man5/customizable_types.5
new file mode 100644
index 00000000..e0015864
--- /dev/null
+++ b/libselinux/man/ru/man5/customizable_types.5
@@ -0,0 +1,63 @@
+.TH "customizable_types" "5" "28 ноября 2011" "Security Enhanced Linux" "SELinux configuration"
+.SH "ИМЯ"
+customizable_types \- файл конфигурации настраиваемых типов SELinux
+.
+.SH "ОПИСАНИЕ"
+Файл \fIcustomizable_types\fR содержит список типов, которые можно каким-либо образом настраивать с помощью поддерживающих SELinux приложений.
+.sp
+Обычно это тип контекста файла, который устанавливается для файлов, к которым требуется предоставить общий доступ для определённых доменов, и когда администратору необходимо управлять этим типом вручную.
+.sp
+Возможность использования настраиваемых типов устарела. Рекомендуется использовать
+.BR semanage (8)
+.BR fcontext (8)
+.BR ... (8).
+Тем не менее, поддерживающие SELinux приложения, например,
+.BR setfiles (8),
+будут использовать эту информацию для получения списка типов, относящихся к файлам, для которых не следует повторно проставлять метки.
+.sp
+.BR selinux_customizable_types_path (3)
+вернёт путь активной политики к этому файлу. Файл настраиваемых типов по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/customizable_types
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+.BR is_context_customizable (3)
+выполняет чтение этого файла, чтобы определить, является ли контекст настраиваемым для активной политики.
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка в файле состоит из следующих компонентов:
+.RS
+.I type
+.RE
+.sp
+Где:
+.RS
+.I type
+.RS
+Определённый в политике тип, который можно настроить.
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# ./contexts/customizable_types
+.br
+mount_loopback_t
+.br
+public_content_rw_t
+.br
+public_content_t
+.br
+swapfile_t
+.br
+sysadm_untrusted_content_t
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " selinux_customizable_types_path "(3), " is_context_customizable "(3), " semanage "(8), " setfiles "(8), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/default_contexts.5 b/libselinux/man/ru/man5/default_contexts.5
new file mode 100644
index 00000000..ca1361d9
--- /dev/null
+++ b/libselinux/man/ru/man5/default_contexts.5
@@ -0,0 +1,75 @@
+.TH "default_contexts" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+default_contexts \- файл конфигурации контекстов SELinux по умолчанию
+.
+.SH "ОПИСАНИЕ"
+Файл конфигурации контекстов по умолчанию \fIdefault_contexts\fR содержит записи, которые позволяют поддерживающим SELinux приложениям для входа, например,
+.BR PAM "(8), настроить контекст пользователя. "
+.sp
+Поддерживающие SELinux приложения для входа обычно используют одну или несколько из следующих функций libselinux, которые выполняют чтение этих файлов по пути активной политики:
+.RS
+.BR get_default_context "(3) "
+.br
+.BR get_ordered_context_list "(3) "
+.br
+.BR get_ordered_context_list_with_level "(3) "
+.br
+.BR get_default_context_with_level "(3) "
+.br
+.BR get_default_context_with_role "(3) "
+.br
+.BR get_default_context_with_rolelevel "(3) "
+.br
+.BR query_user_context "(3) "
+.br
+.BR manual_user_enter_context "(3) "
+.RE
+.sp
+Путь к файлу конфигурации контекстов по умолчанию для активной политики возвращает \fBselinux_default_contexts_path\fR(3). По умолчанию файл контекстов по умолчанию находится по адресу:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/default_contexts
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка в файле конфигурации по умолчанию состоит из следующих компонентов:
+.RS
+.I login_process user_login_process [user_login_process] ...
+.RE
+.sp
+Где:
+.RS
+.I login_process
+.RS
+Состоит из записи \fIrole\fB:\fItype\fR[\fB:\fIrange\fR], которая представляет собой контекст процесса входа, определённый в политике.
+.RE
+.I user_login_process
+.RS
+Состоит из одной или нескольких записей \fIrole\fB:\fItype\fR[\fB:\fIrange\fR], которые представляют собой контекст процесса входа пользователя, определённый в политике.
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# ./contexts/default_contexts
+.br
+system_r:crond_t:s0 system_r:system_crond_t:s0
+.br
+system_r:local_login_t:s0 user_r:user_t:s0 staff_r:staff_t:s0
+.br
+system_r:remote_login_t:s0 user_r:user_t:s0
+.br
+system_r:sshd_t:s0 user_r:user_t:s0
+.br
+system_r:sulogin_t:s0 sysadm_r:sysadm_t:s0
+.br
+system_r:xdm_t:s0 user_r:user_t:s0
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " selinux_default_contexts_path "(3), " PAM "(8), " selinux_default_type_path "(3), " get_default_context "(3), " get_ordered_context_list "(3), " get_ordered_context_list_with_level "(3), " get_default_context_with_level "(3), " get_default_context_with_role "(3), " get_default_context_with_rolelevel "(3), " query_user_context "(3), " manual_user_enter_context "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/default_type.5 b/libselinux/man/ru/man5/default_type.5
new file mode 100644
index 00000000..54e2c100
--- /dev/null
+++ b/libselinux/man/ru/man5/default_type.5
@@ -0,0 +1,43 @@
+.TH "default_type" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+default_type \- файл конфигурации типов SELinux по умолчанию
+.
+.SH "ОПИСАНИЕ"
+Файл \fIdefault_type\fR содержит записи, которые позволяют поддерживающим SELinux приложениям, таким как \fBnewrole\fR(1), выбирать для роли тип по умолчанию, если не предоставлен другой тип.
+.sp
+\fBselinux_default_type_path\fR(3) возвращает путь активной политики к этому файлу. По умолчанию файл типов по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/default_type
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+\fBget_default_type\fR(3) выполняет чтение этого файла, чтобы определить тип для активной политики.
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка внутри файла \fIdefault_type\fR форматируется записями \fIrole\fB:\fItype\fR, где:
+.RS
+.I role
+.RS
+Роль SELinux.
+.RE
+.I type
+.RS
+Тип домена, который возвращается для этой роли.
+.RE
+.
+.SH "ПРИМЕР"
+# ./contexts/default_type
+.br
+auditadm_r:auditadm_t
+.br
+user_r:user_t
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " get_default_type "(3), " newrole "(1), " selinux_default_type_path "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/failsafe_context.5 b/libselinux/man/ru/man5/failsafe_context.5
new file mode 100644
index 00000000..01d6b0ea
--- /dev/null
+++ b/libselinux/man/ru/man5/failsafe_context.5
@@ -0,0 +1,68 @@
+.TH "failsafe_context" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+failsafe_context \- файл конфигурации надёжного контекста SELinux
+.
+.SH "ОПИСАНИЕ"
+Файл
+.I failsafe_context
+позволяет поддерживающим SELinux приложениям, таким как
+.BR PAM "(8), "
+получать известный действительный контекст входа для администратора, если в других расположениях отсутствуют действительные записи по умолчанию.
+.sp
+.BR selinux_failsafe_context_path "(3) "
+возвращает путь активной политики к этому файлу. Файл надёжного контекста по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/failsafe_context
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+Следующие функции выполняют чтение этого файла по пути активной политики, если им не удаётся получить контекст по умолчанию:
+.br
+.RS
+.BR get_default_context "(3) "
+.br
+.BR get_ordered_context_list "(3) "
+.br
+.BR get_ordered_context_list_with_level "(3) "
+.br
+.BR get_default_context_with_level "(3) "
+.br
+.BR get_default_context_with_role "(3) "
+.br
+.BR get_default_context_with_rolelevel "(3) "
+.br
+.BR query_user_context "(3) "
+.br
+.BR manual_user_enter_context "(3) "
+.RE
+.
+.SH "ФОРМАТ ФАЙЛА"
+Файл состоит из следующей однострочной записи:
+.RS
+\fIrole\fB:\fItype\fR[\fB:\fIrange\fR]
+.RE
+.sp
+Где:
+.RS
+.I role
+.I type
+.I range
+.RS
+Роль, тип и необязательный диапазон (для MCS/MLS), разделённые двоеточиями (:), которые формируют действительный контекст процесса входа для получения администратором доступа к системе.
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# ./contexts/failsafe_context
+.br
+unconfined_r:unconfined_t:s0
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " selinux_failsafe_context_path "(3), " PAM "(8), " selinux_default_type_path "(3), " get_default_context "(3), " get_ordered_context_list "(3), " get_ordered_context_list_with_level "(3), " get_default_context_with_level "(3), " get_default_context_with_role "(3), " get_default_context_with_rolelevel "(3), " query_user_context "(3), " manual_user_enter_context "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/file_contexts.5 b/libselinux/man/ru/man5/file_contexts.5
new file mode 100644
index 00000000..9c022d8f
--- /dev/null
+++ b/libselinux/man/ru/man5/file_contexts.5
@@ -0,0 +1 @@
+.so man5/selabel_file.5
diff --git a/libselinux/man/ru/man5/file_contexts.homedirs.5 b/libselinux/man/ru/man5/file_contexts.homedirs.5
new file mode 100644
index 00000000..9c022d8f
--- /dev/null
+++ b/libselinux/man/ru/man5/file_contexts.homedirs.5
@@ -0,0 +1 @@
+.so man5/selabel_file.5
diff --git a/libselinux/man/ru/man5/file_contexts.local.5 b/libselinux/man/ru/man5/file_contexts.local.5
new file mode 100644
index 00000000..9c022d8f
--- /dev/null
+++ b/libselinux/man/ru/man5/file_contexts.local.5
@@ -0,0 +1 @@
+.so man5/selabel_file.5
diff --git a/libselinux/man/ru/man5/file_contexts.subs.5 b/libselinux/man/ru/man5/file_contexts.subs.5
new file mode 100644
index 00000000..9c022d8f
--- /dev/null
+++ b/libselinux/man/ru/man5/file_contexts.subs.5
@@ -0,0 +1 @@
+.so man5/selabel_file.5
diff --git a/libselinux/man/ru/man5/file_contexts.subs_dist.5 b/libselinux/man/ru/man5/file_contexts.subs_dist.5
new file mode 100644
index 00000000..9c022d8f
--- /dev/null
+++ b/libselinux/man/ru/man5/file_contexts.subs_dist.5
@@ -0,0 +1 @@
+.so man5/selabel_file.5
diff --git a/libselinux/man/ru/man5/local.users.5 b/libselinux/man/ru/man5/local.users.5
new file mode 100644
index 00000000..ca9f201d
--- /dev/null
+++ b/libselinux/man/ru/man5/local.users.5
@@ -0,0 +1,72 @@
+.TH "local.users" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+local.users \- файл конфигурации локальных пользователей SELinux
+.
+.SH "ОПИСАНИЕ"
+Файл содержит определения локальных пользователей в виде инструкций пользователей на языке политики. Этот файл имеется только в старых версиях систем SELinux, так как он устарел и был заменён службами \fBsemanage\fR(8).
+.sp
+\fBselinux_mkload_policy\fR(3) выполняет чтение этого файла только тогда, когда для \fBSETLOCALDEFS\fR в файле \fIconfig\fR SELinux (см. \fBselinux_config\fR(5)) установлено значение \fI1\fR.
+.sp
+.BR selinux_users_path "(3) "
+возвращает путь активной политики к каталогу, в котором расположен файл. Файл локальных пользователей по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/users/local.users
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.
+.SH "ФОРМАТ ФАЙЛА"
+Файл состоит из одной или нескольких записей, которые заканчиваются '\fB;\fR', каждая на отдельной строке:
+.RS
+\fBuser \fIseuser_id \fBroles \fIrole_id\fR [[\fBlevel \fIlevel\fR] [\fBrange \fIrange\fR]]\fB;\fR
+.RE
+.sp
+Где:
+.RS
+.B user
+.RS
+Ключевое слово user (пользователь).
+.RE
+.I seuser_id
+.RS
+Идентификатор пользователя SELinux.
+.RE
+.B roles
+.RS
+Ключевое слово roles (роли).
+.RE
+.I role_id
+.RS
+Один или несколько ранее объявленных идентификаторов ролей. Несколько идентификаторов ролей - это разделённый пробелами список, который заключён в скобки '{}'.
+.RE
+.B level
+.RS
+Если настроена система MLS/MCS, ключевое слово level (уровень).
+.RE
+.I level
+.RS
+Уровень безопасности пользователя по умолчанию. Обратите внимание, что обязательным является только компонент конфиденциальности уровня (например, s0).
+.RE
+.B range
+.RS
+Если настроена система MLS/MCS, ключевое слово range (диапазон).
+.RE
+.I range
+.RS
+Текущий уровень и уровень допуска пользователя. Они разделены дефисом '\fB-\fR' (как показано в разделе \fBПРИМЕР\fR).
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# ./users/local.users
+.br
+user test_u roles staff_r level s0 range s0 \- s15:c0.c1023;
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " semanage "(8), " selinux_users_path "(3), " selinux_config "(5), " selinux_mkload_policy "(3) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/media.5 b/libselinux/man/ru/man5/media.5
new file mode 100644
index 00000000..14f00f28
--- /dev/null
+++ b/libselinux/man/ru/man5/media.5
@@ -0,0 +1 @@
+.so man5/selabel_media.5
diff --git a/libselinux/man/ru/man5/removable_context.5 b/libselinux/man/ru/man5/removable_context.5
new file mode 100644
index 00000000..0d83ef26
--- /dev/null
+++ b/libselinux/man/ru/man5/removable_context.5
@@ -0,0 +1,39 @@
+.TH "removable_context" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+removable_context \- файл конфигурации SELinux-контекста съёмных устройств
+.
+.SH "ОПИСАНИЕ"
+Этот файл содержит метку по умолчанию, которую следует использовать для съёмных устройств.
+.sp
+.BR selinux_removable_context_path "(3) "
+вернёт путь активной политики к этому файлу. Файл контекста съёмных устройств по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/removable_context
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.
+.SH "ФОРМАТ ФАЙЛА"
+Файл состоит из следующей однострочной записи:
+.RS
+.IB user : role : type \fR[\fB:\fIrange\fR]
+.RE
+.sp
+Где:
+.RS
+.I user role type range
+.RS
+Пользователь, роль, тип и необязательный диапазон (для MCS/MLS), разделённые двоеточиями (:), которые будут применены к съёмным устройствам.
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# ./contexts/removable_contexts
+.br
+system_u:object_r:removable_t:s0
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux "(8), " selinux_removable_context_path "(3), " selinux_config "(5) "
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/secolor.conf.5 b/libselinux/man/ru/man5/secolor.conf.5
new file mode 100644
index 00000000..4c1236ae
--- /dev/null
+++ b/libselinux/man/ru/man5/secolor.conf.5
@@ -0,0 +1,180 @@
+.TH "secolor.conf" "5" "08 апреля 2011" "Документация API SELinux"
+.SH "ИМЯ"
+secolor.conf \- файл конфигурации цвета SELinux
+.
+.SH "ОПИСАНИЕ"
+Этот необязательный файл управляет цветом, который назначается компонентам контекста, связанным с контекстом
+.I raw
+, который передаётся с помощью
+.BR selinux_raw_context_to_color "(3),"
+когда поддерживающее SELinux приложение должно показать сведения о контексте в цвете.
+.sp
+.BR selinux_raw_context_to_color "(3)"
+получает эту информацию о цвете из файла активной политики
+.B secolor.conf
+, возвращённого
+.BR selinux_colors_path "(3)."
+.
+.SH "ФОРМАТ ФАЙЛА"
+Формат файла:
+.RS
+.B color
+.I color_name
+.BI "= #"color_mask
+.br
+[...]
+.sp
+.I context_component string
+.B =
+.I fg_color_name bg_color_name
+.br
+[...]
+.sp
+.RE
+
+Где:
+.br
+.B color
+.RS
+Ключевое слово цвета (color). Каждая запись цвета находится на новой строке.
+.RE
+.I color_name
+.RS
+Название цвета из одного слова (например, red (красный)).
+.RE
+.I color_mask
+.RS
+Маска цвета, начинающаяся с хэша (#), который описывает шестнадцатиричные RGB-цвета, где black (чёрный) #000000 и white (белый) #ffffff.
+.RE
+.I context_component
+.RS
+Имя компонента контекста, должно быть одним из следующих:
+.br
+.RS
+пользователь, роль, тип или диапазон
+.RE
+Каждая запись
+.IR context_component " " string " ..."
+находится на новой строке.
+.RE
+.I string
+.RS
+Это строка
+.I context_component
+, которая будет сопоставляться с компонентом контекста
+.I raw
+, который передаётся
+.BR selinux_raw_context_to_color "(3)."
+.br
+Подстановочный знак '*' можно использовать для сопоставления какой-либо неопределённой строки только записям
+.I context_component
+пользователя, роли или типа.
+.RE
+
+.I fg_color_name
+.RS
+Строка color_name, которая будет использоваться как цвет переднего плана. Маска цвета
+.I color_mask
+также может использоваться.
+.RE
+.I bg_color_name
+.RS
+Строка color_name, которая будет использоваться как цвет фона. Маска цвета
+.I color_mask
+также может использоваться.
+.RE
+.
+.SH "ПРИМЕРЫ"
+Записи примера 1:
+.RS
+color black = #000000
+.br
+color green = #008000
+.br
+color yellow = #ffff00
+.br
+color blue = #0000ff
+.br
+color white = #ffffff
+.br
+color red = #ff0000
+.br
+color orange = #ffa500
+.br
+color tan = #D2B48C
+.sp
+user * = black white
+.br
+role * = white black
+.br
+type * = tan orange
+.br
+range s0\-s0:c0.c1023 = black green
+.br
+range s1\-s1:c0.c1023 = white green
+.br
+range s3\-s3:c0.c1023 = black tan
+.br
+range s5\-s5:c0.c1023 = white blue
+.br
+range s7\-s7:c0.c1023 = black red
+.br
+range s9\-s9:c0.c1023 = black orange
+.br
+range s15:c0.c1023 = black yellow
+.RE
+
+.sp
+Записи примера 2:
+.RS
+color black = #000000
+.br
+color green = #008000
+.br
+color yellow = #ffff00
+.br
+color blue = #0000ff
+.br
+color white = #ffffff
+.br
+color red = #ff0000
+.br
+color orange = #ffa500
+.br
+color tan = #d2b48c
+.sp
+user unconfined_u = #ff0000 green
+.br
+role unconfined_r = red #ffffff
+.br
+type unconfined_t = red orange
+.br
+user user_u = black green
+.br
+role user_r = white black
+.br
+type user_t = tan red
+.br
+user xguest_u = black yellow
+.br
+role xguest_r = black red
+.br
+type xguest_t = black green
+.br
+user sysadm_u = white black
+.br
+range s0:c0.c1023 = black white
+.br
+user * = black white
+.br
+role * = black white
+.br
+type * = black white
+.RE
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux "(8), " selinux_raw_context_to_color "(3), " selinux_colors_path "(3)"
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/securetty_types.5 b/libselinux/man/ru/man5/securetty_types.5
new file mode 100644
index 00000000..ce0aa324
--- /dev/null
+++ b/libselinux/man/ru/man5/securetty_types.5
@@ -0,0 +1,49 @@
+.TH "securetty_types" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+securetty_types \- файл конфигурации типа безопасного терминала (tty) SELinux
+.
+.SH "ОПИСАНИЕ"
+Файл
+.I securetty_types
+содержит список типов, связанных с типом безопасного tty, которые определены в политике для использования поддерживающими SELinux приложениями.
+.sp
+.BR selinux_securetty_types_path "(3) "
+вернёт путь активной политики к этому файлу. Файл типов securetty по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/securetty_types
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+.BR selinux_check_securetty_context "(3) выполняет чтение этого файла, чтобы определить, установлен ли в активной политике контекст для безопасного tty. "
+.sp
+Поддерживающие SELinux приложения, такие как
+.BR newrole "(1), используют эту информацию для проверки состояния tty. "
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка в файле состоит из следующей записи:
+.sp
+.RS
+.I type
+.RS
+Одна или несколько записей типов, которые определены в политике для безопасных устройств tty.
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# ./contexts/securetty_types
+.br
+sysadm_tty_device_t
+.br
+user_tty_device_t
+.br
+staff_tty_device_t
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " selinux_securetty_types_path "(3), " newrole "(1), " selinux_check_securetty_context "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/selabel_db.5 b/libselinux/man/ru/man5/selabel_db.5
new file mode 100644
index 00000000..1c667e83
--- /dev/null
+++ b/libselinux/man/ru/man5/selabel_db.5
@@ -0,0 +1,219 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Author: KaiGai Kohei <kaigai@ak.jp.nec.com> 2009
+.TH "selabel_db" "5" "01 декабря 2011" "Security Enhanced Linux" "Документация API SELinux"
+.SH "ИМЯ"
+selabel_db \- интерфейс проставления меток SELinux в пространстве пользователя и формат файла конфигурации для внутренней службы контекстов объектов RDBMS (реляционная СУБД)
+.
+.SH "ОБЗОР"
+.B #include <selinux/label.h>
+.sp
+.BI "int selabel_lookup(struct selabel_handle *" hnd ,
+.in +\w'int selabel_lookup('u
+.BI "char **" context ,
+.br
+.BI "const char *" object_name ", int " object_type ");"
+.in
+.sp
+.BI "int selabel_lookup_raw(struct selabel_handle *" hnd ,
+.in +\w'int selabel_lookup('u
+.BI "char **" context ,
+.br
+.BI "const char *" object_name ", int " object_type ");"
+.
+.SH "ОПИСАНИЕ"
+Внутренняя служба контекста базы данных сопоставляет имя и класс объекта с контекстами безопасности. Это действие позволяет найти правильный контекст для объектов базы данных при повторном проставлении меток для определённой базы данных. Необходимо освободить возвращённый \fIcontext\fR с помощью \fBfreecon\fR(3).
+.br
+\fBselabel_lookup\fR(3) описывает функцию с её возвращаемыми значениями и кодами ошибок.
+.sp
+\fIobject_name\fR должно быть полным именем, которое использует иерархию объектов базы данных. Например, таблица \fBpg_class\fR в базе данных \fBpostgres\fR и схема \fBpg_catalog\fR должны быть указаны следующим образом:
+.RS
+.B postgres.pg_catalog.pg_class
+.RE
+.sp
+В разделе \fBПРИМЕЧАНИЯ\fR доступны более подробные сведения о поддержке баз данных для иерархий пространства имён.
+.sp
+Для аргумента \fIobject_type\fR должно быть установлено одно из следующих значений:
+.RS
+.TP
+.B SELABEL_DB_DATABASE
+Аргумент
+.I object_name
+определяет имя самой базы данных, например, "postgres".
+.TP
+.B SELABEL_DB_SCHEMA
+Аргумент
+.I object_name
+определяет имя объекта схемы, например, "postgres.public".
+.TP
+.B SELABEL_DB_TABLE
+Аргумент
+.I object_name
+определяет имя объекта таблицы, например, "postgres.public.my_table"
+.TP
+.B SELABEL_DB_COLUMN
+Аргумент
+.I object_name
+определяет имя объекта столбца, например, "postgres.public.my_table.user_id"
+.TP
+.B SELABEL_DB_TUPLE
+Аргумент
+.I object_name
+определяет имя объекта таблицы, содержащей кортежи, для которых требуется повторно проставить метки, например, "postgresql.public.my_table". Следует учитывать, что нет способа идентифицировать отдельные объекты кортежа (за исключением условия WHERE для инструкций DML), потому что у них нет имён.
+.TP
+.B SELABEL_DB_PROCEDURE
+Аргумент
+.I object_name
+определяет имя объекта процедуры, например, "postgres.public.my_func". Следует учитывать, что поиск отдельных контекстов безопасности для процедур с одинаковыми именами, но разными аргументами не поддерживается.
+.TP
+.B SELABEL_DB_SEQUENCE
+Аргумент
+.I object_name
+определяет имя объекта последовательности, например, "postgres.public.my_seq".
+.TP
+.B SELABEL_DB_BLOB
+Аргумент
+.I object_name
+определяет имя большого объекта, например, "postgres.16308".
+Следует учитывать, что у большого объекта нет имени, поэтому он идентифицируется по значению соответствующего идентификатора.
+.TP
+.B SELABEL_DB_VIEW
+Аргумент
+.I object_name
+определяет имя объекта просмотра, например, "postgres.public.my_view".
+.TP
+.B SELABEL_DB_LANGUAGE
+Аргумент
+.I object_name
+определяет имя объекта языка, например, "postgres.public.tcl".
+.TP
+.B SELABEL_DB_EXCEPTION
+Аргумент
+.I object_name
+определяет имя объекта исключения.
+.TP
+.B SELABEL_DB_DATATYPE
+Аргумент
+.I object_name
+определяет имя объекта типа или домена, например, postgres.public.my_type.
+.RE
+.sp
+Все сообщения, созданные с помощью \fBselabel_lookup\fR(3), по умолчанию отправляются в \fIstderr\fR. Это поведение можно изменить с помощью \fBselinux_set_callback\fR(3).
+.sp
+.BR selabel_lookup_raw (3)
+работает аналогично \fBselabel_lookup\fR(3), но не выполняет преобразование контекста.
+.sp
+В разделе \fBФАЙЛЫ\fR приводится описание файлов конфигурации, которые используются для определения контекста объекта базы данных.
+.
+.SH "ПАРАМЕТРЫ"
+Помимо глобальных параметров, описание которых приведено в \fBselabel_open\fR(3), эта внутренняя служба распознаёт следующие параметры:
+.RS
+.TP
+.B SELABEL_OPT_PATH
+Значение этого параметра, отличное от null, определяет путь к файлу, который будет открыт вместо стандартного файла контекста базы данных.
+По умолчанию параметр пытается открыть файл спецификации, предназначенный для SE-PostgreSQL; если этот интерфейс используется другой реляционной СУБД, параметр должен явно объявить файл спецификации, предназначенный для такой реляционной СУБД (подробные сведения см. в разделе \fBФАЙЛЫ\fR).
+.RE
+.
+.SH "ФАЙЛЫ"
+То, какой файл контекстов базы данных будет использоваться для получения контекста, зависит от параметра \fBSELABEL_OPT_PATH\fR, переданного в \fBselabel_open\fR(3). Если \fINULL\fR, то значением \fBSELABEL_OPT_PATH\fR по умолчанию станет расположение контекстов базы данных активной политики (возвращённое \fBselinux_sepgsql_context_path\fR(3)). В ином случае будет использоваться фактическое указанное значение \fBSELABEL_OPT_PATH\fR (этот вариант необходимо использовать для поддержки баз данных, отличных от SE-PostgreSQL).
+.sp
+Файл контекстов объекта базы данных по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/sepgsql_context
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+Записи внутри файла контекстов базы данных показаны в разделах \fBЗначения строки имени объекта\fR и \fBФОРМАТ ФАЙЛА\fR.
+.
+.SH "Значения строки имени объекта"
+Имена строк, назначенные аргументам \fIobject_type\fR, которые могут присутствовать в файле контекстов базы данных:
+.TS
+center, allbox, tab(@);
+lI lB
+lB l .
+object_type@Текстовое имя
+SELABEL_DB_DATABASE@db_database
+SELABEL_DB_SCHEMA@db_schema
+SELABEL_DB_VIEW@db_view
+SELABEL_DB_LANGUAGE@db_language
+SELABEL_DB_TABLE@db_table
+SELABEL_DB_COLUMN@db_column
+SELABEL_DB_TUPLE@db_tuple
+SELABEL_DB_PROCEDURE@db_procedure
+SELABEL_DB_SEQUENCE@db_sequence
+SELABEL_DB_BLOB@db_blob
+SELABEL_DB_EXCEPTION@db_exception
+SELABEL_DB_DATATYPE@db_datatype
+.TE
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка внутри файла контекстов базы данных имеет следующий вид:
+.RS
+.I object_type object_name context
+.RE
+.sp
+Где:
+.RS
+.I object_type
+.RS
+Строковое представление типа объекта, показанное в разделе \fBЗначения строки имени объекта\fR.
+.RE
+.I object_name
+.RS
+Ключ, который используется для получения контекста на основе \fIobject_type\fR.
+.sp
+Запись может содержать подстановочные знаки '*' или '?' для выполнения сопоставления с дополнением или подстановкой.
+.sp
+Следует учитывать, что при использовании '*' важен порядок записей в файле. '*' в отдельном виде используется для того, чтобы обеспечить назначение резервного контекста по умолчанию, это должна быть последняя запись в блоке \fIobject_type\fR.
+.RE
+.I context
+.RS
+К объекту будет применён этот контекст безопасности.
+.RE
+.RE
+.sp
+Далее приведён пример для SE-PostgreSQL:
+.sp
+# ./contexts/sepgsql_contexts file
+.br
+# object_type object_name context
+.br
+db_database my_database system_u:object_r:sepgsql_db_t:s0
+.br
+db_database * system_u:object_r:sepgsql_db_t:s0
+.br
+db_schema *.* system_u:object_r:sepgsql_schema_t:s0
+.br
+db_tuple row_low system_u:object_r:sepgsql_table_t:s0
+.br
+db_tuple row_high system_u:object_r:sepgsql_table_t:s0:c1023
+.br
+db_tuple *.*.* system_u:object_r:sepgsql_table_t:s0
+.
+.SH "ПРИМЕЧАНИЯ"
+.IP "1." 4
+Для целевой реляционной СУБД необходимо записать подходящий файл контекстов базы данных и использовать для его загрузки параметр \fBSELABEL_OPT_PATH\fR в \fBselabel_open\fR(3).
+.IP "2." 4
+Иерархия пространства имён для объектов базы данных зависит от реляционной СУБД, но интерфейсы \fIselabel*\fR не предусматривают какой-либо особой поддержки иерархии пространства имён.
+.sp
+В иерархии пространства имён SE-PostgreSQL объектом верхнего уровня является база данных, объектом следующего уровня - схема. На следующем после объекта схемы уровне могут находиться другие типы объектов, например, таблицы и процедуры. Эта иерархия поддерживается следующим образом:
+.RS
+.RS
+.sp
+Если для таблицы "my_table" в схеме "public"
+внутри базы данных "postgres" требуется контекст безопасности, то параметрами \fBselabel_lookup\fR(3)
+для \fIobject_type\fR будет \fBSELABEL_DB_TABLE\fR, для \fIobject_name\fR - "postgres.public.my_table", контекст безопасности (если доступно) будет возвращён в \fIcontext\fR.
+.RE
+.RE
+.IP "3." 4
+Если контексты должны быть проверены, необходимо указать глобальный параметр \fBSELABEL_OPT_VALIDATE\fR перед вызовом \fBselabel_open\fR(3). Если этот параметр не указан, может быть возвращён недействительный контекст.
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " selabel_open "(3), " selabel_lookup "(3), " selabel_stats "(3), " selabel_close "(3), " selinux_set_callback "(3), " selinux_sepgsql_context_path "(3), " freecon "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/selabel_file.5 b/libselinux/man/ru/man5/selabel_file.5
new file mode 100644
index 00000000..0857b9a7
--- /dev/null
+++ b/libselinux/man/ru/man5/selabel_file.5
@@ -0,0 +1,219 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Author: Eamon Walsh (ewalsh@tycho.nsa.gov) 2007
+.TH "selabel_file" "5" "01 декабря 2011" "Security Enhanced Linux" "Документация API SELinux"
+.SH "ИМЯ"
+selabel_file \- интерфейс проставления меток SELinux в пространстве пользователя и формат файла конфигурации для внутренней службы контекстов файлов
+.
+.SH "ОБЗОР"
+.B #include <selinux/label.h>
+.sp
+.BI "int selabel_lookup(struct selabel_handle *" hnd ,
+.in +\w'int selabel_lookup('u
+.BI "char **" context ,
+.br
+.BI "const char *" path ", int " mode ");"
+.in
+.sp
+.BI "int selabel_lookup_raw(struct selabel_handle *" hnd ,
+.in +\w'int selabel_lookup('u
+.BI "char **" context ,
+.br
+.BI "const char *" path ", int " mode ");"
+.
+.SH "ОПИСАНИЕ"
+Внутренняя служба контекстов файлов сопоставляет сочетания 'путь/режим' с контекстами безопасности. Это действие служит для нахождения правильного контекста для каждого файла при повторном проставлении меток в файловой системе. Необходимо освободить возвращённый \fIcontext\fR с помощью \fBfreecon\fR(3).
+.br
+\fBselabel_lookup\fR(3) описывает функцию с её возвращаемыми значениями и кодами ошибок. Тем не менее, далее приводится более подробное описание следующих значений \fIerrno\fR для внутренней службы контекстов файлов:
+.RS
+.TP
+.B ENOENT
+Не найден контекст, соответствующий \fIpath\fR и \fImode\fR, - это сообщение будет возвращено и в том случае, если серия файлов контекстов файлов имеет контекст \fB<<none>>\fR относительно \fIpath\fR (см. раздел \fBФОРМАТ ФАЙЛА\fR).
+.RE
+.sp
+Аргумент \fIpath\fR должен быть установлен в полный путь к файлу, назначенный контекст которого проверяется. Аргумент \fImode\fR должен быть установлен в биты режима файла, как определено \fBlstat\fR(2). Аргумент \fImode\fR может быть нулевым, но в этом случае, возможно, не удастся установить полное соответствие.
+.sp
+Все сообщения, созданные с помощью \fBselabel_lookup\fR(3), по умолчанию отправляются в \fIstderr\fR. Это поведение можно изменить с помощью \fBselinux_set_callback\fR(3).
+.sp
+.BR selabel_lookup_raw (3)
+работает аналогично \fBselabel_lookup\fR(3), но не выполняет преобразование контекста.
+.sp
+В разделе \fBФАЙЛЫ\fR приводится описание файлов конфигурации, которые используются для определения контекста файла.
+.
+.SH "ПАРАМЕТРЫ"
+Помимо глобальных параметров, описание которых приведено в
+.BR selabel_open (3),
+эта внутренняя служба распознаёт следующие параметры:
+.RS
+.TP
+.B SELABEL_OPT_PATH
+Значение этого параметра, отличное от null, определяет путь к файлу, который будет открыт вместо стандартного файла контекстов файлов. Это значение также используется как базовое имя для определения имён локальных файлов настройки.
+.TP
+.B SELABEL_OPT_BASEONLY
+Отличное от null значение этого параметра означает, что любую локальную настройку сопоставления контекста файла следует игнорировать.
+.TP
+.B SELABEL_OPT_SUBSET
+Отличное от null значение этого параметра интерпретируется как префикс пути, например, "/etc". Будут загружены только те спецификации контекстов файлов, первый компонент которых совпадает с указанным префиксом. Это может ускорить выполнение поиска, но, возможно, не удастся найти путь, который не начинается с указанного префикса. Данная оптимизация поиска больше не требуется (и устарела), вместо неё используется
+.I file_contexts.bin.
+.RE
+.
+.SH "ФАЙЛЫ"
+То, какие файлы контекстов файлов используются для получения контекста по умолчанию, зависит от параметра \fBSELABEL_OPT_PATH\fR, переданного в \fBselabel_open\fR(3). Если это \fINULL\fR, то \fBSELABEL_OPT_PATH\fR по умолчанию примет значение расположения контекстов файлов активной политики (которое возвращает \fBselinux_file_context_path\fR(3)), в ином случае будет использовано фактическое указанное значение \fBSELABEL_OPT_PATH\fR.
+.sp
+Если параметр \fBSELABEL_OPT_BASEONLY\fR задан, будут обрабатываться следующие файлы:
+.RS
+.IP "1." 4
+Обязательный файл контекстов файлов - это либо полное имя файла из \fISELABEL_OPT_PATH.value\fR, либо (если \fINULL\fR) путь, который возвращает \fBselinux_file_context_path\fR(3).
+.IP "2." 4
+Необязательные файлы для замены имён (файл для локального использования и файл для использования с дистрибутивами), которые присваивают псевдонимы пути для 'находящейся в памяти' версии файла контекстов файлов.
+.br
+Эти файлы имеют то же имя, что и у обязательного файла контекстов файлов, и расширения \fI.subs\fR и \fI.subs_dist\fR.
+.RE
+.sp
+Если параметр \fBSELABEL_OPT_BASEONLY\fR не задан, будут обработаны следующие файлы:
+.RS
+.IP "1." 4
+Обязательный файл контекстов файлов, который является либо полным именем файла из \fISELABEL_OPT_PATH.value\fR, либо (если \fINULL\fR) путём, который возвращает \fBselinux_file_context_path\fR(3).
+.IP "2." 4
+Необязательный файл локальной настройки, имеющий то же имя, что и обязательный файл контекстов файлов, и расширение \fI.local\fR.
+.br
+\fBselinux_file_context_local_path\fR(3) вернёт путь по умолчанию к этому файлу.
+.IP "3." 4
+Необязательный файл настройки домашнего каталога пользователя, имеющий то же имя, что и обязательный файл контекстов файлов, и расширение \fI.homedirs\fR.
+.br
+\fBselinux_file_context_homedir_path\fR(3) вернёт путь по умолчанию к этому файлу.
+.IP "4." 4
+Необязательные файлы для замены имён (файл для локального использования и файл для использования с дистрибутивами), которые присваивают псевдонимы пути для 'находящейся в памяти' версии файла контекстов файлов (и \fI.local\fR и/или \fI.homedirs\fR, если они имеются). Эти файлы имеют то же имя, что и обязательный файл контекстов файлов, и расширения \fI.subs\fR и \fI.subs_dist\fR.
+.br
+\fBselinux_file_context_subs_path\fR(3) и \fBselinux_file_context_subs_dist_path\fR(3) вернут пути по умолчанию к этим файлам.
+.RE
+.sp
+По умолчанию серия файлов контекстов файлов:
+.RS 6
+.I /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts
+.br
+.I /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.local
+.br
+.I /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.homedirs
+.br
+.I /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.subs
+.br
+.I /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.subs_dist
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+Обязательным является только файл \fIfile_contexts\fR, все остальные являются необязательными.
+.sp
+Записи внутри серии файлов контекстов файлов показаны в разделе \fBФОРМАТ ФАЙЛА\fR.
+.
+.SH "ФОРМАТ ФАЙЛА"
+.sp
+.SH "Формат контекстов файлов"
+.sp
+Каждая строка внутри \fIfile_contexts\fR и двух файлов настройки (\fI.local\fR и \fI.homedirs\fR) имеет следующий вид:
+.sp
+.RS
+.I pathname [file_type] context
+.RE
+.sp
+Где:
+.br
+.RS
+.I pathname
+.RS
+Определяющая имя пути запись, которая может быть в виде регулярного выражения.
+.RE
+.I file_type
+.RS
+Необязательный тип файла, который состоит из:
+.RS
+\fI\-b\fR - устройство блочного ввода-вывода \fI\-c\fR - устройство символьного ввода-вывода
+.br
+\fI\-d\fR - каталог \fI\-p\fR - именованный канал
+.br
+\fI\-l\fR - символическая ссылка \fI\-s\fR - сокет
+.br
+\fI\-\-\fR - обычный файл
+.RE
+.RE
+.I context
+.RS
+Запись может быть одним из следующих:
+.RS
+.IP "a." 4
+Контекст безопасности, который будет назначен этому файлу (то есть возвращён как \fIcontext\fR).
+.IP "b." 4
+Значение \fB<<none>>\fR можно использовать, чтобы указать, что для соответствующих файлов не следует повторно проставлять метки, а также при этом значении \fBselabel_lookup\fR(3) вернёт \-1 при установке \fIerrno\fR в \fBENOENT\fR.
+.RE
+.RE
+.RE
+.sp
+Пример:
+.RS
+# ./contexts/files/file_contexts
+.br
+# pathname file_type context
+.br
+/.* system_u:object_r:default_t:s0
+.br
+/[^/]+ \-\- system_u:object_r:etc_runtime_t:s0
+.br
+/tmp/.* <<none>>
+.RE
+.sp
+.SH "Формат файла подстановки"
+.sp
+Каждая строка внутри файлов подстановки (\fI.subs\fR и \fI.subs_dist\fR) имеет вид:
+.RS
+.I subs_pathname pathname
+.RE
+.sp
+Где:
+.RS
+.I pathname
+.RS
+Путь, который соответствует записи в одном или нескольких файлах конфигурации политики контекстов файлов.
+.RE
+.I subs_pathname
+.RS
+Путь, который станет псевдонимом имени пути (считается равнозначным при поиске).
+.RE
+.RE
+.sp
+Пример:
+.RS
+# ./contexts/files/file_contexts.subs
+.br
+# pathname subs_pathname
+.br
+/myweb /var/www
+.br
+/myspool /var/spool/mail
+.sp
+Пример выше: когда в \fBselabel_lookup\fR(3) передаётся путь \fI/myweb/index.html\fR, функция заменяет компонент \fI/myweb\fR
+на \fI/var/www\fR, поэтому будет использоваться следующий путь:
+.sp
+.RS
+.I /var/www/index.html
+.RE
+.RE
+.
+.SH "ПРИМЕЧАНИЯ"
+.IP "1." 4
+Если контексты должны быть проверены, необходимо указать глобальный параметр \fBSELABEL_OPT_VALIDATE\fR перед вызовом \fBselabel_open\fR(3). Если этот параметр не указан, может быть возвращён недействительный контекст.
+.IP "2." 4
+Если серия файлов контекстов файлов содержит много записей, \fBselabel_open\fR(3) может медленно выполнять чтение в файлах и (если это запрошено) проверку записей.
+.IP "3." 4
+В некоторых версиях SELinux также может присутствовать файл \fIfile_contexts.template\fR, но он устарел.
+.br
+Файл шаблона имеет тот же формат, что и файл \fIfile_contexts\fR, а также может содержать ключевые слова \fBHOME_ROOT\fR, \fBHOME_DIR\fR, \fBROLE\fR и \fBUSER\fR. Эта функциональность была перемещена в хранилище политик и управляется \fBsemodule\fR(8) и \fBgenhomedircon\fR(8).
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " selabel_open "(3), " selabel_lookup "(3), " selabel_stats "(3), " selabel_close "(3), " selinux_set_callback "(3), " selinux_file_context_path "(3), " freecon "(3), " selinux_config "(5), " lstat "(2), "selinux_file_context_subs_path "(3), " selinux_file_context_subs_dist_path "(3), " selinux_file_context_homedir_path "(3), "selinux_file_context_local_path "(3), " semodule "(8), " genhomedircon "(8) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/selabel_media.5 b/libselinux/man/ru/man5/selabel_media.5
new file mode 100644
index 00000000..9fec7b0c
--- /dev/null
+++ b/libselinux/man/ru/man5/selabel_media.5
@@ -0,0 +1,92 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Author: Eamon Walsh (ewalsh@tycho.nsa.gov) 2007
+.TH "selabel_media" "5" "29 ноября 2011" "Security Enhanced Linux" "Документация API SELinux"
+.SH "ИМЯ"
+selabel_media \- интерфейс проставления меток SELinux в пространстве пользователя и формат файла конфигурации для внутренней службы контекстов носителей
+.
+.SH "ОБЗОР"
+.B #include <selinux/label.h>
+.sp
+.BI "int selabel_lookup(struct selabel_handle *" hnd ,
+.in +\w'int selabel_lookup('u
+.BI "char **" context ,
+.br
+.BI "const char *" device_name ", int " unused ");"
+.in
+.sp
+.BI "int selabel_lookup_raw(struct selabel_handle *" hnd ,
+.in +\w'int selabel_lookup('u
+.BI "char **" context ,
+.br
+.BI "const char *" device_name ", int " unused ");"
+.
+.SH "ОПИСАНИЕ"
+Внутренняя служба контекстов носителей сопоставляет имена устройств мультимедиа, например, "cdrom" или "floppy", с контекстами безопасности. Это действие служит для нахождения правильного контекста для установки контекстных подключений к этим устройствам. Необходимо освободить возвращённый \fIcontext\fR с помощью \fBfreecon\fR(3).
+.br
+\fBselabel_lookup\fR(3) описывает функцию с её возвращаемыми значениями и кодами ошибок.
+.sp
+Аргумент поиска целого числа в настоящее время не используется, для него следует указать равное нулю значение.
+.sp
+Все сообщения, созданные с помощью \fBselabel_lookup\fR(3), по умолчанию отправляются в \fIstderr\fR. Это поведение можно изменить с помощью \fBselinux_set_callback\fR(3).
+.sp
+.BR selabel_lookup_raw (3)
+работает аналогично \fBselabel_lookup\fR(3), но не выполняет преобразование контекста.
+.sp
+В разделе \fBФАЙЛЫ\fR приводится описание файлов конфигурации, которые используются для определения контекстов носителей.
+.
+.SH "ПАРАМЕТРЫ"
+Помимо глобальных параметров, описание которых приведено в \fBselabel_open\fR(3), эта внутренняя служба распознаёт следующие параметры:
+.TP
+.B SELABEL_OPT_PATH
+Значение этого параметра, отличное от null, определяет путь к файлу, который будет открыт вместо стандартного файла контекстов носителей \fImedia\fR.
+.
+.SH "ФАЙЛЫ"
+То, какой файл контекстов носителей будет использоваться для получения контекста по умолчанию, зависит от параметра \fBSELABEL_OPT_PATH\fR, переданного в \fBselabel_open\FR(3). Если это \fINULL\fR, то значением \fBSELABEL_OPT_PATH\fR по умолчанию станет расположение контекстов носителей активной политики (возвращённое \fBselinux_media_context_path\fR(3)). В ином случае будет использовано фактическое указанное значение \fBSELABEL_OPT_PATH\fR.
+.sp
+Файл контекстов носителей по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/files/media
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка внутри файла \fImedia\fR имеет следующий вид:
+.RS
+.I device_name context
+.RE
+.sp
+Где:
+.RS
+.I device_name
+.RS
+Идентификатор носителя (например, cdrom, floppy, disk и usb).
+.RE
+.I context
+.RS
+Контекст, который следует использовать для проставления метки устройства.
+.RE
+.RE
+.sp
+Пример:
+.RS
+# contexts/files/media
+.br
+cdrom system_u:object_r:removable_device_t
+.br
+floppy system_u:object_r:removable_device_t
+.br
+disk system_u:object_r:fixed_disk_device_t
+.
+.SH "ПРИМЕЧАНИЯ"
+Если контексты должны быть проверены, необходимо указать глобальный параметр \fBSELABEL_OPT_VALIDATE\fR перед вызовом \fBselabel_open\fR(3). Если этот параметр не указан, может быть возвращён недействительный контекст.
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " selabel_open "(3), " selabel_lookup "(3), " selabel_stats "(3), " selabel_close "(3), " selinux_set_callback "(3), " selinux_media_context_path "(3), " freecon "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/selabel_x.5 b/libselinux/man/ru/man5/selabel_x.5
new file mode 100644
index 00000000..969ce1e0
--- /dev/null
+++ b/libselinux/man/ru/man5/selabel_x.5
@@ -0,0 +1,168 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Author: Eamon Walsh (ewalsh@tycho.nsa.gov) 2007
+.TH "selabel_x" "5" "29 ноября 2011" "Security Enhanced Linux" "Документация API SELinux"
+.SH "ИМЯ"
+selabel_x \- интерфейс проставления меток SELinux в пространстве пользователя и формат файла конфигурации для внутренней службы контекстов оконной системы X Window System. Эта внутренняя служба также используется для определения контекста по умолчанию, который следует присвоить подключённым удалённо клиентам X
+.
+.SH "ОБЗОР"
+.B #include <selinux/label.h>
+.sp
+.BI "int selabel_lookup(struct selabel_handle *" hnd ,
+.in +\w'int selabel_lookup('u
+.BI "char **" context ,
+.br
+.BI "const char *" object_name ", int " object_type ");"
+.in
+.sp
+.BI "int selabel_lookup_raw(struct selabel_handle *" hnd ,
+.in +\w'int selabel_lookup('u
+.BI "char **" context ,
+.br
+.BI "const char *" object_name ", int " object_type ");"
+.
+.SH "ОПИСАНИЕ"
+Внутренняя служба контекстов X сопоставляет имена объектов X Window System с контекстами безопасности. Это действие служит для нахождения правильного контекста для объектов X Window System, значимость и/или семантика использования которых в основном определяются именем. Необходимо освободить возвращённый \fIcontext\fR с помощью \fBfreecon\fR(3).
+.br
+\fBselabel_lookup\fR(3) описывает функцию с её возвращаемыми значениями и кодами ошибок.
+.sp
+Эта внутренняя служба также используется для определения контекста по умолчанию, который следует назначить для подключённых удалённо клиентов X.
+.sp
+Для аргумента \fIobject_type\fR необходимо установить одно из следующих значений:
+.RS
+.TP
+.B SELABEL_X_PROP
+Аргумент
+.I object_name
+указывает имя свойства окна, например, "WM_NAME".
+.TP
+.B SELABEL_X_SELN
+Аргумент
+.I object_name
+указывает имя выделения, например, "PRIMARY".
+.TP
+.B SELABEL_X_EXT
+Аргумент
+.I object_name
+указывает имя расширения протокола, например, "RENDER".
+.TP
+.B SELABEL_X_EVENT
+Аргумент
+.I object_name
+указывает имя типа события, например, "X11:ButtonPress".
+.TP
+.B SELABEL_X_CLIENT
+Аргумент
+.I object_name
+игнорируется, но его значением необходимо установить либо \fI*\fR (звёздочка, 'подстановочный знак': будет выбрана запись по умолчанию), либо конкретную запись, такую как "remote" в файле контекстов X, как показано в разделе \fBПРИМЕР\fR. В этом случае будет возвращён контекст по умолчанию, который следует присвоить удалённым клиентам X.
+.TP
+.B SELABEL_X_POLYPROP
+Работает аналогично
+.BR SELABEL_X_PROP ,
+но проверяет, было ли свойство отмечено как многоэкземплярное. См. \fBПРИМЕЧАНИЯ\fR далее.
+.TP
+.B SELABEL_X_POLYSELN
+Аналогично
+.BR SELABEL_X_SELN ,
+но проверяет, было ли выделение отмечено как многоэкземплярное. См. \fBПРИМЕЧАНИЯ\fR далее.
+.RE
+.sp
+Все сообщения, созданные \fBselabel_lookup\fR(3), по умолчанию отправляются в \fIstderr\fR. Это поведение можно изменить с помощью \fBselinux_set_callback\fR(3).
+.sp
+.B selabel_lookup_raw
+работает аналогично \fBselabel_lookup\fR, но не выполняет преобразование контекста.
+.sp
+В разделе \fBФАЙЛЫ\fR приводится описание файлов конфигурации, которые используются для определения контекстов объектов Х.
+.
+.SH "ПАРАМЕТРЫ"
+Помимо глобальных параметров, описание которых приведено в \fBselabel_open\fR(3), эта внутренняя служба распознаёт следующие параметры:
+.RS
+.TP
+.B SELABEL_OPT_PATH
+Значение этого параметра, отличное от null, определяет путь к файлу, который будет открыт вместо стандартного файла контекстов Х (подробные сведения см. в разделе \fBФАЙЛЫ\fR).
+.RE
+.
+.SH "ФАЙЛЫ"
+То, какой файл контекста Х будет использоваться для получения контекста по умолчанию, зависит от параметра \fBSELABEL_OPT_PATH\fR, переданного в \fBselabel_open\fR(3). Если \fINULL\fR, то значением \fBSELABEL_OPT_PATH\fR по умолчанию станет расположение контекстов Х активной политики (возвращённое \fBselinux_x_context_path\fR(3)). В ином случае будет использовано фактическое указанное значение \fBSELABEL_OPT_PATH\fR.
+.sp
+Файл контекстов объектов Х по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/x_contexts
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+Записи, находящиеся внутри файла контекстов X, показаны в разделах \fBЗначения строки имени объекта\fR и \fBФОРМАТ ФАЙЛА\fR.
+.
+.SH "Значения строки имени объекта"
+Имена строк, назначенные аргументам \fIobject_type\fR, которые могут присутствовать в файле контекстов X:
+.TS
+center, allbox, tab(@);
+lI lB
+lB l .
+object_type@Текстовое имя
+SELABEL_X_PROP@property
+SELABEL_X_SELN@selection
+SELABEL_X_EXT@extension
+SELABEL_X_EVENT@event
+SELABEL_X_CLIENT@client
+SELABEL_X_POLYPROP@poly_property
+SELABEL_X_POLYSELN@poly_selection
+.TE
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка внутри файла контекстов X имеет следующий вид:
+.RS
+.I object_type object_name context
+.RE
+.sp
+Где:
+.RS
+.I object_type
+.RS
+Это строковое представление типа объекта, показанное в разделе \fBЗначения строки имени объекта\fR.
+Несколько строк с одной и той же строкой \fIobject_type\fR сформируют блок записей (каждая со своей строкой \fIobject_name\fR).
+.RE
+.I object_name
+.RS
+Это имена объектов конкретного ресурса сервера X, например,
+\fBPRIMARY\fR, \fBCUT_BUFFER0\fR и т.д. Обычно они определены в исходном коде сервера X (\fIprotocol.txt\fR и \fIBuiltInAtoms\fR в каталоге
+dix исходного пакета xorg\-server).
+Запись может содержать подстановочные знаки '*' или '?' для выполнения сопоставления с дополнением или подстановкой.
+Следует учитывать, что при использовании '*' важен порядок записей в файле. '*' в отдельном виде используется для того, чтобы обеспечить назначение резервного контекста по умолчанию, это должна быть последняя запись в блоке \fIobject_type\fR.
+.RE
+.I context
+.RS
+Контекст безопасности, который будет применён к объекту.
+.RE
+.RE
+.sp
+Пример 1:
+.sp
+.nf
+# object_type object_name context
+selection PRIMARY system_u:object_r:clipboard_xselection_t:s0
+selection * system_u:object_r:xselection_t:s0
+.fi
+.sp
+Пример 2 - этот пример показывает, как можно настроить запись клиента таким образом, чтобы она всегда находилась:
+.sp
+.nf
+# object_type object_name context
+client * system_u:object_r:remote_t:s0
+.fi
+.
+.SH "ПРИМЕЧАНИЯ"
+.IP "1." 4
+Свойства и выделения отмечаются как многоэкземплярные или нет. Для этих типов имён параметр "POLY" выполняет поиск только имён, которые отмечены как многоэкземплярные, в то время как другой параметр выполняет поиск только имён, которые отмечены как не многоэкземплярные. Пользователям этого интерфейса следует проверить оба сопоставления и затем (необязательно) действовать на основе полученного результата (например, сделать объект многоэкземплярным).
+.IP "2." 4
+Если контексты должны быть проверены, необходимо указать глобальный параметр \fBSELABEL_OPT_VALIDATE\fR перед вызовом \fBselabel_open\fR(3). Если этот параметр не указан, может быть возвращён недействительный контекст.
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " selabel_open "(3), " selabel_lookup "(3), " selabel_stats "(3), " selabel_close "(3), " selinux_set_callback "(3), " selinux_x_context_path "(3), " freecon "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/sepgsql_contexts.5 b/libselinux/man/ru/man5/sepgsql_contexts.5
new file mode 100644
index 00000000..ec2bb47d
--- /dev/null
+++ b/libselinux/man/ru/man5/sepgsql_contexts.5
@@ -0,0 +1 @@
+.so man5/selabel_db.5
diff --git a/libselinux/man/ru/man5/service_seusers.5 b/libselinux/man/ru/man5/service_seusers.5
new file mode 100644
index 00000000..fe57ed69
--- /dev/null
+++ b/libselinux/man/ru/man5/service_seusers.5
@@ -0,0 +1,71 @@
+.TH "service_seusers" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+service_seusers \- файлы конфигурации сопоставления пользователей и служб GNU/Linux с пользователями SELinux
+.
+.SH "ОПИСАНИЕ"
+Это необязательные файлы, которые позволяют службам определять пользователя SELinux при аутентификации через поддерживающие SELinux приложения для входа, например,
+.BR PAM "(8). "
+.sp
+Для каждого имени пользователя GNU/Linux имеется один файл, который потребуется для запуска службы с определённым именем пользователя SELinux.
+.sp
+Путь к каждому файлу конфигурации формируется путём, который был возвращён
+.BR selinux_policy_root "(3), с добавлением "
+.IR /logins/username
+в конце (где \fIusername\fR - это файл, представляющий имя пользователя GNU/Linux). Каталог служб по умолчанию расположен по следующему адресу:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/logins
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+.BR getseuser "(3) выполняет чтение этого файла для сопоставления служб с пользователем SELinux. "
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка внутри файла \fIusername\fR имеет следующий формат, каждый компонент отделяется двоеточием:
+.RS
+.IB service : seuser \fR[\fB:\fIrange\fR]
+.RE
+.sp
+Где:
+.RS
+.I service
+.RS
+Имя службы, которая используется приложением.
+.RE
+.I seuser
+.RS
+Имя пользователя SELinux.
+.RE
+.I range
+.RS
+Диапазон для политики MCS/MLS.
+.RE
+.RE
+.
+.SH "ПРИМЕРЫ"
+Пример 1 - для пользователя 'root':
+.RS
+# ./logins/root
+.br
+ipa:user_u:s0
+.br
+this_service:unconfined_u:s0
+.RE
+.sp
+Пример 2 - для пользователя GNU/Linux 'rch':
+.RS
+# ./logins/rch
+.br
+ipa:unconfined_u:s0
+.br
+that_service:unconfined_u:s0
+.RE
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " PAM "(8), " selinux_policy_root "(3), " getseuser "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/seusers.5 b/libselinux/man/ru/man5/seusers.5
new file mode 100644
index 00000000..f8296530
--- /dev/null
+++ b/libselinux/man/ru/man5/seusers.5
@@ -0,0 +1,67 @@
+.TH "seusers" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+seusers \- файл конфигурации сопоставления пользователей GNU/Linux с пользователями SELinux
+.
+.SH "ОПИСАНИЕ"
+Файл
+.I seusers
+содержит список сопоставления пользователей GNU/Linux с пользователями SELinux, который используется поддерживающими SELinux приложениями для входа, например, \fBPAM\fR(8).
+.sp
+.BR selinux_usersconf_path "(3) "
+вернёт путь активной политики к этому файлу. Файл сопоставления пользователей SELinux по умолчанию находится по следующему адресу:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/seusers
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+.BR getseuserbyname "(3) выполняет чтение этого файла для сопоставления пользователя или группы GNU/Linux с пользователем SELinux. "
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка файла конфигурации
+.I seusers
+состоит из следующих компонентов:
+.sp
+.RS
+\fR[\fB%\fIgroup_id\fR]|[\fIuser_id\fR]\fB:\fIseuser_id\fR[\fB:\fIrange\fR]
+.RE
+.sp
+Где:
+.RS
+\fIgroup_id\fR|\fIuser_id
+.RS
+\fRИдентификатор пользователя GNU/Linux или (если предваряется символом процентного значения (\fB%\fR)) идентификатор группы GNU/Linux.
+.br
+При необходимости в качестве резервной записи можно предоставить необязательную запись, установленную в \fB__default__\fR.
+.RE
+.I seuser_id
+.RS
+Идентификатор пользователя SELinux.
+.RE
+.I range
+.RS
+Необязательный уровень или диапазон для политики MLS/MCS.
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# ./seusers
+.br
+system_u:system_u:s0\-s15:c0.c255
+.br
+root:root:s0\-s15:c0.c255
+.br
+fred:user_u:s0
+.br
+__default__:user_u:s0
+.br
+%user_group:user_u:s0
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " PAM "(8), " selinux_usersconf_path "(3), " getseuserbyname "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/user_contexts.5 b/libselinux/man/ru/man5/user_contexts.5
new file mode 100644
index 00000000..de3a8bd8
--- /dev/null
+++ b/libselinux/man/ru/man5/user_contexts.5
@@ -0,0 +1,85 @@
+.TH "user_contexts" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+user_contexts \- файлы конфигурации SELinux-контекстов пользователей SELinux
+.
+.SH "ОПИСАНИЕ"
+Эти необязательные файлы конфигурации контекстов пользователей содержат записи, которые позволяют поддерживающим SELinux приложениям для входа, например,
+.BR PAM (8)
+(запущенным в своих собственных контекстах процессов), определять контекст, в котором должен запускаться сеанс пользователя.
+.sp
+Обычно поддерживающие SELinux приложения для входа используют одну или несколько следующих функций libselinux, которые выполняют чтение этих файлов по пути активной политики:
+.RS
+.BR get_default_context (3)
+.br
+.BR get_ordered_context_list (3)
+.br
+.BR get_ordered_context_list_with_level (3)
+.br
+.BR get_default_context_with_level (3)
+.br
+.BR get_default_context_with_role (3)
+.br
+.BR get_default_context_with_rolelevel (3)
+.br
+.BR query_user_context (3)
+.br
+.BR manual_user_enter_context (3)
+.RE
+.sp
+Для каждого пользователя SELinux можно настроить только один файл. Путь к файлу формируется с помощью пути, возвращённого
+.BR \%selinux_user_contexts_path (3)
+для активной политики, с добавлением в конце имени пользователя SELinux, например:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/users/unconfined_u
+.br
+.I /etc/selinux/{SELINUXTYPE}/contexts/users/xguest_u
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.sp
+Эти файлы содержат информацию о контексте в соответствии с описанием в разделе
+.B ФОРМАТ ФАЙЛА.
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка в файле конфигурации контекста пользователя состоит из следующих компонентов:
+.RS
+.I login_process user_login_process
+.RE
+.sp
+Где:
+.RS
+.I login_process
+.RS
+Состоит из записи \fIrole\fB:\fItype\fR[\fB:\fIrange\fR], которая представляет собой контекст процесса входа.
+.RE
+.I user_login_process
+.RS
+Состоит из записи \fIrole\fB:\fItype\fR[\fB:\fIrange\fR], которая представляет собой контекст процесса входа пользователя.
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# Пример для xguest_u в /etc/selinux/targeted/contexts/users/xguest_u
+.br
+system_r:crond_t:s0 xguest_r:xguest_t:s0
+.br
+system_r:initrc_t:s0 xguest_r:xguest_t:s0
+.br
+system_r:local_login_t:s0 xguest_r:xguest_t:s0
+.br
+system_r:remote_login_t:s0 xguest_r:xguest_t:s0
+.br
+system_r:sshd_t:s0 xguest_r:xguest_t:s0
+.br
+system_r:xdm_t:s0 xguest_r:xguest_t:s0
+.br
+xguest_r:xguest_t:s0 xguest_r:xguest_t:s0
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " selinux_user_contexts_path "(3), " PAM "(8), " get_ordered_context_list "(3), " get_ordered_context_list_with_level "(3), " get_default_context_with_level "(3), " get_default_context_with_role "(3), " get_default_context_with_rolelevel "(3), " query_user_context "(3), " manual_user_enter_context "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/virtual_domain_context.5 b/libselinux/man/ru/man5/virtual_domain_context.5
new file mode 100644
index 00000000..617eeeca
--- /dev/null
+++ b/libselinux/man/ru/man5/virtual_domain_context.5
@@ -0,0 +1,44 @@
+.TH "virtual_domain_context" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+virtual_domain_context \- файл конфигурации SELinux-контекста домена виртуальной машины
+.
+.SH "ОПИСАНИЕ"
+Файл
+.I virtual_domain_context
+содержит список контекстов доменов, которые доступны для использования поддерживающему SELinux API виртуализации libvirt (см. \fBlibvirtd\fR(8)).
+.sp
+.BR selinux_virtual_domain_context_path "(3) "
+вернёт путь активной политики к этому файлу. Файл контекстов виртуальных доменов по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/virtual_domain_context
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка в файле состоит из записи следующего вида:
+.RS
+.IB user : role : type \fR[\fB:\fIrange\fR]
+.RE
+.sp
+Где:
+.RS
+.I user role type range
+.RS
+Пользователь, роль, тип и необязательный диапазон (для MCS/MLS), разделённые двоеточиями (:), которые могут использоваться в качестве контекста виртуального домена.
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# ./contexts/virtual_domain_context
+.br
+system_u:object_r:svirt_t:s0
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " libvirtd "(8), " selinux_virtual_domain_context_path "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/virtual_image_context.5 b/libselinux/man/ru/man5/virtual_image_context.5
new file mode 100644
index 00000000..560229fa
--- /dev/null
+++ b/libselinux/man/ru/man5/virtual_image_context.5
@@ -0,0 +1,46 @@
+.TH "virtual_image_context" "5" "28 ноября 2011" "Security Enhanced Linux" "Конфигурация SELinux"
+.SH "ИМЯ"
+virtual_image_context \- файл конфигурации SELinux-контекста образа виртуальной машины
+.
+.SH "ОПИСАНИЕ"
+Файл
+.I virtual_image_context
+содержит список контекстов образов для использования поддерживающим SELinux API виртуализации libvirt (см. \fBlibvirtd\fR(8)).
+.sp
+.BR selinux_virtual_image_context_path "(3) "
+вернёт путь активной политики к этому файлу. Файл контекстов виртуальных образов по умолчанию:
+.RS
+.I /etc/selinux/{SELINUXTYPE}/contexts/virtual_image_context
+.RE
+.sp
+Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
+.
+.SH "ФОРМАТ ФАЙЛА"
+Каждая строка в файле состоит из записи следующего вида:
+.RS
+.IB user : role : type \fR[\fB:\fIrange\fR]
+.RE
+.sp
+Где:
+.RS
+.I user role type range
+.RS
+Пользователь, роль, тип и необязательный диапазон (для MCS/MLS), разделённые двоеточиями (:), которые могут использоваться в качестве контекста виртуального образа.
+.RE
+.RE
+.
+.SH "ПРИМЕР"
+# ./contexts/virtual_image_context
+.br
+system_u:object_r:svirt_image_t:s0
+.br
+system_u:object_r:svirt_content_t:s0
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR selinux "(8), " libvirtd "(8), " selinux_virtual_image_context_path "(3), " selinux_config "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man5/x_contexts.5 b/libselinux/man/ru/man5/x_contexts.5
new file mode 100644
index 00000000..3796d2a7
--- /dev/null
+++ b/libselinux/man/ru/man5/x_contexts.5
@@ -0,0 +1 @@
+.so man5/selabel_x.5
diff --git a/libselinux/man/ru/man8/avcstat.8 b/libselinux/man/ru/man8/avcstat.8
new file mode 100644
index 00000000..b6d84964
--- /dev/null
+++ b/libselinux/man/ru/man8/avcstat.8
@@ -0,0 +1,35 @@
+.TH "avcstat" "8" "18 ноября 2004" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+avcstat \- показать статистику AVC (Access Vector Cache, кэш вектора доступа) SELinux
+.
+.SH "ОБЗОР"
+.B avcstat
+.RB [ \-c ]
+.RB [ \-f
+.IR status_file ]
+.RI [ interval ]
+.
+.SH "ОПИСАНИЕ"
+Показать статистику AVC SELinux. Если указан параметр
+.I interval
+, программа будет выполняться циклами, показывая обновлённую статистику каждые
+.I interval
+секунд.
+По умолчанию показываются относительные значения.
+.
+.SH ПАРАМЕТРЫ
+.TP
+.B \-c
+Показать совокупные значения.
+.TP
+.B \-f
+Указывает расположение файла статистики AVC, по умолчанию это
+.IR /sys/fs/selinux/avc/cache_stats .
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8)
+.
+.SH АВТОРЫ
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Программа была написана James Morris <jmorris@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/booleans.8 b/libselinux/man/ru/man8/booleans.8
new file mode 100644
index 00000000..20e5b00d
--- /dev/null
+++ b/libselinux/man/ru/man8/booleans.8
@@ -0,0 +1,46 @@
+.TH "booleans" "8" "11 августа 2004" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+booleans \- логические переключатели политики позволяют настраивать политику SELinux в среде выполнения
+.
+.SH "ОПИСАНИЕ"
+Эта страница руководства описывает логические переключатели политики SELinux.
+.BR
+Политика SELinux может включать условные правила, которое включены или отключены в зависимости от текущих значений набора логических переключателей политики.
+Эти логические переключатели политики позволяют изменять политику безопасности в среде выполнения без загрузки новой политики.
+
+Например, логический переключатель httpd_enable_cgi (если он включён) позволяет управляющей программе httpd запускать сценарии cgi. Если администратору требуется запретить исполнение сценариев cgi, можно просто установить соответствующее значение этого переключателя.
+
+Политика определяет значение по умолчанию для каждого логического переключателя, обычно это false.
+Эти значения по умолчанию можно переопределить через локальные параметры, созданные с помощью утилиты
+.BR setsebool (8)
+, используя
+.B \-P
+для сохранения параметра после перезагрузок. Средство
+.B system\-config\-securitylevel
+предоставляет графический интерфейс для изменения параметров. Программа
+.BR load_policy (8)
+по умолчанию сохранит текущие параметры логических переключателей после перезагрузки политики по умолчанию. При необходимости также можно сбросить значения логических переключателей на их значения по умолчанию при загрузке, для этого используется параметр
+.B \-b.
+
+Для получения и вывода списка логических значений служит утилита
+.BR getsebool (8)
+с параметром
+.B \-a.
+
+Логические значения также можно изменить во время выполнения с помощью утилиты
+.BR setsebool (8)
+или утилиты
+.BR togglesebool (8).
+По умолчанию эти утилиты изменяют только текущее логическое значение и не влияют на постоянные параметры, если в setsebool не используется параметр
+.B \-P.
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR getsebool (8),
+.BR setsebool (8),
+.BR selinux (8),
+.BR togglesebool (8)
+.
+.SH АВТОРЫ
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Поддержка условной политики SELinux была разработана Tresys Technology.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/getenforce.8 b/libselinux/man/ru/man8/getenforce.8
new file mode 100644
index 00000000..13589e19
--- /dev/null
+++ b/libselinux/man/ru/man8/getenforce.8
@@ -0,0 +1,19 @@
+.TH "getenforce" "8" "7 апреля 2004" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+getenforce \- получить текущий режим SELinux
+.
+.SH "ОБЗОР"
+.B getenforce
+.
+.SH "ОПИСАНИЕ"
+.B getenforce
+сообщает, в каком режиме работает SELinux (принудительный, разрешительный, отключённый).
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR setenforce (8),
+.BR selinuxenabled (8)
+.
+.SH АВТОРЫ
+Dan Walsh, <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/getsebool.8 b/libselinux/man/ru/man8/getsebool.8
new file mode 100644
index 00000000..04d9820e
--- /dev/null
+++ b/libselinux/man/ru/man8/getsebool.8
@@ -0,0 +1,40 @@
+.TH "getsebool" "8" "11 августа 2004" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+getsebool \- получить логические значения SELinux
+.
+.SH "ОБЗОР"
+.B getsebool
+.RB [ \-a ]
+.RI [ boolean ]
+.
+.SH "ОПИСАНИЕ"
+.B getsebool
+сообщает, где включён или отключён конкретный логический переключатель
+или все логические переключатели SELinux.
+В некоторых ситуациях для логического переключателя может существовать
+ожидающее изменение (переход из одного состояние в другое) - getsebool
+сообщит об этом.
+Ожидающее значение - то значение, которое будет применено при
+следующей фиксации логического переключателя.
+
+Установка значений логических переключателей выполняется в два этапа;
+сначала изменяется ожидающее значение, а затем логические переключатели
+фиксируются, в результате чего их активные значения заменяются
+ожидающими значениями. Это позволяет изменить группу логических
+переключателей за одну транзацию, задав все необходимые ожидающие
+значения и затем одновременно зафиксировав их.
+.
+.SH ПАРАМЕТРЫ
+.TP
+.B \-a
+Показать все логические переключатели SELinux.
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR setsebool (8),
+.BR booleans (8)
+.
+.SH АВТОРЫ
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Программа была написана Tresys Technology.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/matchpathcon.8 b/libselinux/man/ru/man8/matchpathcon.8
new file mode 100644
index 00000000..5bd586d4
--- /dev/null
+++ b/libselinux/man/ru/man8/matchpathcon.8
@@ -0,0 +1,62 @@
+.TH "matchpathcon" "8" "21 апреля 2005" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+matchpathcon \- получить текущий контекст безопасности SELinux для указанного пути из конфигурации контекстов файлов
+.
+.SH "ОБЗОР"
+.B matchpathcon
+.RB [ \-V ]
+.RB [ \-N ]
+.RB [ \-n ]
+.RB [ \-m
+.IR type ]
+.RB [ \-f
+.IR file_contexts_file ]
+.RB [ \-p
+.IR prefix ]
+.RB [ \-P
+.IR policy_root_path ]
+.I filepath...
+.
+.SH "ОПИСАНИЕ"
+.BR matchpathcon
+опрашивает системную политику и выводит контекст безопасности по умолчанию, связанный с путём к файлу.
+
+.B Примечание:
+Одинаковые пути могут иметь разные контексты безопасности в зависимости от типа файла (обычный файл, каталог, файл связи, файл знаков ...).
+
+.B matchpathcon
+также будет учитывать тип файла при определении контекста безопасности по умолчанию (если файл существует). Если файл не существует, сопоставление по типу файла не будет выполнено.
+.
+.SH ПАРАМЕТРЫ
+.TP
+.BI \-m " type"
+Принудительно указать тип файла для поиска.
+Действительные типы:
+.BR file ", " dir ", "pipe ", " chr_file ", " blk_file ", "
+.BR lnk_file ", " sock_file .
+.TP
+.B \-n
+Не показывать путь.
+.TP
+.B \-N
+Не использовать преобразования.
+.TP
+.BI \-f " file_context_file"
+Использовать альтернативный файл file_context
+.TP
+.BI \-p " prefix"
+Использовать префикс для ускорения преобразований
+.TP
+.BI \-P " policy_root_path"
+Использовать альтернативный корневой путь к политике
+.TP
+.B \-V
+Проверить контекст файла на диске на соответствие параметрам по умолчанию
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux "(8), "
+.BR matchpathcon (3)
+.
+.SH АВТОРЫ
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/sefcontext_compile.8 b/libselinux/man/ru/man8/sefcontext_compile.8
new file mode 100644
index 00000000..3a6b832a
--- /dev/null
+++ b/libselinux/man/ru/man8/sefcontext_compile.8
@@ -0,0 +1,70 @@
+.TH "sefcontext_compile" "8" "12 августа 2015" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+sefcontext_compile \- скомпилировать файлы регулярных выражений контекстов файлов
+.
+.SH "ОБЗОР"
+.B sefcontext_compile
+.RB [ \-o
+.IR outputfile ]
+.RB [ \-p
+.IR policyfile ]
+.I inputfile
+.
+.SH "ОПИСАНИЕ"
+.B sefcontext_compile
+используется для компиляции регулярных выражений контекстов файлов в формат
+.BR pcre (3).
+.sp
+Скомпилированный файл используется функциями проставления меток файлов libselinux.
+.sp
+По умолчанию
+.B sefcontext_compile
+записывает скомпилированный файл pcre с суффиксом
+.B .bin
+в конце (например, \fIinputfile\fB.bin\fR).
+.SH ПАРАМЕТРЫ
+.TP
+.B \-o
+Указать
+.I outputfile
+- должно быть полным именем файла, так как суффикс
+.B .bin
+не добавляется автоматически.
+.TP
+.B \-p
+Указать двоичный
+.I policyfile
+для использования при проверке записей контекста в
+.I inputfile
+.br
+Если найден недействительный контекст, запись файла в формате pcre не будет выполнена и появится сообщение об ошибке.
+
+.SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ"
+При ошибке возвращается -1. При успешном завершении возвращается 0.
+
+.SH "ПРИМЕРЫ"
+.B Пример 1:
+.br
+sefcontext_compile /etc/selinux/targeted/contexts/files/file_contexts
+.sp
+В результате создаётся следующий файл:
+.RS
+/etc/selinux/targeted/contexts/files/file_contexts.bin
+.RE
+.sp
+.B Пример 2:
+.br
+sefcontext_compile -o new_fc.bin /etc/selinux/targeted/contexts/files/file_contexts
+.sp
+В результате в текущем рабочем каталоге создаётся следующий файл:
+.RS
+new_fc.bin
+.RE
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8)
+.
+.SH АВТОРЫ
+Dan Walsh, <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/selinux.8 b/libselinux/man/ru/man8/selinux.8
new file mode 100644
index 00000000..5cc48df8
--- /dev/null
+++ b/libselinux/man/ru/man8/selinux.8
@@ -0,0 +1,106 @@
+.TH "selinux" "8" "29 апреля 2005" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+SELinux \- Linux с улучшенной безопасностью от NSA (SELinux)
+.
+.SH "ОПИСАНИЕ"
+Linux с улучшенной безопасностью от NSA - это реализация гибкой архитектуры мандатного
+управления доступом в операционной системе Linux. Архитектура SELinux предоставляет
+общую поддержку использования различных видов политик мандатного управления доступом,
+включая основанные на концепциях Type Enforcement® (принудительное присвоение типов),
+Role-Based Access Control (управление доступом на основе ролей) и Multi-Level Security
+(многоуровневая безопасность). Дополнительная информация и техническая документация по
+SELinux доступна по адресу http://www.nsa.gov/research/selinux.
+
+Файл конфигурации
+.I /etc/selinux/config
+позволяет управлять включением и отключением SELinux и, если SELinux включён,
+устанавливать режим его работы - разрешительный или принудительный. Переменной
+.B SELINUX
+можно задать значение отключённой, разрешительной или принудительной, чтобы выбрать
+один из этих вариантов. Если выбрать отключение режима, код ядра и приложения SELinux
+будет полностью отключён, система будет работать без какой-либо защиты SELinux.
+При установке разрешительного режима код SELinux включён, но не выполняет отказы в
+доступе, а только журналирует те действия, которые были бы запрещены при
+принудительном режиме. При установке принудительного режима код SELinux включён,
+выполняет отказы в доступе и журналирует соответствующие попытки доступа. Набор
+отказов в доступе в разрешительном режиме может отличаться от этого набора в
+принудительном режиме как по причине того, что принудительный режим предотвращает
+дальнейшее выполнение операции после первого отказа, так и из-за того, что после
+получения отказа в доступе часть кода приложения вернётся к работе в менее
+привилегированном режиме.
+
+Файл конфигурации
+.I /etc/selinux/config
+также управляет тем, какая политика активна в системе. SELinux позволяет установить
+в системе несколько политик, но одновременно можно использовать только одну из них.
+В настоящее время имеется несколько видов политики SELinux, например, целевая политика
+(targeted), политика многоуровневой безопасности (mls). Целевая политика позволяет
+большинству процессов пользователя выполняться без ограничений, помещая в отдельные
+домены безопасности, ограниченные политикой, только отдельные службы. Например, процессы
+пользователя выполняются в никак не ограниченном домене, в то время как именованная
+управляющая программа или управляющая программа apache будет выполняться в отдельном
+специально настроенном домене. Если используется политика MLS (Multi-Level Security),
+все процессы будут разделены по детально настроенным доменам безопасности и ограничены
+политикой. MLS также поддерживает модель Белла — Лападулы, в которой процессы
+ограничиваются не только по типу, но и по уровню данных.
+
+Чтобы определить, какая политика будет выполняться, следует установить переменную среды
+.B SELINUXTYPE
+.IR /etc/selinux/config .
+Чтобы применить к системе изменение типа политики, необходимо перезагрузить систему и,
+возможно, повторно проставить метки. В каталогах
+.I /etc/selinux/{SELINUXTYPE}/
+необходимо установить для каждой такой политики соответствующую конфигурацию.
+
+Дальнейшую настройку отдельной политики SELinux можно выполнить с помощью набора настраиваемых
+при компиляции параметров и набора логических переключателей среды выполнения политики.
+.B \%system\-config\-selinux
+позволяет настроить эти логические переключатели и настраиваемые параметры.
+
+Многие домены, которые защищены SELinux, также содержат man-страницы SELinux с информацией
+о настройке соответствующей политики.
+.
+.SH "ПРОСТАВЛЕНИЕ МЕТОК ДЛЯ ФАЙЛОВ"
+Всем файлам, каталогам, устройствам ... назначены контексты безопасности/метки. Эти контексты хранятся в расширенных атрибутах файловой системы.
+Проблемы с SELinux часто возникают из-за неправильного проставления меток в файловой системе. Это может быть вызвано загрузкой компьютера с ядром, отличным от SELinux. Появление сообщения об ошибке, содержащего file_t, обычно означает серьёзную проблему с проставлением меток в файловой системе.
+
+Лучшим способом повторного проставления меток в файловой системе является создание файла флага
+.I /.autorelabel
+и последующая перезагрузка.
+.BR system\-config\-selinux
+также имеет эту функциональность. Кроме того, для повторного проставления меток для файлов можно использовать команды
+.BR restorecon / fixfiles.
+.
+.SH ФАЙЛЫ
+.I /etc/selinux/config
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.ad l
+.nh
+.BR booleans (8),
+.BR setsebool (8),
+.BR sepolicy (8),
+.BR system-config-selinux (8),
+.BR togglesebool (8),
+.BR restorecon (8),
+.BR fixfiles (8),
+.BR setfiles (8),
+.BR semanage (8),
+.BR sepolicy (8)
+
+Для каждой ограниченной службы в системе имеется man-cтраница следующего формата:
+.br
+
+.BR <servicename>_selinux (8)
+
+Например, для службы httpd имеется страница
+.BR httpd_selinux (8).
+
+.B man -k selinux
+
+Выведет список всех man-страниц SELinux.
+
+.SH АВТОРЫ
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/selinuxenabled.8 b/libselinux/man/ru/man8/selinuxenabled.8
new file mode 100644
index 00000000..9c4af18b
--- /dev/null
+++ b/libselinux/man/ru/man8/selinuxenabled.8
@@ -0,0 +1,21 @@
+.TH "selinuxenabled" "8" "7 апреля 2004" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+selinuxenabled \- утилита для использования внутри сценариев оболочки, которая позволяет определить, включён ли selinux
+.
+.SH "ОБЗОР"
+.B selinuxenabled
+.
+.SH "ОПИСАНИЕ"
+Показывает, включён или отключён SELinux.
+.
+.SH "СОСТОЯНИЕ ВЫХОДА"
+Выход с состоянием 0, если SELinux включён, и 1, если он отключён.
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR setenforce (8),
+.BR getenforce (8)
+.
+.SH АВТОРЫ
+Dan Walsh, <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/selinuxexeccon.8 b/libselinux/man/ru/man8/selinuxexeccon.8
new file mode 100644
index 00000000..3ddfe97b
--- /dev/null
+++ b/libselinux/man/ru/man8/selinuxexeccon.8
@@ -0,0 +1,28 @@
+.TH "selinuxexeccon" "8" "14 мая 2011" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+selinuxexeccon \- сообщить контекст SELinux, который используется для этого исполняемого файла
+.
+.SH "ОБЗОР"
+.B selinuxexeccon
+.I command
+.RI [ fromcon ]
+.
+.SH "ОПИСАНИЕ"
+.B selinuxexeccon
+сообщает контекст SELinux для указанной команды из указанного контекста или текущего контекста.
+.
+.SH ПРИМЕР
+.nf
+# selinuxexeccon /usr/bin/passwd
+staff_u:staff_r:passwd_t:s0-s0:c0.c1023
+
+# selinuxexeccon /usr/sbin/sendmail system_u:system_r:httpd_t:s0
+system_u:system_r:system_mail_t:s0
+.fi
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR secon (8)
+.
+.SH АВТОРЫ
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/setenforce.8 b/libselinux/man/ru/man8/setenforce.8
new file mode 100644
index 00000000..e0daad9a
--- /dev/null
+++ b/libselinux/man/ru/man8/setenforce.8
@@ -0,0 +1,32 @@
+.TH "setenforce" "8" "7 апреля 2004" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+setenforce \- изменить режим, в котором выполняется SELinux
+.
+.SH "ОБЗОР"
+.B setenforce
+.RB [ Enforcing | Permissive | 1 | 0 ]
+.
+.SH "ОПИСАНИЕ"
+Используйте
+.B Enforcing
+или
+.B 1
+для установки SELinux в принудительный режим.
+.br
+Используйте
+.B Permissive
+или
+.B 0
+для установки SELinux в разрешительный режим.
+
+Если SELinux отключён и требуется его включить (или если SELinux включён и требуется его отключить), обратитесь к странице руководства
+.BR selinux (8).
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR getenforce (8),
+.BR selinuxenabled (8)
+.
+.SH АВТОРЫ
+Dan Walsh, <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/man/ru/man8/togglesebool.8 b/libselinux/man/ru/man8/togglesebool.8
new file mode 100644
index 00000000..1da9bcc4
--- /dev/null
+++ b/libselinux/man/ru/man8/togglesebool.8
@@ -0,0 +1,23 @@
+.TH "togglesebool" "8" "26 октября 2004" "sgrubb@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+togglesebool \- переключить текущее значение логического переключателя SELinux
+.
+.SH "ОБЗОР"
+.B togglesebool
+.I boolean...
+.
+.SH "ОПИСАНИЕ"
+.B togglesebool
+переключает текущее значение списка логических переключателей. Если текущее значение 1,
+то оно будет заменено на 0, и наоборот. Меняются только "находящиеся в памяти" значения;
+параметры загрузки остаются без изменений.
+.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR booleans (8),
+.BR getsebool (8),
+.BR setsebool (8)
+.
+.SH АВТОРЫ
+Эта страница руководства была написана Steve Grubb <sgrubb@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
index 8891086e..92e30738 100644
--- a/libselinux/src/Makefile
+++ b/libselinux/src/Makefile
@@ -165,7 +165,7 @@ $(AUDIT2WHYLOBJ): audit2why.c
$(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC -DSHARED -c -o $@ $<
$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) $(LIBSEPOLA)
- $(CC) $(CFLAGS) $(LDFLAGS) -L. -shared -o $@ $^ -lselinux $(LDLIBS_LIBSEPOLA) $(PYLIBS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -L. -shared -o $@ $^ -lselinux $(LDLIBS_LIBSEPOLA) $(PYLIBS) -Wl,-soname,audit2why.so,--version-script=audit2why.map,-z,defs
%.o: %.c policy.h
$(CC) $(CFLAGS) $(TLSFLAGS) -c -o $@ $<
diff --git a/libselinux/src/audit2why.map b/libselinux/src/audit2why.map
new file mode 100644
index 00000000..65989a8d
--- /dev/null
+++ b/libselinux/src/audit2why.map
@@ -0,0 +1,6 @@
+AUDIT2WHY_2.9 {
+ global:
+ initaudit2why;
+ PyInit_audit2why;
+ local: *;
+};
diff --git a/libselinux/src/booleans.c b/libselinux/src/booleans.c
index b3ea3623..a6d46fea 100644
--- a/libselinux/src/booleans.c
+++ b/libselinux/src/booleans.c
@@ -55,6 +55,7 @@ int security_get_boolean_names(char ***names, int *len)
snprintf(path, sizeof path, "%s%s", selinux_mnt, SELINUX_BOOL_DIR);
*len = scandir(path, &namelist, &filename_select, alphasort);
if (*len <= 0) {
+ errno = ENOENT;
return -1;
}
diff --git a/libselinux/src/checkAccess.c b/libselinux/src/checkAccess.c
index 8de57477..16bfcfb6 100644
--- a/libselinux/src/checkAccess.c
+++ b/libselinux/src/checkAccess.c
@@ -89,8 +89,10 @@ int selinux_check_passwd_access(access_vector_t requested)
int retval;
passwd_class = string_to_security_class("passwd");
- if (passwd_class == 0)
+ if (passwd_class == 0) {
+ freecon(user_context);
return 0;
+ }
retval = security_compute_av_raw(user_context,
user_context,
diff --git a/libselinux/src/label_db.c b/libselinux/src/label_db.c
index c46d0a1d..fba96c92 100644
--- a/libselinux/src/label_db.c
+++ b/libselinux/src/label_db.c
@@ -283,10 +283,12 @@ db_init(const struct selinux_opt *opts, unsigned nopts,
}
if (fstat(fileno(filp), &sb) < 0) {
free(catalog);
+ fclose(filp);
return NULL;
}
if (!S_ISREG(sb.st_mode)) {
free(catalog);
+ fclose(filp);
errno = EINVAL;
return NULL;
}
@@ -340,6 +342,7 @@ out_error:
free(spec->lr.ctx_trans);
}
free(catalog);
+ fclose(filp);
return NULL;
}
diff --git a/libselinux/src/label_file.c b/libselinux/src/label_file.c
index c3a903c8..6b64d66b 100644
--- a/libselinux/src/label_file.c
+++ b/libselinux/src/label_file.c
@@ -317,8 +317,10 @@ end_arch_check:
goto out;
}
rc = next_entry(str_buf, mmap_area, entry_len);
- if (rc < 0)
+ if (rc < 0) {
+ free(str_buf);
goto out;
+ }
if (str_buf[entry_len - 1] != '\0') {
free(str_buf);
diff --git a/libselinux/src/load_policy.c b/libselinux/src/load_policy.c
index e9f1264a..20052beb 100644
--- a/libselinux/src/load_policy.c
+++ b/libselinux/src/load_policy.c
@@ -262,8 +262,10 @@ checkbool:
rc = security_get_boolean_names(&names, &len);
if (!rc) {
values = malloc(sizeof(int) * len);
- if (!values)
+ if (!values) {
+ free(names);
goto unmap;
+ }
for (i = 0; i < len; i++)
values[i] =
security_get_boolean_active(names[i]);
diff --git a/libselinux/src/selinux_config.c b/libselinux/src/selinux_config.c
index 292728f3..b06cb63b 100644
--- a/libselinux/src/selinux_config.c
+++ b/libselinux/src/selinux_config.c
@@ -177,8 +177,7 @@ static void init_selinux_config(void)
if (!strncasecmp(buf_p, SELINUXTYPETAG,
sizeof(SELINUXTYPETAG) - 1)) {
- selinux_policytype = type =
- strdup(buf_p + sizeof(SELINUXTYPETAG) - 1);
+ type = strdup(buf_p + sizeof(SELINUXTYPETAG) - 1);
if (!type)
return;
end = type + strlen(type) - 1;
@@ -187,6 +186,11 @@ static void init_selinux_config(void)
*end = 0;
end--;
}
+ if (setpolicytype(type) != 0) {
+ free(type);
+ return;
+ }
+ free(type);
continue;
} else if (!strncmp(buf_p, SETLOCALDEFS,
sizeof(SETLOCALDEFS) - 1)) {
@@ -212,13 +216,10 @@ static void init_selinux_config(void)
fclose(fp);
}
- if (!type) {
- selinux_policytype = type = strdup(SELINUXDEFAULT);
- if (!type)
- return;
- }
+ if (!selinux_policytype && setpolicytype(SELINUXDEFAULT) != 0)
+ return;
- if (asprintf(&selinux_policyroot, "%s%s", SELINUXDIR, type) == -1)
+ if (asprintf(&selinux_policyroot, "%s%s", SELINUXDIR, selinux_policytype) == -1)
return;
for (i = 0; i < NEL; i++)
diff --git a/libselinux/src/selinux_restorecon.c b/libselinux/src/selinux_restorecon.c
index 3df2d382..924d9538 100644
--- a/libselinux/src/selinux_restorecon.c
+++ b/libselinux/src/selinux_restorecon.c
@@ -351,12 +351,19 @@ static int add_xattr_entry(const char *directory, bool delete_nonmatch,
new_entry->next = NULL;
new_entry->directory = strdup(directory);
- if (!new_entry->directory)
+ if (!new_entry->directory) {
+ free(new_entry);
+ free(sha1_buf);
goto oom;
+ }
new_entry->digest = strdup(sha1_buf);
- if (!new_entry->digest)
+ if (!new_entry->digest) {
+ free(new_entry->directory);
+ free(new_entry);
+ free(sha1_buf);
goto oom;
+ }
new_entry->result = digest_result;
@@ -672,8 +679,8 @@ static int restorecon_sb(const char *pathname, const struct stat *sb,
selinux_log(SELINUX_INFO,
"%s not reset as customized by admin to %s\n",
pathname, curcon);
- goto out;
}
+ goto out;
}
if (!flags->set_specctx && curcon) {
@@ -850,6 +857,7 @@ int selinux_restorecon(const char *pathname_orig,
if (lstat(pathname, &sb) < 0) {
if (flags.ignore_noent && errno == ENOENT) {
+ free(xattr_value);
free(pathdnamer);
free(pathname);
return 0;
@@ -881,7 +889,7 @@ int selinux_restorecon(const char *pathname_orig,
setrestoreconlast = false;
/* Ignore restoreconlast on in-memory filesystems */
- if (statfs(pathname, &sfsb) == 0) {
+ if (setrestoreconlast && statfs(pathname, &sfsb) == 0) {
if (sfsb.f_type == RAMFS_MAGIC || sfsb.f_type == TMPFS_MAGIC)
setrestoreconlast = false;
}
diff --git a/libselinux/src/selinuxswig_python.i b/libselinux/src/selinuxswig_python.i
index 2af7c7e0..4c73bf92 100644
--- a/libselinux/src/selinuxswig_python.i
+++ b/libselinux/src/selinuxswig_python.i
@@ -20,7 +20,7 @@ DISABLED = -1
PERMISSIVE = 0
ENFORCING = 1
-def restorecon(path, recursive=False, verbose=False):
+def restorecon(path, recursive=False, verbose=False, force=False):
""" Restore SELinux context on a given path
Arguments:
@@ -29,6 +29,9 @@ def restorecon(path, recursive=False, verbose=False):
Keyword arguments:
recursive -- Change files and directories file labels recursively (default False)
verbose -- Show changes in file labels (default False)
+ force -- Force reset of context to match file_context for customizable files,
+ and the default file context, changing the user, role, range portion as well
+ as the type (default False)
"""
restorecon_flags = SELINUX_RESTORECON_IGNORE_DIGEST | SELINUX_RESTORECON_REALPATH
@@ -36,6 +39,8 @@ def restorecon(path, recursive=False, verbose=False):
restorecon_flags |= SELINUX_RESTORECON_RECURSE
if verbose:
restorecon_flags |= SELINUX_RESTORECON_VERBOSE
+ if force:
+ restorecon_flags |= SELINUX_RESTORECON_SET_SPECFILE_CTX
selinux_restorecon(os.path.expanduser(path), restorecon_flags)
def chcon(path, context, recursive=False):
diff --git a/libselinux/utils/matchpathcon.c b/libselinux/utils/matchpathcon.c
index 67e4a433..9756d7d9 100644
--- a/libselinux/utils/matchpathcon.c
+++ b/libselinux/utils/matchpathcon.c
@@ -14,7 +14,7 @@
static __attribute__ ((__noreturn__)) void usage(const char *progname)
{
fprintf(stderr,
- "usage: %s [-N] [-n] [-f file_contexts] [ -P policy_root_path ] [-p prefix] [-Vq] path...\n",
+ "usage: %s [-V] [-N] [-n] [-m type] [-f file_contexts_file] [-p prefix] [-P policy_root_path] filepath...\n",
progname);
exit(1);
}
diff --git a/libsemanage/VERSION b/libsemanage/VERSION
index a4412fa7..29cba064 100644
--- a/libsemanage/VERSION
+++ b/libsemanage/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/libsemanage/man/Makefile b/libsemanage/man/Makefile
index 8667c9b6..f626447d 100644
--- a/libsemanage/man/Makefile
+++ b/libsemanage/man/Makefile
@@ -1,7 +1,11 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
-MAN3DIR ?= $(PREFIX)/share/man/man3
-MAN5DIR ?= $(PREFIX)/share/man/man5
+MANDIR ?= $(PREFIX)/share/man
+MAN3SUBDIR ?= man3
+MAN5SUBDIR ?= man5
+MAN3DIR ?= $(MANDIR)/$(MAN3SUBDIR)
+MAN5DIR ?= $(MANDIR)/$(MAN5SUBDIR)
all:
@@ -10,4 +14,13 @@ install: all
mkdir -p $(DESTDIR)$(MAN5DIR)
install -m 644 man3/*.3 $(DESTDIR)$(MAN3DIR)
install -m 644 man5/*.5 $(DESTDIR)$(MAN5DIR)
-
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang}/man3 ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/$(MAN3SUBDIR) ; \
+ install -m 644 $${lang}/man3/*.3 $(DESTDIR)$(MANDIR)/$${lang}/$(MAN3SUBDIR) ; \
+ fi ; \
+ if [ -e $${lang}/man5 ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/$(MAN5SUBDIR) ; \
+ install -m 644 $${lang}/man5/*.5 $(DESTDIR)$(MANDIR)/$${lang}/$(MAN5SUBDIR) ; \
+ fi ; \
+ done
diff --git a/libsemanage/man/ru/man5/semanage.conf.5 b/libsemanage/man/ru/man5/semanage.conf.5
new file mode 100644
index 00000000..cf65b3e6
--- /dev/null
+++ b/libsemanage/man/ru/man5/semanage.conf.5
@@ -0,0 +1,117 @@
+.TH semanage.conf "5" "Сентябрь 2011" "semanage.conf" "Администрирование системы Linux"
+.SH ИМЯ
+semanage.conf \- глобальный файл конфигурации для библиотеки управления SELinux
+.SH ОПИСАНИЕ
+.PP
+Файл
+.BR semanage.conf
+обычно располагается в каталоге /etc/selinux и используется для конфигурации поведения библиотеки управления SELinux в среде выполнения.
+
+.PP
+Каждая строка должна содержать параметр конфигурации, за которым следует знак равенства ("=") и значение конфигурации этого параметра. Все символы, которые следуют за "#", игнорируются (аналогично пустым строкам).
+
+.PP
+Разрешены следующие параметры:
+
+.RS
+.TP
+.B module-store
+Указать, как библиотека управления SELinux должна взаимодействовать с хранилищем политики SELinux. Если установлено "direct", библиотека управления SELinux выполняет запись напрямую в хранилище модулей политики SELinux (это значение по умолчанию).
+В ином случае в качестве аргумента может использоваться путь к сокету или имя сервера.
+Если аргумент начинается с "/" (как в "/foo/bar"), он представляет собой путь к именованному сокету, который следует использовать для подключения сервера управления политикой.
+Если аргумент не начинается с "/" (как в "foo.com:4242"), он должен интерпретироваться как имя удалённого сервера управления политикой, который следует использовать через TCP-подключение (порт по умолчанию 4242, если только после имени сервера через двоеточие, разделяющее два поля, не указан другой порт).
+
+.TP
+.B root
+Указать альтернативный корневой путь к хранилищу. По умолчанию: "/"
+
+.TP
+.B store-root
+Указать альтернативный путь store_root. По умолчанию: "/var/lib/selinux"
+
+.TP
+.B compiler-directory
+Указать альтернативный каталог, который содержит компиляторы HLL в CIL. Значение по умолчанию: "/usr/libexec/selinux/hll".
+
+.TP
+.B ignore-module-cache
+Определяет, следует ли игнорировать кэш модулей CIL, скомпилированных из HLL. Можно установить либо значение "true", либо значение "false" (по умолчанию установлено "false").
+Если кэш игнорируется, все модули CIL перекомпилируются из соответствующих модулей HLL.
+
+.TP
+.B policy-version
+При создании политики
+.BR semanage
+по умолчанию устанавливает версию политики POLICYDB_VERSION_MAX, как определено в <sepol/policydb/policydb.h>. Измените этот параметр, если для политики требуется установить другую версию.
+
+.TP
+.B target-platform
+Целевая платформа, для которой создаются политики. Действительными значениями являются "selinux" и "xen" (по умолчанию установлено "selinux").
+
+.TP
+.B expand-check
+Определяет, следует ли проверять правила "neverallow" при исполнении всех команд
+.BR semanage.
+Для этого параметра можно установить либо значение "0" (отключён), либо "1" (включён). По умолчанию параметр включён. Время выполнения может сильно возрасти, если этот параметр включён.
+
+.TP
+.B file-mode
+По умолчанию для разрешительного режима для файлов среды выполнения политики установлено значение 0644.
+
+.TP
+.B save-previous
+Определяет, следует ли сохранять прежний каталог модуля после успешной фиксации модуля в хранилище политики. Для параметра можно установить либо значение "true", либо значение "false". По умолчанию установлено "false" (прежняя версия удаляется).
+
+.TP
+.B save-linked
+Определяет, следует ли сохранять прежний связанный модуль (с именем "base.linked") после успешной фиксации модуля в хранилище политики.
+Для параметра можно установить либо значение "true", либо значение "false". По умолчанию установлено "false" (прежний модуль удаляется).
+
+.TP
+.B ignoredirs
+Разделённый ";" список каталогов, которые следует игнорировать при установке домашних каталогов пользователей.
+В некоторых дистрибутивах этот параметр используется для того, чтобы /root не отмечался как домашний каталог.
+
+.TP
+.B usepasswd
+Определяет, использовать ли getpwent(), чтобы получить список домашних каталогов, для которых следует проставить метки. Для параметра можно установить либо значение "true", либо значение "false" (по умолчанию установлено "true").
+
+.TP
+.B disable-genhomedircon
+Определяет, следует ли исполнять функцию genhomedircon при использовании команды
+.BR semanage.
+Для параметра можно установить либо значение "true", либо значение "false". По умолчанию возможность genhomedircon включена (эквивалентно установке значения "false" для этого параметра).
+
+.TP
+.B handle-unknown
+Этот параметр управляет тем, как ядро обрабатывает разрешения, которые определены в ядре, но отсутствуют в фактической политике.
+Возможные значения: "deny", "reject" или "allow".
+
+.TP
+.B bzip-blocksize
+Этот параметр должен находиться в диапазоне 0-9. Значение 0 означает отсутствие сжатия. По умолчанию значение размера блока bzip равняется 9 (фактическое значение размера блока получается путём умножения на 100000).
+
+.TP
+.B bzip-small
+Если для этого параметра установлено значение "true", алгоритм bzip попытается уменьшить использование системной памяти. Также для этого параметра можно установить значение "false" (по умолчанию установлено это значение).
+
+.TP
+.B remove-hll
+Если для этого параметра установлено значение "true", файлы HLL будут удалены после компиляции в CIL. Чтобы удалить уже cкомпилированные в CIL файлы HLL, необходимо перекомпилировать модули, установив для параметра
+.BR ignore-module-cache
+значение "true", или используя параметр
+.BR ignore-module-cache
+с semodule. Для параметра remove-hll можно установить либо значение "true", либо значение "false" (по умолчанию установлено "false").
+
+Обратите внимание: так как этот параметр удаляет все файлы HLL, обновлённый компилятор HLL не сможет перекомпилировать исходный файл HLL в CIL.
+Чтобы скомпилировать исходный файл HLL в CIL, необходимо переустановить этот файл HLL.
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.TP
+semanage(8)
+.PP
+
+.SH АВТОРЫ
+Эта страница руководства была написана Guido Trentalancia <guido@trentalancia.com>.
+Библиотека управления SELinux была написана Tresys Technology LLC и Red Hat Inc.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libsemanage/src/boolean_record.c b/libsemanage/src/boolean_record.c
index 665c0223..c234094e 100644
--- a/libsemanage/src/boolean_record.c
+++ b/libsemanage/src/boolean_record.c
@@ -6,7 +6,9 @@
* Implements: record_key_t (Database Record Key)
*/
+#include <string.h>
#include <sepol/boolean_record.h>
+#include "handle_internal.h"
typedef sepol_bool_t semanage_bool_t;
typedef sepol_bool_key_t semanage_bool_key_t;
@@ -84,10 +86,58 @@ hidden_def(semanage_bool_get_name)
int semanage_bool_set_name(semanage_handle_t * handle,
semanage_bool_t * boolean, const char *name)
{
- int rc;
- char *subname = selinux_boolean_sub(name);
+ int rc = -1;
+ const char *prefix = semanage_root();
+ const char *storename = handle->conf->store_path;
+ const char *selinux_root = selinux_policy_root();
+ char *oldroot;
+ char *olddir;
+ char *subname = NULL;
+ char *newroot = NULL;
+ char *end;
+
+ if (!selinux_root)
+ return -1;
+
+ oldroot = strdup(selinux_root);
+ if (!oldroot)
+ return -1;
+ olddir = strdup(oldroot);
+ if (!olddir)
+ goto out;
+ end = strrchr(olddir, '/');
+ if (!end)
+ goto out;
+ end++;
+ *end = '\0';
+ rc = asprintf(&newroot, "%s%s%s", prefix, olddir, storename);
+ if (rc < 0)
+ goto out;
+
+ if (strcmp(oldroot, newroot)) {
+ rc = selinux_set_policy_root(newroot);
+ if (rc)
+ goto out;
+ }
+
+ subname = selinux_boolean_sub(name);
+ if (!subname) {
+ rc = -1;
+ goto out;
+ }
+
+ if (strcmp(oldroot, newroot)) {
+ rc = selinux_set_policy_root(oldroot);
+ if (rc)
+ goto out;
+ }
+
rc = sepol_bool_set_name(handle->sepolh, boolean, subname);
+out:
free(subname);
+ free(oldroot);
+ free(olddir);
+ free(newroot);
return rc;
}
diff --git a/libsemanage/src/handle.c b/libsemanage/src/handle.c
index a6567bd4..e5109aef 100644
--- a/libsemanage/src/handle.c
+++ b/libsemanage/src/handle.c
@@ -58,6 +58,8 @@ const char * semanage_root(void)
return private_semanage_root;
}
+hidden_def(semanage_root);
+
semanage_handle_t *semanage_handle_create(void)
{
semanage_handle_t *sh = NULL;
diff --git a/libsemanage/src/handle_internal.h b/libsemanage/src/handle_internal.h
index 66ce2708..d4b4d9c7 100644
--- a/libsemanage/src/handle_internal.h
+++ b/libsemanage/src/handle_internal.h
@@ -5,8 +5,9 @@
#include "dso.h"
hidden_proto(semanage_begin_transaction)
- hidden_proto(semanage_handle_destroy)
- hidden_proto(semanage_reload_policy)
- hidden_proto(semanage_access_check)
- hidden_proto(semanage_set_root)
+hidden_proto(semanage_handle_destroy)
+hidden_proto(semanage_reload_policy)
+hidden_proto(semanage_access_check)
+hidden_proto(semanage_set_root)
+hidden_proto(semanage_root)
#endif
diff --git a/libsepol/VERSION b/libsepol/VERSION
index a4412fa7..29cba064 100644
--- a/libsepol/VERSION
+++ b/libsepol/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
index 0cc6eeb1..e2eb3ebe 100644
--- a/libsepol/cil/src/cil_binary.c
+++ b/libsepol/cil/src/cil_binary.c
@@ -54,6 +54,7 @@
#include "cil_binary.h"
#include "cil_symtab.h"
#include "cil_find.h"
+#include "cil_build_ast.h"
/* There are 44000 filename_trans in current fedora policy. 1.33 times this is the recommended
* size of a hashtable. The next power of 2 of this is 2 ** 16.
@@ -930,7 +931,7 @@ int cil_sensalias_to_policydb(policydb_t *pdb, struct cil_alias *cil_alias)
exit:
level_datum_destroy(sepol_alias);
- free(sepol_level);
+ free(sepol_alias);
free(key);
return rc;
}
@@ -1763,11 +1764,13 @@ int __cil_avrulex_ioctl_to_hashtable(hashtab_t h, uint16_t kind, uint32_t src, u
hashtab_xperms = cil_malloc(sizeof(*hashtab_xperms));
rc = ebitmap_cpy(hashtab_xperms, xperms);
if (rc != SEPOL_OK) {
+ free(hashtab_xperms);
free(avtab_key);
goto exit;
}
rc = hashtab_insert(h, (hashtab_key_t)avtab_key, hashtab_xperms);
if (rc != SEPOL_OK) {
+ free(hashtab_xperms);
free(avtab_key);
goto exit;
}
@@ -2072,6 +2075,7 @@ static void __cil_expr_to_string(struct cil_list *expr, enum cil_flavor flavor,
char *c2 = NULL;
__cil_expr_to_string_helper(curr, flavor, &c1);
for (curr = curr->next; curr; curr = curr->next) {
+ s1 = NULL;
__cil_expr_to_string_helper(curr, flavor, &s1);
cil_asprintf(&c2, "%s %s", c1, s1);
free(c1);
@@ -2157,6 +2161,7 @@ static int __cil_cond_expr_to_sepol_expr_helper(policydb_t *pdb, struct cil_list
op->expr_type = COND_NEQ;
break;
default:
+ free(op);
goto exit;
}
@@ -2283,6 +2288,7 @@ int cil_booleanif_to_policydb(policydb_t *pdb, const struct cil_db *db, struct c
cond_expr_destroy(tmp_cond->expr);
free(tmp_cond);
+ tmp_cond = NULL;
for (cb_node = node->cl_head; cb_node != NULL; cb_node = cb_node->next) {
if (cb_node->flavor == CIL_CONDBLOCK) {
@@ -2327,6 +2333,11 @@ int cil_booleanif_to_policydb(policydb_t *pdb, const struct cil_db *db, struct c
return SEPOL_OK;
exit:
+ if (tmp_cond) {
+ if (tmp_cond->expr)
+ cond_expr_destroy(tmp_cond->expr);
+ free(tmp_cond);
+ }
return rc;
}
@@ -4797,6 +4808,7 @@ static struct cil_list *cil_classperms_from_sepol(policydb_t *pdb, uint16_t clas
return cp_list;
exit:
+ cil_destroy_classperms(cp);
cil_log(CIL_ERR,"Failed to create CIL class-permissions from sepol values\n");
return NULL;
}
diff --git a/libsepol/cil/src/cil_resolve_ast.c b/libsepol/cil/src/cil_resolve_ast.c
index fb9d9174..ea08087d 100644
--- a/libsepol/cil/src/cil_resolve_ast.c
+++ b/libsepol/cil/src/cil_resolve_ast.c
@@ -1535,6 +1535,7 @@ int cil_resolve_sidorder(struct cil_tree_node *current, void *extra_args)
return SEPOL_OK;
exit:
+ cil_list_destroy(&new, CIL_FALSE);
return rc;
}
@@ -1591,6 +1592,7 @@ int cil_resolve_catorder(struct cil_tree_node *current, void *extra_args)
return SEPOL_OK;
exit:
+ cil_list_destroy(&new, CIL_FALSE);
return rc;
}
@@ -1624,6 +1626,7 @@ int cil_resolve_sensitivityorder(struct cil_tree_node *current, void *extra_args
return SEPOL_OK;
exit:
+ cil_list_destroy(&new, CIL_FALSE);
return rc;
}
@@ -2853,6 +2856,7 @@ int cil_resolve_call1(struct cil_tree_node *current, void *extra_args)
rc = cil_fill_cats(pc, &catset->cats);
if (rc != SEPOL_OK) {
cil_destroy_catset(catset);
+ cil_destroy_args(new_arg);
goto exit;
}
cil_tree_node_init(&cat_node);
@@ -2877,6 +2881,7 @@ int cil_resolve_call1(struct cil_tree_node *current, void *extra_args)
if (rc != SEPOL_OK) {
cil_log(CIL_ERR, "Failed to create anonymous level, rc: %d\n", rc);
cil_destroy_level(level);
+ cil_destroy_args(new_arg);
goto exit;
}
cil_tree_node_init(&lvl_node);
@@ -2901,6 +2906,7 @@ int cil_resolve_call1(struct cil_tree_node *current, void *extra_args)
if (rc != SEPOL_OK) {
cil_log(CIL_ERR, "Failed to create anonymous levelrange, rc: %d\n", rc);
cil_destroy_levelrange(range);
+ cil_destroy_args(new_arg);
goto exit;
}
cil_tree_node_init(&range_node);
@@ -2925,6 +2931,7 @@ int cil_resolve_call1(struct cil_tree_node *current, void *extra_args)
if (rc != SEPOL_OK) {
cil_log(CIL_ERR, "Failed to create anonymous ip address, rc: %d\n", rc);
cil_destroy_ipaddr(ipaddr);
+ cil_destroy_args(new_arg);
goto exit;
}
cil_tree_node_init(&addr_node);
@@ -2955,6 +2962,7 @@ int cil_resolve_call1(struct cil_tree_node *current, void *extra_args)
if (rc != SEPOL_OK) {
cil_log(CIL_ERR, "Failed to create anonymous classpermission\n");
cil_destroy_classpermission(cp);
+ cil_destroy_args(new_arg);
goto exit;
}
cil_tree_node_init(&cp_node);
@@ -2970,6 +2978,7 @@ int cil_resolve_call1(struct cil_tree_node *current, void *extra_args)
default:
cil_log(CIL_ERR, "Unexpected flavor: %d\n",
(((struct cil_param*)item->data)->flavor));
+ cil_destroy_args(new_arg);
rc = SEPOL_ERR;
goto exit;
}
diff --git a/libsepol/cil/src/cil_symtab.c b/libsepol/cil/src/cil_symtab.c
index 3769979b..2970b863 100644
--- a/libsepol/cil/src/cil_symtab.c
+++ b/libsepol/cil/src/cil_symtab.c
@@ -185,6 +185,7 @@ int cil_complex_symtab_insert(struct cil_complex_symtab *symtab,
ckey->key2 == curr->ckey->key2 &&
ckey->key3 == curr->ckey->key3 &&
ckey->key4 == curr->ckey->key4) {
+ free(node);
return SEPOL_EEXIST;
}
diff --git a/libsepol/cil/src/cil_write_ast.c b/libsepol/cil/src/cil_write_ast.c
index 3b252db7..bcf5f416 100644
--- a/libsepol/cil/src/cil_write_ast.c
+++ b/libsepol/cil/src/cil_write_ast.c
@@ -1153,7 +1153,6 @@ exit:
static int __cil_write_node_helper(struct cil_tree_node *node, uint32_t *finished, void *extra_args)
{
int rc = SEPOL_OK;
- struct cil_db *db = NULL;
struct cil_args_write *args = NULL;
FILE *cil_out = NULL;
@@ -1162,7 +1161,6 @@ static int __cil_write_node_helper(struct cil_tree_node *node, uint32_t *finishe
}
args = extra_args;
- db = args->db;
cil_out = args->cil_out;
switch (node->flavor) {
@@ -1462,7 +1460,6 @@ exit:
static int __cil_write_last_child_helper(struct cil_tree_node *node, void *extra_args)
{
int rc = SEPOL_ERR;
- struct cil_db *db = NULL;
struct cil_args_write *args = NULL;
FILE *cil_out = NULL;
@@ -1471,7 +1468,6 @@ static int __cil_write_last_child_helper(struct cil_tree_node *node, void *extra
}
args = extra_args;
- db = args->db;
cil_out = args->cil_out;
if (node->parent && node->parent->flavor != CIL_ROOT && node->parent->flavor != CIL_SRC_INFO) {
diff --git a/libsepol/man/Makefile b/libsepol/man/Makefile
index 9b754548..f54e478d 100644
--- a/libsepol/man/Makefile
+++ b/libsepol/man/Makefile
@@ -1,7 +1,11 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
-MAN8DIR ?= $(PREFIX)/share/man/man8
-MAN3DIR ?= $(PREFIX)/share/man/man3
+MANDIR ?= $(PREFIX)/share/man
+MAN3SUBDIR ?= man3
+MAN8SUBDIR ?= man8
+MAN3DIR ?= $(MANDIR)/$(MAN3SUBDIR)
+MAN8DIR ?= $(MANDIR)/$(MAN8SUBDIR)
all:
@@ -10,4 +14,13 @@ install: all
mkdir -p $(DESTDIR)$(MAN8DIR)
install -m 644 man3/*.3 $(DESTDIR)$(MAN3DIR)
install -m 644 man8/*.8 $(DESTDIR)$(MAN8DIR)
-
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang}/man3 ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/$(MAN3SUBDIR) ; \
+ install -m 644 $${lang}/man3/*.3 $(DESTDIR)$(MANDIR)/$${lang}/$(MAN3SUBDIR) ; \
+ fi ; \
+ if [ -e $${lang}/man8 ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/$(MAN8SUBDIR) ; \
+ install -m 644 $${lang}/man8/*.8 $(DESTDIR)$(MANDIR)/$${lang}/$(MAN8SUBDIR) ; \
+ fi ; \
+ done
diff --git a/libsepol/man/ru/man8/chkcon.8 b/libsepol/man/ru/man8/chkcon.8
new file mode 100644
index 00000000..2661afb0
--- /dev/null
+++ b/libsepol/man/ru/man8/chkcon.8
@@ -0,0 +1,39 @@
+.\" Hey, Emacs! This is an -*- nroff -*- source file.
+.\" Copyright (c) 1997 Manoj Srivastava <srivasta@debian.org>
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.TH CHKCON 8 "12 марта 2005" "SELinux" "Документация по командной строке SELinux"
+.SH ИМЯ
+chkcon \- определить, является ли контекст безопасности действительным для конкретной двоичной политики
+.SH ОБЗОР
+chkcon policy_file context
+.SH ОПИСАНИЕ
+Эта утилита проверяет контекст безопасности (его строковое представление), заданный аргументом
+.I context,
+относительно данных конфигурации, прочтённых из файла двоичного представления базы данных политик, заданного аргументом
+.I policy_file.
+.SH ФАЙЛЫ
+policy file
+.SH АВТОРЫ
+Эта страница руководства (и только она) была написана Manoj
+Srivastava <srivasta@debian.org>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c
index 6f1b235e..312d137b 100644
--- a/libsepol/src/expand.c
+++ b/libsepol/src/expand.c
@@ -1451,6 +1451,7 @@ static int expand_filename_trans(expand_state_t *state, filename_trans_rule_t *r
new_trans->name = strdup(cur_rule->name);
if (!new_trans->name) {
ERR(state->handle, "Out of memory!");
+ free(new_trans);
return -1;
}
new_trans->stype = i + 1;
@@ -1460,6 +1461,8 @@ static int expand_filename_trans(expand_state_t *state, filename_trans_rule_t *r
otype = calloc(1, sizeof(*otype));
if (!otype) {
ERR(state->handle, "Out of memory!");
+ free(new_trans->name);
+ free(new_trans);
return -1;
}
otype->otype = mapped_otype;
@@ -1469,6 +1472,9 @@ static int expand_filename_trans(expand_state_t *state, filename_trans_rule_t *r
otype);
if (rc) {
ERR(state->handle, "Out of memory!");
+ free(otype);
+ free(new_trans->name);
+ free(new_trans);
return -1;
}
}
diff --git a/libsepol/src/kernel_to_cil.c b/libsepol/src/kernel_to_cil.c
index 63e4d489..48b571a5 100644
--- a/libsepol/src/kernel_to_cil.c
+++ b/libsepol/src/kernel_to_cil.c
@@ -1614,8 +1614,8 @@ static char *xperms_to_str(avtab_extended_perms_t *xperms)
if (xperms->specified & AVTAB_XPERMS_IOCTLFUNCTION) {
value = xperms->driver<<8 | bit;
- low_value = xperms->driver<<8 | low_bit;
if (in_range) {
+ low_value = xperms->driver<<8 | low_bit;
len = snprintf(p, remaining, " (range 0x%hx 0x%hx)", low_value, value);
in_range = 0;
} else {
@@ -1623,8 +1623,8 @@ static char *xperms_to_str(avtab_extended_perms_t *xperms)
}
} else if (xperms->specified & AVTAB_XPERMS_IOCTLDRIVER) {
value = bit << 8;
- low_value = low_bit << 8;
if (in_range) {
+ low_value = low_bit << 8;
len = snprintf(p, remaining, " (range 0x%hx 0x%hx)", low_value, (uint16_t) (value|0xff));
in_range = 0;
} else {
@@ -2031,6 +2031,8 @@ static int write_cond_av_list_to_cil(FILE *out, struct policydb *pdb, cond_av_li
return 0;
exit:
+ strs_free_all(strs);
+ strs_destroy(&strs);
return rc;
}
diff --git a/libsepol/src/kernel_to_conf.c b/libsepol/src/kernel_to_conf.c
index 215d940c..afadca6b 100644
--- a/libsepol/src/kernel_to_conf.c
+++ b/libsepol/src/kernel_to_conf.c
@@ -1999,6 +1999,8 @@ static int write_cond_av_list_to_conf(FILE *out, struct policydb *pdb, cond_av_l
return 0;
exit:
+ strs_free_all(strs);
+ strs_destroy(&strs);
return rc;
}
diff --git a/libsepol/src/module_to_cil.c b/libsepol/src/module_to_cil.c
index 4cb44e0e..f04589ed 100644
--- a/libsepol/src/module_to_cil.c
+++ b/libsepol/src/module_to_cil.c
@@ -655,8 +655,8 @@ static int xperms_to_cil(const av_extended_perms_t *xperms)
if (xperms->specified & AVTAB_XPERMS_IOCTLFUNCTION) {
value = xperms->driver<<8 | bit;
- low_value = xperms->driver<<8 | low_bit;
if (in_range) {
+ low_value = xperms->driver<<8 | low_bit;
cil_printf("(range 0x%hx 0x%hx)", low_value, value);
in_range = 0;
} else {
@@ -664,8 +664,8 @@ static int xperms_to_cil(const av_extended_perms_t *xperms)
}
} else if (xperms->specified & AVTAB_XPERMS_IOCTLDRIVER) {
value = bit << 8;
- low_value = low_bit << 8;
if (in_range) {
+ low_value = low_bit << 8;
cil_printf("(range 0x%hx 0x%hx)", low_value, (uint16_t) (value|0xff));
in_range = 0;
} else {
diff --git a/libsepol/src/util.c b/libsepol/src/util.c
index b00251c6..a4008882 100644
--- a/libsepol/src/util.c
+++ b/libsepol/src/util.c
@@ -159,16 +159,16 @@ char *sepol_extended_perms_to_string(avtab_extended_perms_t *xperms)
if (xperms->specified & AVTAB_XPERMS_IOCTLFUNCTION) {
value = xperms->driver<<8 | bit;
- low_value = xperms->driver<<8 | low_bit;
if (in_range) {
+ low_value = xperms->driver<<8 | low_bit;
len = snprintf(p, sizeof(xpermsbuf) - xpermslen, "0x%hx-0x%hx ", low_value, value);
} else {
len = snprintf(p, sizeof(xpermsbuf) - xpermslen, "0x%hx ", value);
}
} else if (xperms->specified & AVTAB_XPERMS_IOCTLDRIVER) {
value = bit << 8;
- low_value = low_bit << 8;
if (in_range) {
+ low_value = low_bit << 8;
len = snprintf(p, sizeof(xpermsbuf) - xpermslen, "0x%hx-0x%hx ", low_value, (uint16_t) (value|0xff));
} else {
len = snprintf(p, sizeof(xpermsbuf) - xpermslen, "0x%hx-0x%hx ", value, (uint16_t) (value|0xff));
diff --git a/mcstrans/VERSION b/mcstrans/VERSION
index a4412fa7..29cba064 100644
--- a/mcstrans/VERSION
+++ b/mcstrans/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/mcstrans/man/Makefile b/mcstrans/man/Makefile
index 645f6286..0f8d34fd 100644
--- a/mcstrans/man/Makefile
+++ b/mcstrans/man/Makefile
@@ -1,12 +1,21 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
-MAN8DIR ?= $(PREFIX)/share/man/man8
+MANDIR ?= $(PREFIX)/share/man
+MAN8SUBDIR ?= man8
+MAN8DIR ?= $(MANDIR)/$(MAN8SUBDIR)
all:
install: all
mkdir -p $(DESTDIR)$(MAN8DIR)
install -m 644 man8/*.8 $(DESTDIR)$(MAN8DIR)
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang}/man8 ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/$(MAN8SUBDIR) ; \
+ install -m 644 $${lang}/man8/*.8 $(DESTDIR)$(MANDIR)/$${lang}/$(MAN8SUBDIR) ; \
+ fi ; \
+ done
clean:
-rm -f *~ \#*
diff --git a/mcstrans/man/ru/man8/mcs.8 b/mcstrans/man/ru/man8/mcs.8
new file mode 100644
index 00000000..c869ed2c
--- /dev/null
+++ b/mcstrans/man/ru/man8/mcs.8
@@ -0,0 +1,24 @@
+.TH "mcs" "8" "8 сентября 2005" "dwalsh@redhat.com" "Документация по MCS"
+
+.SH "ИМЯ"
+mcs \- мультикатегорийная система
+
+.SH "ОПИСАНИЕ"
+MCS (мультикатегорийная система) позволяет пользователям проставлять в своей системе метки для файлов внутри определённых администратором категорий. Затем эта система использует принудительное управление доступом SELinux, чтобы защитить эти файлы. MCS - дискреционная модель, которая позволяет пользователям отмечать свои данные дополнительными тегами, накладывая дальнейшие ограничения доступа. Обязательным является только один аспект - авторизовывать пользователей для категорий, определяя их уровень допуска в политике. MCS похожа на MLS, выполняет те же самые пути кода и использует ту же самую инфраструктуру поддержки. Они отличаются между собой только спецификой настройки.
+
+
+Файл конфигурации
+.I /etc/selinux/{SELINUXTYPE}/setrans.conf
+преобразовывает метки на диске в удобную для прочтения человеком форму. В этом файле администраторы могут определить любые необходимые метки.
+Некоторые приложения, такие как вывод на экран и аудит, будут использовать эти метки для идентификации файлов. Если для файла будет задана категория, другие приложения/службы не получат к нему доступ.
+.P
+Примеры меток файлов: PatientRecord, CompanyConfidential и так далее.
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+selinux(8), chcon(1)
+
+.SH ФАЙЛЫ
+/etc/selinux/{SELINUXTYPE}/setrans.conf
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>
diff --git a/mcstrans/man/ru/man8/mcstransd.8 b/mcstrans/man/ru/man8/mcstransd.8
new file mode 100644
index 00000000..90247c32
--- /dev/null
+++ b/mcstrans/man/ru/man8/mcstransd.8
@@ -0,0 +1,32 @@
+.TH "mcstransd" "8" "16 октября 2009" "dwalsh@redhat.com" "Документация по MCS"
+.SH "ИМЯ"
+mcstransd \- внутренняя служба MCS (мультикатегорийная система). Переводит метки MCS/MLS SELinux в удобную для прочтения человеком форму.
+
+.SH "ОБЗОР"
+.B mcstransd [-f] [-h]
+.P
+
+.SH "ОПИСАНИЕ"
+Эта страница руководства содержит описание программы
+.BR mcstransd.
+.P
+Эта внутренняя служба выполняет чтение файла конфигурации /etc/selinux/{SELINUXTYPE}/setrans.conf и связывается с libselinux через сокет в /var/run/setrans.
+.SH "ПАРАМЕТРЫ"
+.TP
+\-f
+Запустить mcstransd на переднем плане. Не запускать как внутреннюю службу.
+.TP
+\-h
+Вывести краткое описание доступных параметров командной строки\&.
+
+.SH "ФАЙЛЫ"
+/etc/selinux/{SELINUXTYPE}/setrans.conf
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR mcs (8)
+
+.SH "АВТОРЫ"
+Эта man-страница написана Dan Walsh <dwalsh@redhat.com>.
+Исходная версия программы написана Dan Walsh <dwalsh@redhat.com>.
+Программа улучшена/переписана Joe Nall <joe@nall.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/mcstrans/man/ru/man8/setrans.conf.8 b/mcstrans/man/ru/man8/setrans.conf.8
new file mode 100644
index 00000000..9141defe
--- /dev/null
+++ b/mcstrans/man/ru/man8/setrans.conf.8
@@ -0,0 +1,106 @@
+.TH "setrans.conf" "8" "13 июля 2010" "txtoth@gmail.com" "Документация по setrans.conf"
+.SH "ИМЯ"
+setrans.conf \- файл конфигурации преобразования для систем MCS/MLS SELinux
+
+.SH "ОПИСАНИЕ"
+Файл конфигурации
+.I /etc/selinux/{SELINUXTYPE}/setrans.conf
+определяет способ, которым метки SELinux MCS/MLS преобразовываются в удобную для прочтения человеком форму с помощью внутренней службы mcstransd. Политики по умолчанию поддерживают 16 уровней конфиденциальности (от s0 до s15) и 1024 категории (от c0 до c1023). Если категорий несколько, их можно разделить запятыми (c0,c1,c3,c5), а диапазон категорий - сократить с помощью указания через точку (c0.c3,c5).
+
+.SS "Ключевые слова"
+
+.TP
+Base\fR
+когда объявляется база, ко всем последующим определениям меток конфиденциальности будут при преобразовании применяться модификаторы.
+Метки конфиденциальности, которые были определены до объявления базы, незамедлительно кэшируются, и к ним не применяются модификаторы; они используются в качестве прямого преобразования.
+
+.TP
+Default\fR
+определяет битовый диапазон категорий, который будет использоваться для обратных битов.
+
+.TP
+Domain\fR
+создаёт новый домен с указанным именем.
+
+.TP
+Include\fR
+прочитать и обработать содержимое указанного файла конфигурации.
+
+.TP
+Join\fR
+определяет символ, который используется для разделения участников группы модификаторов, когда указано более одного (например, USA/AUS).
+
+.TP
+ModifierGroup\fR
+средство группировки битовых определений категорий по тому, как они изменяют метку конфиденциальности.
+
+.TP
+Prefix\fR
+слова (слова), которое может предшествовать участнику (участникам) группы модификаторов (например, REL USA).
+
+.TP
+Suffix\fR
+слово (слова), которое может следовать за участником (участниками) группы модификаторов (например, USA EYES ONLY).
+
+.TP
+Whitespace\fR
+определяет набор допустимых пробельных символов, которые могут использоваться в преобразовываемой метке.
+
+.SS "Примеры определения уровня конфиденциальности"
+
+.TP
+s0=SystemLow\fR
+определяет преобразование s0 (минимального уровня конфиденциальности) без категорий в SystemLow.
+
+.TP
+s15:c0.c1023=SystemHigh\fR
+определяет преобразование s15:c0.c1023 в SystemHigh. c0.c1023 - сокращённое обозначение всех категорий. Уровень конфиденциальности и категории разделены двоеточием.
+
+.TP
+s0\-s15:c0.c1023=SystemLow\-SystemHigh\fR
+определяет преобразование диапазона s0\-s15:c0.c1023 в SystemLow\-SystemHigh. Два компонента диапазона разделены дефисом.
+
+.TP
+s0:c0=PatientRecord\fR
+определяет преобразование уровня конфиденциальности s0 с категорией c0 в PatientRecord.
+
+.TP
+s0:c1=Accounting\fR
+определяет преобразование уровня конфиденциальности s0 с категорией c1 в Accounting.
+
+.TP
+s2:c1,c2,c3=Confidential3Categories
+.TP
+s2:c1.c3=Confidential3Categories\fR
+и то, и другое определяет преобразование уровня конфиденциальности s2 с категориями c1, c2 и c3 в Confidential3Categories.
+
+.TP
+s5=TopSecret\fR
+определяет преобразование уровня конфиденциальности s5 без категорий в TopSecret.
+
+.SS "Примеры ограничения"
+
+.TP
+c0!c1
+если одновременно заданы биты категорий 0 и 1, ограничение не сработает и будет возвращён исходный контекст.
+
+.TP
+c5.c9>c1
+если заданы биты категорий с 5 по 9, бит 1 также необходимо установить - иначе ограничение не сработает и будет возвращён исходный контекст.
+
+.TP
+s1!c5,c9
+если заданы биты категорий с 5 по 9 и уровень конфиденциальности равен s1, ограничение не сработает и будет возвращён исходный контекст.
+
+.SH "ФАЙЛЫ"
+/etc/selinux/{SELINUXTYPE}/setrans.conf
+.br
+/usr/share/mcstrans/examples
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+selinux(8), mcs(8), mls(8), chcon(1)
+
+.SH "АВТОРЫ"
+ Написано Joe Nall <joe@nall.com>.
+ Обновлено Ted X. Toth <txtoth@gmail.com>.
+ Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/policycoreutils/VERSION b/policycoreutils/VERSION
index a4412fa7..29cba064 100644
--- a/policycoreutils/VERSION
+++ b/policycoreutils/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/policycoreutils/load_policy/Makefile b/policycoreutils/load_policy/Makefile
index 568d5d49..c1ba805b 100644
--- a/policycoreutils/load_policy/Makefile
+++ b/policycoreutils/load_policy/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SBINDIR ?= $(PREFIX)/sbin
MANDIR ?= $(PREFIX)/share/man
@@ -17,6 +18,12 @@ install: all
install -m 755 $(TARGETS) $(DESTDIR)$(SBINDIR)
test -d $(DESTDIR)$(MANDIR)/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/man8
install -m 644 load_policy.8 $(DESTDIR)$(MANDIR)/man8/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ test -d $(DESTDIR)$(MANDIR)/$${lang}/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
clean:
-rm -f $(TARGETS) *.o
diff --git a/policycoreutils/load_policy/ru/load_policy.8 b/policycoreutils/load_policy/ru/load_policy.8
new file mode 100644
index 00000000..db3d9f65
--- /dev/null
+++ b/policycoreutils/load_policy/ru/load_policy.8
@@ -0,0 +1,41 @@
+.TH LOAD_POLICY "8" "Май 2003" "Security Enhanced Linux" NSA
+.SH ИМЯ
+load_policy \- загрузить новую политику SELinux в ядро
+
+.SH ОБЗОР
+.B load_policy
+[\-qi]
+.br
+.SH ОПИСАНИЕ
+.PP
+load_policy загружает установленный файл политики в ядро.
+Существующие значения логических переключателей политики автоматически сохраняются при перезагрузках политики, а не сбрасываются на установленные в файле политики значения по умолчанию.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.B \-q
+Отменить предупредительные сообщения.
+.TP
+.B \-i
+Начальная загрузка политики. Следует использовать, только если политика загружается впервые с момента запуска (обычно вызывается из initramfs).
+
+.SH "СОСТОЯНИЕ ВЫХОДА"
+.TP
+.B 0
+Успешно
+.TP
+.B 1
+Недействительный параметр
+.TP
+.B 2
+Не удалось загрузить политику
+.TP
+.B 3
+Не удалось выполнить начальную загрузку политики, запрошен принудительный режим
+.SH СМОТРИТЕ ТАКЖЕ
+.BR booleans (8)
+.SH АВТОРЫ
+.nf
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Программа была написана Stephen Smalley <sds@tycho.nsa.gov>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/policycoreutils/man/Makefile b/policycoreutils/man/Makefile
index 8af1520c..94bbf586 100644
--- a/policycoreutils/man/Makefile
+++ b/policycoreutils/man/Makefile
@@ -1,6 +1,8 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
-MAN5DIR ?= $(PREFIX)/share/man/man5
+MANDIR ?= $(PREFIX)/share/man
+MAN5DIR ?= $(MANDIR)/man5
all:
@@ -9,5 +11,11 @@ clean:
install: all
mkdir -p $(DESTDIR)$(MAN5DIR)
install -m 644 man5/*.5 $(DESTDIR)$(MAN5DIR)
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang}/man5 ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man5 ; \
+ install -m 644 $${lang}/man5/*.5 $(DESTDIR)$(MANDIR)/$${lang}/man5 ; \
+ fi ; \
+ done
relabel:
diff --git a/policycoreutils/man/ru/man5/selinux_config.5 b/policycoreutils/man/ru/man5/selinux_config.5
new file mode 100644
index 00000000..93dcc582
--- /dev/null
+++ b/policycoreutils/man/ru/man5/selinux_config.5
@@ -0,0 +1,145 @@
+.TH "selinux_config" "5" "18 ноября 2011" "Security Enhanced Linux" "Файл конфигурации SELinux"
+
+.SH "ИМЯ"
+config \- файл конфигурации подсистемы SELinux.
+
+.SH "ОПИСАНИЕ"
+Файл \fIconfig\fR SELinux управляет состоянием SELinux, определяя:
+.RS
+.IP "1." 4
+Состояние применения политики \- \fIenforcing\fR (принудительный режим), \fIpermissive\fR (разрешительный режим) или \fIdisabled\fR (отключена).
+.IP "2." 4
+Имя политики или тип, формирующий путь к политике, которую следует загрузить, и её вспомогательным файлам конфигурации.
+.IP "3." 4
+Способ управления локальными пользователями и логическими переключателями после загрузки политики (обратите внимание, что эта возможность использовалась в предыдущих версиях SELinux, сейчас она устарела).
+.IP "4." 4
+Поведение поддерживающих SELinux приложений при отсутствии настроенных действительных пользователей SELinux.
+.IP "5." 4
+Следует ли повторно проставлять метки в системе.
+.RE
+
+Описание записей, которые управляют этими возможностями, приводится в разделе \fBФОРМАТ ФАЙЛА\fR.
+.sp
+Полный путь к файлу конфигурации SELinux: \fI/etc/selinux/config\fR.
+.sp
+Если файл \fIconfig\fR отсутствует или повреждён, политика SELinux не будет загружена (то есть SELinux будет отключён).
+.sp
+Команда \fBsestatus\fR (8) и функция libselinux \fBselinux_path\fR (3) возвращают расположение файла \fIconfig\fR.
+
+.SH "ФОРМАТ ФАЙЛА"
+Файл \fIconfig\fR поддерживает следующие параметры:
+.sp
+.RS
+\fBSELINUX = \fIenforcing\fR | \fIpermissive\fR | \fIdisabled\fR
+.br
+\fBSELINUXTYPE = \fIpolicy_name\fR
+.br
+\fBSETLOCALDEFS = \fI0\fR | \fI1\fR
+.br
+\fBREQUIREUSERS = \fI0\fR | \fI1\fR
+.br
+\fBAUTORELABEL = \fI0\fR | \fI1\fR
+.RE
+.sp
+Где:
+.br
+.B SELINUX
+.RS
+Эта запись может содержать одно из трёх значений:
+.RS
+.IP \fIenforcing\fR 4
+Политика безопасности SELinux применяется.
+.IP \fIpermissive\fR 4
+Политика безопасности SELinux не применяется, но ведётся журналирование предупреждений (то есть действиям разрешено продолжать выполняться).
+.IP \fIdisabled\fR
+SELinux отключён, политика не загружена.
+.RE
+.sp
+Значение записи можно узнать с помощью команды \fBsestatus\fR(8) или \fBselinux_getenforcemode\fR(3).
+.RE
+.sp
+.B SELINUXTYPE
+.RS
+Запись \fIpolicy_name\fR используется для идентификации типа политики и становится именем каталога, в котором располагаются политика и её файлы конфигурации.
+.sp
+Значение записи можно узнать с помощью команды \fBsestatus\fR(8) или \fBselinux_getpolicytype\fR(3).
+.sp
+\fIpolicy_name\fR относится к пути, который определён внутри подсистемы SELinux и может быть получен с помощью \fBselinux_path\fR(3). Пример записи, полученной с помощью \fBselinux_path\fR(3):
+.br
+.RS
+.I /etc/selinux/
+.RE
+.sp
+Затем к концу этой записи добавляется \fIpolicy_name\fR, и она становится корневым расположением политики, которое может быть получено с помощью \fBselinux_policy_root_path\fR(3). Пример полученной записи:
+.RS
+.I /etc/selinux/targeted
+.RE
+.sp
+Фактическая двоичная политика расположена относительно этого каталога и также имеет предварительно выделенное имя политики. Эту информацию можно получить с помощью \fBselinux_binary_policy_path\fR(3). Пример записи, полученной с помощью \fBselinux_binary_policy_path\fR(3):
+.br
+.RS
+.I /etc/selinux/targeted/policy/policy
+.RE
+.sp
+По соглашению к концу имени двоичной политики добавляется версия политики SELinux, которую она поддерживает. Максимальную версию политики, поддерживаемую ядром, можно определить с помощью команды \fBsestatus\fR(8) или \fBsecurity_policyvers\fR(3). Пример файла двоичной политики с версией:
+.br
+.RS
+.I /etc/selinux/targeted/policy/policy.24
+.RE
+.RE
+.sp
+.B SETLOCALDEFS
+.RS
+Эта запись устарела. Следует её удалить или задать для неё значение \fI0\fR.
+.sp
+Если задано значение \fI1\fR, \fBselinux_mkload_policy\fR(3) выполнит чтение логических переключателей (см. \fBbooleans\fR(5)) и пользователей (см. \fBlocal.users\fR(5)) в локальной настройке.
+.RE
+.sp
+.B REQUIRESEUSERS
+.RS
+Эта необязательная запись позволяет сделать попытку входа неудачной, если в файле
+.BR seusers "(5) нет соответствующей записи или записи по умолчанию или отсутствует сам файл " seusers ". "
+.sp
+Она проверяется функцией \fBgetseuserbyname\fR(3), которая вызывается поддерживающими SELinux приложениями для входа, например, \fBPAM\fR(8).
+.sp
+Если задано значение \fI0\fR или отсутствует запись:
+.RS
+.BR getseuserbyname "(3) вернёт имя пользователя GNU / Linux в качестве пользователя SELinux."
+.RE
+.sp
+Если задано значение \fI1\fR:
+.RS
+.BR getseuserbyname "(3) не удастся выполнить."
+.RE
+.sp
+Описание работы \fBgetseuserbyname\fR(3) содержится на соответствующей man-странице. Формат файла \fIseusers\fR показан в \fBseusers\fR(5).
+.sp
+.RE
+.sp
+.B AUTORELABEL
+.RS
+Эта необязательная запись позволяет повторно проставлять метки в файловой системе.
+.sp
+Если задано значение \fI0\fR и в корневом каталоге имеется файл с именем \fI.autorelabel\fR, при перезагрузке загрузчик перейдёт в оболочку, запрашивающую вход в качестве пользователя root. Затем администратор сможет вручную проставить метки в файловой системе.
+.sp
+Если задано значение \fI1\fR или запись отсутствует (состояние по умолчанию) и в корневом каталоге имеется файл \fI.autorelabel\fR, в файловой системе с помощью \fBfixfiles \-F restore\fR будут автоматически повторно проставлены метки.
+.sp
+В обоих случаях файл \fI/.autorelabel\fR будет удалён, чтобы предотвратить последующее повторное проставление меток.
+.RE
+.sp
+
+.SH "ПРИМЕР"
+В этом примере показано минимальное содержимое файла \fIconfig\fR, которое обеспечит запуск SELinux в системе в принудительном режиме, со значением \fIpolicy_name\fR 'targeted':
+.sp
+.RS
+SELINUX = enforcing
+.br
+SELINUXTYPE = targeted
+.RE
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux "(8), " sestatus "(8), " selinux_path "(3), " selinux_policy_root_path "(3), " selinux_binary_policy_path "(3), " getseuserbyname "(3), " PAM "(8), " fixfiles "(8), " selinux_mkload_policy "(3), " selinux_getpolicytype "(3), " security_policyvers "(3), " selinux_getenforcemode "(3), " seusers "(5), " booleans "(5), " local.users "(5) "
+
+
+.SH АВТОРЫ
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/policycoreutils/newrole/Makefile b/policycoreutils/newrole/Makefile
index a1bfe1a6..73ebd413 100644
--- a/policycoreutils/newrole/Makefile
+++ b/policycoreutils/newrole/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -66,6 +67,12 @@ install: all
test -d $(DESTDIR)$(MANDIR)/man1 || install -m 755 -d $(DESTDIR)$(MANDIR)/man1
install -m $(MODE) newrole $(DESTDIR)$(BINDIR)
install -m 644 newrole.1 $(DESTDIR)$(MANDIR)/man1/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ test -d $(DESTDIR)$(MANDIR)/$${lang}/man1 || install -m 755 -d $(DESTDIR)$(MANDIR)/$${lang}/man1 ; \
+ install -m 644 $${lang}/*.1 $(DESTDIR)$(MANDIR)/$${lang}/man1/ ; \
+ fi ; \
+ done
ifeq ($(PAMH), y)
test -d $(DESTDIR)$(ETCDIR)/pam.d || install -m 755 -d $(DESTDIR)$(ETCDIR)/pam.d
ifeq ($(LSPP_PRIV),y)
diff --git a/policycoreutils/newrole/ru/newrole.1 b/policycoreutils/newrole/ru/newrole.1
new file mode 100644
index 00000000..c4078789
--- /dev/null
+++ b/policycoreutils/newrole/ru/newrole.1
@@ -0,0 +1,109 @@
+.TH NEWROLE "1" "Октябрь 2000" "Security Enhanced Linux" NSA
+.SH ИМЯ
+newrole \- запустить оболочку с новой ролью SELinux
+.SH ОБЗОР
+.B newrole
+[\fB-r\fR|\fB--role\fR]
+\fIROLE\fR
+[\fB-t\fR|\fB--type\fR]
+\fITYPE\fR
+[\fB-l\fR|\fB--level\fR]
+[\fB-p\fR|\fB--preserve-environment\fR]
+\fILEVEL\fR [-- [\fIARGS\fR]...]
+.SH ОПИСАНИЕ
+.PP
+Запустить новую оболочку в новом контексте. Новый контекст берётся из старого контекста, в котором изначально исполнялась
+.B newrole.
+Если указан параметр
+.B -r
+или
+.B --role
+, новый контекст будет иметь роль, заданную
+\fIROLE\fR.
+Если указан параметр
+.B -t
+или
+.B --type
+, новый контекст будет иметь тип (домен), заданный
+\fITYPE\fR.
+Если указана роль, но не указан тип, тип по умолчанию берётся из указанной роли. Если указан параметр
+.B -l
+или
+.B --level
+, новый контекст будет иметь уровень конфиденциальности, заданный
+\fILEVEL\fR.
+Если
+\fILEVEL\fR
+является диапазоном, новый контекст будет иметь уровень конфиденциальности и допуск, заданные этим диапазоном. Если указан параметр
+.B -p
+или
+.B --preserve-environment
+, оболочка с новым контекстом SELinux сохранит переменные среды, в ином случае будет создана новая минимальная среда.
+.PP
+Дополнительные аргументы
+.I ARGS
+могут присутствовать после параметра --,
+в этом случае они передаются в новую оболочку.
+В частности, при использовании аргумента \-\- \-c следующий аргумент будет обрабатываться как команда большинством интерпретаторов команд.
+.PP
+Если для newrole указан аргумент команды и имя команды найдено в /etc/selinux/newrole_pam.conf, будет использована служба pam, указанная в этом файле для команды, а не обычная конфигурация pam для newrole. Это позволяет устанавливать конфигурацию pam для каждой команды при вызове через newrole, например, чтобы пропустить этап интерактивной повторной аутентификации.
+.PP
+Новой оболочкой будет оболочка, указанная в записи пользователя в файле
+.I /etc/passwd.
+.PP
+.B -V
+или
+.B --version
+показывает текущую версию newrole
+.PP
+.SH ПРИМЕР
+.br
+Смена роли:
+ # id \-Z
+ staff_u:staff_r:staff_t:SystemLow-SystemHigh
+ # newrole \-r sysadm_r
+ # id \-Z
+ staff_u:sysadm_r:sysadm_t:SystemLow-SystemHigh
+
+Смена только уровня конфиденциальности:
+ # id \-Z
+ staff_u:sysadm_r:sysadm_t:Unclassified-SystemHigh
+ # newrole \-l Secret
+ # id \-Z
+ staff_u:sysadm_r:sysadm_t:Secret-SystemHigh
+
+.PP
+Смена уровня конфиденциальности и допуска:
+ # id \-Z
+ staff_u:sysadm_r:sysadm_t:Unclassified-SystemHigh
+ # newrole \-l Secret-Secret
+ # id \-Z
+ staff_u:sysadm_r:sysadm_t:Secret
+
+.PP
+Запуск программы с указанной ролью или уровнем:
+ # newrole \-r sysadm_r \-\- \-c "/path/to/app arg1 arg2..."
+ # newrole \-l Secret \-\- \-c "/path/to/app arg1 arg2..."
+
+.SH ФАЙЛЫ
+/etc/passwd - информация об учётных записях пользователей
+.br
+/etc/shadow - зашифрованные пароли и информация об устаревании паролей
+.br
+/etc/selinux/<policy>/contexts/default_type - типы по умолчанию для ролей
+.br
+/etc/selinux/<policy>/contexts/securetty_types - типы securetty для изменений уровня
+.br
+/etc/selinux/newrole_pam.conf - необязательное сопоставление команд с отдельными службами pam
+.br
+.SH СМОТРИТЕ ТАКЖЕ
+.BR runcon (1)
+.SH АВТОРЫ
+.nf
+Anthony Colatrella
+Tim Fraser
+Steve Grubb <sgrubb@redhat.com>
+Darrel Goeddel <DGoeddel@trustedcs.com>
+Michael Thompson <mcthomps@us.ibm.com>
+Dan Walsh <dwalsh@redhat.com>
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>
diff --git a/policycoreutils/run_init/Makefile b/policycoreutils/run_init/Makefile
index 1d5de572..e86364a4 100644
--- a/policycoreutils/run_init/Makefile
+++ b/policycoreutils/run_init/Makefile
@@ -1,5 +1,6 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SBINDIR ?= $(PREFIX)/sbin
MANDIR ?= $(PREFIX)/share/man
@@ -38,6 +39,12 @@ install: all
install -m 755 open_init_pty $(DESTDIR)$(SBINDIR)
install -m 644 run_init.8 $(DESTDIR)$(MANDIR)/man8/
install -m 644 open_init_pty.8 $(DESTDIR)$(MANDIR)/man8/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ test -d $(DESTDIR)$(MANDIR)/$${lang}/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
ifeq ($(PAMH), y)
install -m 644 run_init.pamd $(DESTDIR)$(ETCDIR)/pam.d/run_init
endif
diff --git a/policycoreutils/run_init/ru/open_init_pty.8 b/policycoreutils/run_init/ru/open_init_pty.8
new file mode 100644
index 00000000..bac4fd94
--- /dev/null
+++ b/policycoreutils/run_init/ru/open_init_pty.8
@@ -0,0 +1,42 @@
+.\" Hey, Emacs! This is an -*- nroff -*- source file.
+.\" Copyright (c) 2005 Manoj Srivastava <srivasta@debian.org>
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.\"
+.TH OPEN_INIT_PTY "8" "Январь 2005" "Security Enhanced Linux" NSA
+.SH ИМЯ
+open_init_pty \- запустить программу под псевдотерминалом
+.SH ОБЗОР
+.B open_init_pty
+\fISCRIPT\fR [[\fIARGS\fR]...]
+.br
+.SH ОПИСАНИЕ
+.PP
+Запуск программы под псевдотерминалом. Эта возможность используется
+.B run_init
+для фактического запуска программы после настройки подходящего контекста. Эта программа получает новый псевдотерминал, ответвляет дочерний процесс, который привязывается к псевдотерминалу, а затем соединяет физический терминал, на котором она была вызвана, с псевдотерминалом, передавая ввод клавиатуры в дочерний процесс и передавая вывод дочернего процесса физическому терминалу.
+.PP
+Она надлежащим образом настраивает псевдотерминал на основе атрибутов физического терминала, а затем устанавливает терминал пользователя в режим RAW (при выходе этот режим сбрасывается).
+.SH АВТОРЫ
+Эта страница руководства была написана Manoj Srivastava <srivasta@debian.org>
+для системы Debian GNU/Linux.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/policycoreutils/run_init/ru/run_init.8 b/policycoreutils/run_init/ru/run_init.8
new file mode 100644
index 00000000..174d9c53
--- /dev/null
+++ b/policycoreutils/run_init/ru/run_init.8
@@ -0,0 +1,26 @@
+.TH RUN_INIT "8" "Май 2003" "Security Enhanced Linux" NSA
+.SH ИМЯ
+run_init \- запустить сценарий init в правильном контексте SELinux
+.SH ОБЗОР
+.B run_init
+\fISCRIPT\fR [[\fIARGS\fR]...]
+.br
+.SH ОПИСАНИЕ
+.PP
+Запуск сценария init в правильном контексте, который указан в
+/etc/selinux/POLICYTYPE/contexts/initrc_context.
+Обычно эта возможность используется интерактивно, так как она требует аутентификации shadow или пользователя PAM (в зависимости от параметров при компиляции). PAM можно настроить таким образом, что интерактивный ввод не потребуется. Обратитесь к документации по PAM.
+.SH ФАЙЛЫ
+/etc/passwd - информация об учётных записях пользователей
+.br
+/etc/shadow - зашифрованные пароли и информация об устаревании паролей
+.br
+/etc/selinux/POLICYTYPE/contexts/initrc_context - содержит контекст для запуска сценариев init
+.SH СМОТРИТЕ ТАКЖЕ
+.BR newrole (1),
+.BR runcon (1)
+.SH АВТОРЫ
+.nf
+Wayne Salamon (wsalamon@tislabs.com)
+Dan Walsh (dwalsh@redhat.com)
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>
diff --git a/policycoreutils/scripts/Makefile b/policycoreutils/scripts/Makefile
index afe5dc49..75e75b80 100644
--- a/policycoreutils/scripts/Makefile
+++ b/policycoreutils/scripts/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SBINDIR ?= $(PREFIX)/sbin
MANDIR ?= $(PREFIX)/share/man
@@ -11,6 +12,12 @@ install: all
install -m 755 fixfiles $(DESTDIR)$(SBINDIR)
-mkdir -p $(DESTDIR)$(MANDIR)/man8
install -m 644 fixfiles.8 $(DESTDIR)$(MANDIR)/man8/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
clean:
diff --git a/policycoreutils/scripts/ru/fixfiles.8 b/policycoreutils/scripts/ru/fixfiles.8
new file mode 100644
index 00000000..13829441
--- /dev/null
+++ b/policycoreutils/scripts/ru/fixfiles.8
@@ -0,0 +1,94 @@
+.TH "fixfiles" "8" "2002031409" "" ""
+.SH "ИМЯ"
+fixfiles \- исправить SELinux-контексты безопасности файлов.
+
+.SH "ОБЗОР"
+.na
+
+.B fixfiles
+.I [\-v] [\-F] [\-f] relabel
+
+.B fixfiles
+.I [\-v] [\-F] { check | restore | verify } dir/file ...
+
+.B fixfiles
+.I [\-v] [\-F] [\-B | \-N time ] { check | restore | verify }
+
+.B fixfiles
+.I [\-v] [\-F] \-R rpmpackagename[,rpmpackagename...] { check | restore | verify }
+
+.B fixfiles
+.I [\-v] [\-F] \-C PREVIOUS_FILECONTEXT { check | restore | verify }
+
+.B fixfiles
+.I [-F] [-B] onboot
+
+.ad
+
+.SH "ОПИСАНИЕ"
+На этой странице руководства приводится описание сценария
+.BR fixfiles.
+.P
+Этот сценарий в основном используется для исправления базы данных контекстов безопасности (расширенных атрибутов) в файловых системах.
+.P
+Его также можно запустить в любой момент, чтобы повторно проставить метки при добавлении поддержки новой политики или просто проверить, соответствуют ли контексты файлов ожиданиям пользователя. По умолчанию он повторно проставит метки во всех смонтированных файловых системах ext2, ext3, xfs и
+jfs, даже если у них нет параметра монтирования с контекстом безопасности. Флаг \-R позволяет использовать rpm-пакеты в качестве альтернативы.
+Файл etc/selinux/fixfiles_exclude_dirs может содержать список каталогов, исключённых из повторного проставления меток.
+.P
+.B fixfiles onboot
+При следующей перезагрузке компьютера метки будет проставлены повторно.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.B \-B
+При использовании с onboot сценарий fixfiles запишет текущую дату в файл /.autorelabel, чтобы потом её можно было использовать для ускорения проставления меток. При использовании с restore будут затронуты только те файлы, которые были изменены сегодня.
+.TP
+.B \-F
+Принудительно сбросить контекст, чтобы он соответствовал file_context для настраиваемых файлов.
+
+.TP
+.B \-f
+Очистить каталог /tmp, не запрашивая подтверждение удаления у пользователя.
+
+.TP
+.B \-R rpmpackagename[,rpmpackagename...]
+Использовать базу данных rpm, чтобы найти все файлы в указанных пакетах и восстановить их контексты.
+.TP
+.B \-C PREVIOUS_FILECONTEXT
+Выполнить diff, чтобы сравнить файл PREVIOUS_FILECONTEXT с текущим установленным файлом, и восстановить контекст всех затронутых файлов.
+
+.TP
+.B \-N time
+Применять изменения только к файлам, созданным после указанной даты. Дата должна быть указана в формате "ГГГГ\-ММ\-ДД ЧЧ:ММ". Поле даты будет передано в команду find \-\-newermt.
+
+.TP
+.B -v
+Изменить уровень детализации с показа хода выполнения на показ подробных сведений. (Запуск restorecon с \-v вместо \-p.)
+
+.SH "АРГУМЕНТЫ"
+Одно из:
+.TP
+.B check
+Вывести все некорректные метки контекста файлов, показывая старый и новый контекст, но не изменяя его.
+.TP
+.B restore
+Изменить все некорректные метки контекста файлов.
+.TP
+.B relabel
+Запросить у пользователя подтверждение удаления содержимого каталога /tmp и затем изменить все некорректные метки контекста файлов, чтобы привести их в соответствие с файлом file_contexts.
+.TP
+.B verify
+Вывести список файлов с некорректными метками контекста, но не изменять их.
+.TP
+.B [[dir/file] ... ]
+Список файлов или каталогов, для которых следует проверить контекст.
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR setfiles (8),
+.BR restorecon (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Richard Hally <rhally@mindspring.com>.
+Сценарий был написан Dan Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
+
diff --git a/policycoreutils/secon/Makefile b/policycoreutils/secon/Makefile
index db8ee421..576a6203 100644
--- a/policycoreutils/secon/Makefile
+++ b/policycoreutils/secon/Makefile
@@ -1,4 +1,5 @@
# secon tool - command-line context
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -20,6 +21,12 @@ install: all
test -d $(DESTDIR)$(MANDIR)/man1 || install -m 755 -d $(DESTDIR)$(MANDIR)/man1
install -m 644 secon.1 $(DESTDIR)$(MANDIR)/man1
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ test -d $(DESTDIR)$(MANDIR)/$${lang}/man1 || install -m 755 -d $(DESTDIR)$(MANDIR)/$${lang}/man1 ; \
+ install -m 644 $${lang}/*.1 $(DESTDIR)$(MANDIR)/$${lang}/man1/ ; \
+ fi ; \
+ done
relabel:
/sbin/restorecon $(DESTDIR)$(BINDIR)/secon
diff --git a/policycoreutils/secon/ru/secon.1 b/policycoreutils/secon/ru/secon.1
new file mode 100644
index 00000000..acbc14fb
--- /dev/null
+++ b/policycoreutils/secon/ru/secon.1
@@ -0,0 +1,120 @@
+.TH SECON "1" "Апрель 2006" "Security Enhanced Linux" NSA
+.SH ИМЯ
+secon \- показать контекст SELinux для файла, программы или ввода пользователя.
+.SH ОБЗОР
+.B secon
+[\fB-hVurtscmPRfLp\fR]
+[\fICONTEXT\fR]
+.br
+[\fB--file\fR]
+\fIFILE\fR
+.br
+[\fB--link\fR]
+\fIFILE\fR
+.br
+[\fB--pid\fR]
+\fIPID\fR
+.SH ОПИСАНИЕ
+.PP
+Просмотр части контекста. Контекст берётся из файла, идентификатора процесса, ввода пользователя или контекста, в котором была изначально запущена команда
+.B secon.
+.TP
+\fB\-V\fR, \fB\-\-version\fR
+показать текущую версию secon
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+показать сведения об использовании secon
+.TP
+\fB\-P\fR, \fB\-\-prompt\fR
+вывести данные в формате, подходящем для запроса
+.TP
+\fB\-C\fR, \fB\-\-color\fR
+вывести данные с назначенными цветовыми кодами ANSI (требуется \-P)
+.TP
+\fB\-u\fR, \fB\-\-user\fR
+показать пользователя контекста безопасности
+.TP
+\fB\-r\fR, \fB\-\-role\fR
+показать роль контекста безопасности
+.TP
+\fB\-t\fR, \fB\-\-type\fR
+показать тип контекста безопасности
+.TP
+\fB\-s\fR, \fB\-\-sensitivity\fR
+показать уровень конфиденциальности контекста безопасности
+.TP
+\fB\-c\fR, \fB\-\-clearance\fR
+показать уровень допуска контекста безопасности
+.TP
+\fB\-m\fR, \fB\-\-mls-range\fR
+показать для контекста безопасности в виде диапазона уровень конфиденциальности и уровень допуска
+.TP
+\fB\-R\fR, \fB\-\-raw\fR
+вывести уровень конфиденциальности и уровень допуска в непреобразованном формате
+.TP
+\fB\-f\fR, \fB\-\-file\fR
+получить контекст из указанного файла FILE
+.TP
+\fB\-L\fR, \fB\-\-link\fR
+получить контекст из указанного файла FILE (не выполнять переход по символическим ссылкам)
+.TP
+\fB\-p\fR, \fB\-\-pid\fR
+получить контекст из указанного идентификатора процесса PID
+.TP
+\fB\-\-pid\-exec\fR
+получить контекст exec из указанного идентификатора процесса PID
+.TP
+\fB\-\-pid\-fs\fR
+получить контекст fscreate из указанного идентификатора процесса PID
+.TP
+\fB\-\-pid\-key\fR
+получить контекст key из указанного идентификатора процесса PID
+.TP
+\fB\-\-current\fR, \fB\-\-self\fR
+получить контекст из текущего процесса
+.TP
+\fB\-\-current\-exec\fR, \fB\-\-self\-exec\fR
+получить контекст exec из текущего процесса
+.TP
+\fB\-\-current\-fs\fR, \fB\-\-self\-fs\fR
+получить контекст fscreate из текущего процесса
+.TP
+\fB\-\-current\-key\fR, \fB\-\-self\-key\fR
+получить контекст key из текущего процесса
+.TP
+\fB\-\-parent\fR
+получить контекст из родителя текущего процесса
+.TP
+\fB\-\-parent\-exec\fR
+получить контекст exec из родителя текущего процесса
+.TP
+\fB\-\-parent\-fs\fR
+получить контекст fscreate из родителя текущего процесса
+.TP
+\fB\-\-parent\-key\fR
+получить контекст key из родителя текущего процесса
+.PP
+Можно предоставить дополнительный аргумент
+.I CONTEXT
+- он будет использоваться, если не заданы параметры, согласно которым
+.B secon
+получает контекст из другого источника.
+Если этим аргументом является
+.I -
+(знак дефиса), контекст будет прочтён из stdin.
+.br
+Если аргумент отсутствует,
+.B secon
+попытается прочитать контекст из stdin, если это не tty; в ином случае
+.B secon
+будет действовать так, как если бы был передан параметр \fB\-\-self\fR.
+.PP
+Если не передан ни один из параметров \fB\-\-user\fR, \fB\-\-role\fR, \fB\-\-type\fR, \fB\-\-level\fR или
+\fB\-\-mls\-range\fR, будут выведены все они.
+.PP
+.SH СМОТРИТЕ ТАКЖЕ
+.BR chcon (1)
+.SH АВТОРЫ
+.nf
+James Antill (james.antill@redhat.com).
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/policycoreutils/semodule/Makefile b/policycoreutils/semodule/Makefile
index 639d3689..73801e48 100644
--- a/policycoreutils/semodule/Makefile
+++ b/policycoreutils/semodule/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SBINDIR ?= $(PREFIX)/sbin
MANDIR = $(PREFIX)/share/man
@@ -21,6 +22,12 @@ install: all
test -d $(DESTDIR)$(MANDIR)/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/man8
install -m 644 semodule.8 $(DESTDIR)$(MANDIR)/man8/
install -m 644 genhomedircon.8 $(DESTDIR)$(MANDIR)/man8/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ test -d $(DESTDIR)$(MANDIR)/$${lang}/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
relabel:
diff --git a/policycoreutils/semodule/ru/genhomedircon.8 b/policycoreutils/semodule/ru/genhomedircon.8
new file mode 100644
index 00000000..dbf27bcc
--- /dev/null
+++ b/policycoreutils/semodule/ru/genhomedircon.8
@@ -0,0 +1,25 @@
+.TH GENHOMEDIRCON "8" "Сентябрь 2011" "Security Enhanced Linux" "SELinux"
+.SH ИМЯ
+genhomedircon \- создать записи конфигурации контекста файлов SELinux для домашних каталогов пользователей
+.SH ОПИСАНИЕ
+.B genhomedircon
+- сценарий, который исполняет
+.B semodule
+для пересборки текущей активной политики SELinux (без её перезагрузки) и создания меток для домашних каталогов пользователей на основе путей к каталогам, возвращённых вызовами функции getpwent().
+
+Последняя возможность будет работать, если для параметра "usepasswd" установлено значение "true" (по умолчанию)
+в /etc/selinux/semanage.conf.
+
+Этот сценарий обычно исполняется
+.B semanage,
+хотя это поведение по умолчанию можно изменить, установив для "disable-genhomedircon" значение "true"
+в /etc/selinux/semanage.conf.
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+semanage.conf(5), semodule(8), semanage(8), getpwent(3), getpwent_r(3)
+
+.SH АВТОРЫ
+Эта страница руководства была написана
+.I Dan Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила
+.I Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/policycoreutils/semodule/ru/semodule.8 b/policycoreutils/semodule/ru/semodule.8
new file mode 100644
index 00000000..26515201
--- /dev/null
+++ b/policycoreutils/semodule/ru/semodule.8
@@ -0,0 +1,133 @@
+.TH SEMODULE "8" "Ноябрь 2005" "Security Enhanced Linux" NSA
+.SH ИМЯ
+semodule \- управление модулями политики SELinux.
+
+.SH ОБЗОР
+.B semodule [option]... MODE...
+.br
+.SH ОПИСАНИЕ
+.PP
+semodule - это утилита, которая используется для управления модулями политики SELinux, включая установку, обновление, вывод списка и удаление модулей. semodule также можно использовать для принудительной пересборки политики из хранилища модулей и/или для принудительной перезагрузки политики без выполнения других транзакций. semodule применяется к пакетам модулей, созданным с помощью semodule_package. По соглашению эти файлы имеют суффикс .pp (пакет политики), хотя это никак не регламентируется.
+
+.SH "MODES"
+.TP
+.B \-R, \-\-reload
+принудительно перезагрузить политику
+.TP
+.B \-B, \-\-build
+принудительно пересобрать политику (также выполнит перезагрузку, если не используется \-n)
+.TP
+.B \-D, \-\-disable_dontaudit
+временно удалить правила dontaudit из политики (изменения отменяются при пересборке политики)
+.TP
+.B \-i,\-\-install=MODULE_PKG
+установить/заменить пакет модуля
+.TP
+.B \-u,\-\-upgrade=MODULE_PKG
+устарел, псевдоним для --install
+.TP
+.B \-b,\-\-base=MODULE_PKG
+устарел, псевдоним для --install
+.TP
+.B \-r,\-\-remove=MODULE_NAME
+удалить существующий модуль с указанным приоритетом (по умолчанию: -X 400)
+.TP
+.B \-l[KIND],\-\-list-modules[=KIND]
+вывести список установленных модулей (отличных от базовых)
+.TP
+.B KIND:
+.TP
+standard
+вывести модули с высшим приоритетом, включённые, небазовые
+.TP
+full
+вывести все модули
+.TP
+.B \-X,\-\-priority=PRIORITY
+установить приоритет для следующих операций (1-999)
+.TP
+.B \-e,\-\-enable=MODULE_NAME
+включить модуль
+.TP
+.B \-d,\-\-disable=MODULE_NAME
+отключить модуль
+.TP
+.B \-E,\-\-extract=MODULE_PKG
+извлечь модуль из хранилища в текущий каталог как файл HLL или CIL.
+По умолчанию модуль извлекается как файл HLL. Имя записываемого модуля - <module-name>.<lang_ext>
+.SH "ПАРАМЕТРЫ"
+.TP
+.B \-s,\-\-store
+имя хранилища, над которым следует выполнить операцию
+.TP
+.B \-n,\-\-noreload,\-N
+не перезагружать политику после фиксации
+.TP
+.B \-h,\-\-help
+вывести справочное сообщение и выйти
+.TP
+.B \-P,\-\-preserve_tunables
+сохранить настраиваемые параметры в политике
+.TP
+.B \-C,\-\-ignore-module-cache
+перекомпилировать модули CIL, собранные из файлов HLL
+.TP
+.B \-p,\-\-path
+использовать альтернативный путь для корневого расположения политики
+.TP
+.B \-S,\-\-store-path
+использовать альтернативный путь для корневого расположения хранилища политики
+.TP
+.B \-v,\-\-verbose
+подробно
+.TP
+.B \-c,\-\-cil
+извлечь модуль как файл CIL. Это влияет только на параметр \-\-extract и модули, перечисленные в \-\-extract после этого параметра.
+.TP
+.B \-H,\-\-hll
+извлечь модуль как файл HLL. Это влияет только на параметр \-\-extract и модули, перечисленные в \-\-extract после этого параметра.
+
+.SH ПРИМЕР
+.nf
+# Установить или заменить базовый пакет политики.
+$ semodule \-b base.pp
+# Установить или заменить небазовый пакет политики.
+$ semodule \-i httpd.pp
+# Установить или заменить все небазовые модули в текущем каталоге.
+# Этот синтаксис можно использовать с -i/u/r/E, но после имён модулей нельзя вводить какие-либо другие параметры.
+$ semodule \-i *.pp
+# Установить или заменить все модули в текущем каталоге.
+$ ls *.pp | grep \-Ev "base.pp|enableaudit.pp" | xargs /usr/sbin/semodule \-b base.pp \-i
+# Вывести список небазовых модулей.
+$ semodule \-l
+# Вывести список всех модулей, включая их приоритет.
+$ semodule \-lfull
+# Удалить модуль с приоритетом 100.
+$ semodule \-X 100 \-r wireshark
+# Включить все сообщения кэша вектора доступа (AVC), для которых SELinux сейчас использует правила "dontaudit".
+$ semodule \-DB
+# Включить правила "dontaudit" обратно.
+$ semodule \-B
+# Отключить модуль (будут отключены все экземпляры данного модуля независимо от их приоритета).
+$ semodule \-d alsa
+# Установить модуль с указанным приоритетом.
+$ semodule \-X 100 \-i alsa.pp
+# Вывести список всех модулей.
+$ semodule \-\-list=full
+# Установить альтернативный путь для корневого расположения политики.
+$ semodule \-B \-p "/tmp"
+# Установить альтернативный путь для корневого расположения хранилища политики.
+$ semodule \-B \-S "/tmp/var/lib/selinux"
+# Записать HLL-версию модуля puppet и CIL-версию модуля wireshark
+# с приоритетом 400 в текущий рабочий каталог
+$ semodule \-X 400 \-\-hll \-E puppet \-\-cil \-E wireshark
+.fi
+
+.SH СМОТРИТЕ ТАКЖЕ
+.BR checkmodule (8),
+.BR semodule_package (8)
+.SH АВТОРЫ
+.nf
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Программа была написана Karl MacMillan <kmacmillan@tresys.com>, Joshua Brindle <jbrindle@tresys.com>, Jason Tang <jtang@tresys.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>
diff --git a/policycoreutils/sestatus/Makefile b/policycoreutils/sestatus/Makefile
index 274ef353..8c4f45f8 100644
--- a/policycoreutils/sestatus/Makefile
+++ b/policycoreutils/sestatus/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SBINDIR ?= $(PREFIX)/sbin
MANDIR = $(PREFIX)/share/man
@@ -19,6 +20,14 @@ install: all
install -m 755 sestatus $(DESTDIR)$(SBINDIR)
install -m 644 sestatus.8 $(DESTDIR)$(MANDIR)/man8
install -m 644 sestatus.conf.5 $(DESTDIR)$(MANDIR)/man5
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ [ -d $(DESTDIR)$(MANDIR)/$${lang}/man5 ] || mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man5 ; \
+ [ -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.5 $(DESTDIR)$(MANDIR)/$${lang}/man5/ ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
-mkdir -p $(DESTDIR)$(ETCDIR)
install -m 644 sestatus.conf $(DESTDIR)$(ETCDIR)
diff --git a/policycoreutils/sestatus/ru/sestatus.8 b/policycoreutils/sestatus/ru/sestatus.8
new file mode 100644
index 00000000..56fcd23e
--- /dev/null
+++ b/policycoreutils/sestatus/ru/sestatus.8
@@ -0,0 +1,79 @@
+.TH "sestatus" "8" "26 ноября 2011" "Security Enhanced Linux" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+sestatus \- утилита для просмотра состояния SELinux
+
+.SH "ОБЗОР"
+.B sestatus
+.I [\-v] [\-b]
+.P
+Эта утилита используется для получения состояния системы, в которой работает SELinux.
+
+.SH "ОПИСАНИЕ"
+Эта страница руководства содержит описание программы
+.BR sestatus.
+.sp
+Эта утилита используется для получения состояния системы, в которой работает SELinux. Она показывает сведения о том, включён или отключён SELinux, расположение ключевых каталогов, а также загруженную политику и её состояние. Пример:
+.RS
+> sestatus
+.br
+SELinux status: enabled
+.br
+SELinuxfs mount: /selinux
+.br
+SELinux root directory: /etc/selinux
+.br
+Loaded policy name: targeted
+.br
+Current mode: permissive
+.br
+Mode from config file: enforcing
+.br
+Policy MLS status: enabled
+.br
+Policy deny_unknown status: allow
+.br
+Memory protection checking: actual (secure)
+.br
+Max kernel policy version: 26
+.RE
+.sp
+\fBsestatus\fR также можно использовать, чтобы просмотреть:
+.RS
+.IP "-" 4
+Контексты безопасности файлов и процессов, перечисленные в файле \fI/etc/sestatus.conf\fR. Описание формата этого файла содержится в \fBsestatus.conf\fR(5).
+.IP "-" 4
+Состояние логических переключателей.
+.RE
+
+.SH "ПАРАМЕТРЫ"
+.B \-v
+.RS
+Показать контексты файлов и процессов, перечисленные в файле \fI/etc/sestatus.conf\fR. Также проверяет, является ли файл символической ссылкой (если является, то также будет показан контекст целевого файла).
+.sp
+Всегда будут показаны следующие контексты:
+.RS
+Контекст текущего процесса
+.br
+Контекст процесса init
+.br
+Контекст файла управляющего терминала
+.RE
+.RE
+.sp
+.B \-b
+.RS
+Показать текущее состояние логических переключателей.
+.RE
+
+.SH "ФАЙЛЫ"
+.I /etc/sestatus.conf
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux "(8), " sestatus.conf "(5)
+
+.SH "АВТОРЫ"
+Эта страница руководства была написана Daniel Walsh <dwalsh@redhat.com>.
+.br
+Программа была написана Chris PeBenito <pebenito@gentoo.org>.
+.br
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/policycoreutils/sestatus/ru/sestatus.conf.5 b/policycoreutils/sestatus/ru/sestatus.conf.5
new file mode 100644
index 00000000..60ebeab9
--- /dev/null
+++ b/policycoreutils/sestatus/ru/sestatus.conf.5
@@ -0,0 +1,97 @@
+.TH "sestatus.conf" "5" "26 ноября 2011" "Security Enhanced Linux" "Файл конфигурации sestatus"
+
+.SH "ИМЯ"
+sestatus.conf \- файл конфигурации \fBsestatus\fR(8).
+
+.SH "ОПИСАНИЕ"
+Файл \fIsestatus.conf\fR используется командой \fBsestatus\fR(8) с параметром \fB\-v\fR, чтобы определить, какие контексты безопасности файлов и процессов следует показать.
+.sp
+Полный путь к файлу конфигурации:
+.RS
+\fI/etc/sestatus.conf\fR
+.RE
+.RE
+.sp
+Файл состоит из двух необязательных разделов (описание содержится в разделе \fBФОРМАТ ФАЙЛА\fR). Независимо от того, существуют ли эти разделы, всегда показывается следующее:
+.RS
+Контекст текущего процесса
+.br
+Контекст процесса init
+.br
+Контекст файла управляющего терминала
+.RE
+
+.SH "ФОРМАТ ФАЙЛА"
+Формат состоит из двух необязательных разделов (пример далее):
+.RS
+.B [files]
+.br
+.I file_name
+.br
+.I [file_name]
+.br
+.I ...
+.sp
+.B [process]
+.br
+.I executable_file_name
+.br
+.I [executable_file_name]
+.br
+.I ...
+.RE
+.sp
+Где:
+.RS
+.B [files]
+.RS
+Начало блока списка файлов.
+.RE
+.I file_name
+.RS
+Одно или несколько полных имён файлов (каждое на новой строке), контекст которых будет показан. Если файл не существует, он игнорируется. Если файл является символической ссылкой, \fBsestatus \-v\fR также покажет контекст целевого файла.
+.RE
+.sp
+.B [process]
+.RS
+Начало блока списка процессов.
+.RE
+.I executable_file_name
+.RS
+Одно или несколько полных имён исполняемых файлов; будет показан контекст соответствующих активных процессов. Каждая запись находится на новой строке.
+.RE
+.RE
+
+.SH "ПРИМЕР"
+# /etc/sestatus.conf
+.br
+[files]
+.br
+/etc/passwd
+.br
+/etc/shadow
+.br
+/bin/bash
+.br
+/bin/login
+.br
+/lib/libc.so.6
+.br
+/lib/ld-linux.so.2
+.br
+/lib/ld.so.1
+.sp
+[process]
+.br
+/sbin/mingetty
+.br
+/sbin/agetty
+.br
+/usr/sbin/sshd
+.RE
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux "(8), " sestatus "(8) "
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>
diff --git a/policycoreutils/setfiles/Makefile b/policycoreutils/setfiles/Makefile
index e9432768..bc5a8db7 100644
--- a/policycoreutils/setfiles/Makefile
+++ b/policycoreutils/setfiles/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SBINDIR ?= /sbin
MANDIR = $(PREFIX)/share/man
@@ -36,6 +37,12 @@ install: all
install -m 644 setfiles.8.man $(DESTDIR)$(MANDIR)/man8/setfiles.8
install -m 644 restorecon.8 $(DESTDIR)$(MANDIR)/man8/restorecon.8
install -m 644 restorecon_xattr.8 $(DESTDIR)$(MANDIR)/man8/restorecon_xattr.8
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ [ -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
clean:
rm -f setfiles restorecon restorecon_xattr *.o setfiles.8.man
diff --git a/policycoreutils/setfiles/ru/restorecon.8 b/policycoreutils/setfiles/ru/restorecon.8
new file mode 100644
index 00000000..9be3a63d
--- /dev/null
+++ b/policycoreutils/setfiles/ru/restorecon.8
@@ -0,0 +1,193 @@
+.TH "restorecon" "8" "10 июня 2016" "" "Команда пользователя SELinux"
+.SH "ИМЯ"
+restorecon \- восстановить SELinux-контексты безопасности файлов по умолчанию.
+
+.SH "ОБЗОР"
+.B restorecon
+.RB [ \-r | \-R ]
+.RB [ \-m ]
+.RB [ \-n ]
+.RB [ \-p ]
+.RB [ \-v ]
+.RB [ \-i ]
+.RB [ \-F ]
+.RB [ \-W ]
+.RB [ \-I | \-D ]
+.RB [ \-e
+.IR directory ]
+.IR pathname \ ...
+.P
+.B restorecon
+.RB [ \-f
+.IR infilename ]
+.RB [ \-e
+.IR directory ]
+.RB [ \-r | \-R ]
+.RB [ \-m ]
+.RB [ \-n ]
+.RB [ \-p ]
+.RB [ \-v ]
+.RB [ \-i ]
+.RB [ \-F ]
+.RB [ \-W ]
+.RB [ \-I | \-D ]
+
+.SH "ОПИСАНИЕ"
+Эта страница руководства содержит описание программы
+.BR restorecon.
+.P
+Эта программа используется в основном для установки контекста безопасности (расширенных атрибутов) для одного или нескольких файлов.
+.P
+Также можно запустить её в любой момент, чтобы исправить некорректные метки, добавить поддержку недавно установленной политики или, используя параметр
+.B \-n
+, пассивно проверить, соответствуют ли установленные контексты файлов тем контекстам, которые указаны в активной политике (поведение по умолчанию).
+.P
+Если объект файла не имеет контекста,
+.B restorecon
+запишет контекст по умолчанию в расширенные атрибуты объекта файла. Если объект файла имеет контекст,
+.B restorecon
+изменит только ту часть контекста безопасности, которая относится к типу.
+Параметр
+.B \-F
+позволяет принудительно заменить контекст целиком.
+.P
+Если у файла имеется метка настраиваемого типа SELinux
+.BR customizable
+(список настраиваемых типов: /etc/selinux/{SELINUXTYPE}/contexts/customizable_types), restorecon
+выполнит сброс метки только при условии использования параметра \-F.
+.P
+Эта программа аналогична
+.BR setfiles,
+но действует немного другим образом в зависимости от значения argv[0].
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.BI \-e \ directory
+исключить каталог (чтобы исключить более одного каталога, этот параметр необходимо использовать соответствующее количество раз; необходимо указывать полный путь).
+.TP
+.BI \-f \ infilename
+.I infilename
+содержит список файлов для обработки. Используйте
+.RB \*(lq \- \*(rq
+для
+.BR stdin.
+.TP
+.B \-F
+принудительно сбросить контекст, чтобы обеспечить соответствие file_context для настраиваемых файлов и соответствие контексту файлов по умолчанию для остальных файлов (меняются части контекста, связанные с пользователем, ролью, диапазоном, а также тип).
+.TP
+.B \-h, \-?
+показать сведения об использовании и выйти.
+.TP
+.B \-i
+игнорировать файлы, которые не существуют.
+.TP
+.B \-I
+игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA1 соответствует дайджесту SHA1 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе
+.B ПРИМЕЧАНИЯ.
+.TP
+.B \-D
+установить или обновить дайджесты SHA1 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута
+.IR security.restorecon_last.
+.TP
+.B \-m
+не выполнять чтение
+.B /proc/mounts
+для получения списка монтирований без seclabel, которые следует исключить из проверок с повторным проставлением меток. Установка этого параметра полезна при наличии смонтированной файловой системы без seclabel, в которой в расположенном ниже каталоге смонтирована файловая система с seclabel.
+.TP
+.B \-n
+не изменять метки файлов (пассивная проверка). Чтобы просмотреть файлы, метки которых были бы изменены, добавьте
+.BR \-v.
+.TP
+.BI \-o \ outfilename
+этот параметр устарел и больше не поддерживается.
+.TP
+.B \-p
+показывать ход выполнения, выводя количество обработанных файлов (единица измерения - блок размером 1 КБ (то есть 1000 файлов)). Если выполняется повторное проставление меток во всей ОС, будет показан примерный процент выполнения. Обратите внимание, что параметры
+.B \-p
+.B \-v
+являются взаимоисключающими.
+.TP
+.B \-R, \-r
+рекурсивно изменить метки файлов для файлов и каталогов (спускаться по каталогам).
+.br
+.TP
+.B \-v
+показать изменения в метках файлов. Использование нескольких параметров -v увеличивает уровень детализации. Обратите внимание, что параметры
+.B \-v
+.B \-p
+являются взаимоисключающими.
+.TP
+.B \-W
+показать предупреждения о записях, для которых не обнаружены соответствующие файлы, с помощью вывода результатов
+.BR selabel_stats (3).
+.TP
+.B \-0
+предполагается, что разделителем для элементов ввода является символ нуля
+(вместо пробела). Символы кавычек и обратной косой черты также считаются обычными символами, которые могут формировать допустимый ввод.
+Этот параметр также отключает строку конца файла (end-of-file string), она обрабатывается, как любой другой аргумент. Это полезно, если элементы ввода содержат пробелы, кавычки или обратные косые черты. Параметр
+.B \-print0
+GNU
+.B find
+производит ввод, подходящий для этого режима.
+.TP
+.SH "АРГУМЕНТЫ"
+.IR pathname \ ...
+Путь к файлу (файлам), для которых следует повторно проставить метки.
+.SH "ПРИМЕЧАНИЯ"
+.IP "1." 4
+.B restorecon
+не переходит по символическим ссылкам и по умолчанию не работает с каталогами рекурсивно.
+.IP "2." 4
+Если в
+.I pathname
+указан корневой каталог, установлен параметр
+.B \-vR
+или
+.B \-vr,
+а также запущена система аудита, в журнал с меткой сообщения
+.BR FS_RELABEL
+автоматически записывается событие аудита, которое содержит сообщение о том, что произошло "массовое повторное проставление меток".
+.IP "3." 4
+Для повышения производительности при рекурсивном повторном проставлении меток в файловых системах (то есть тогда, когда установлен параметр
+.B \-R
+или
+.B \-r
+),
+параметр
+.B \-D
+команды
+.B restorecon
+обеспечит сохранение дайджеста SHA1 файлов спецификации по умолчанию в расширенном атрибуте с именем
+.IR security.restorecon_last
+для каталогов, указанных в соответствующих путях
+.IR pathname \ ...
+, после успешного завершения повторного проставления меток. Этот дайджест будет проверен, если команда
+.B restorecon
+.B \-D
+будет перезапущена с теми же параметрами
+.I pathname.
+Подробные сведения доступны в
+.BR selinux_restorecon (3).
+.sp
+Параметр
+.B \-I
+позволяет игнорировать дайджест SHA1 из каждого каталога, указанного в
+.IR pathname \ ...
+, и, при условии, что НЕ установлен параметр
+.B \-n
+и установлен рекурсивный режим, для файлов будут необходимым образом повторно проставлены метки, а дайджест затем будет обновлён (если не будет ошибок).
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR setfiles (8),
+.BR fixfiles (8),
+.BR load_policy (8),
+.BR checkpolicy (8),
+.BR customizable_types (5)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Dan Walsh <dwalsh@redhat.com>.
+Некоторая часть содержимого этой man-страницы была взята из man-страницы setfiles, написанной Russell Coker <russell@coker.com.au>.
+Программа была написана Dan Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/policycoreutils/setfiles/ru/restorecon_xattr.8 b/policycoreutils/setfiles/ru/restorecon_xattr.8
new file mode 100644
index 00000000..41c441b8
--- /dev/null
+++ b/policycoreutils/setfiles/ru/restorecon_xattr.8
@@ -0,0 +1,115 @@
+.TH "restorecon_xattr" "8" "24 сентября 2016" "" "Команда пользователя SELinux"
+.SH "ИМЯ"
+restorecon_xattr \- управление записями расширенных атрибутов
+.I security.restorecon_last,
+добавленными с помощью
+.BR setfiles (8)
+или
+.BR restorecon (8).
+
+.SH "ОБЗОР"
+.B restorecon_xattr
+.RB [ \-d ]
+.RB [ \-D ]
+.RB [ \-m ]
+.RB [ \-n ]
+.RB [ \-r ]
+.RB [ \-v ]
+.RB [ \-e
+.IR directory ]
+.RB [ \-f
+.IR specfile ]
+.I pathname
+
+.SH "ОПИСАНИЕ"
+.B restorecon_xattr
+покажет дайджесты SHA1, добавленные в расширенные атрибуты
+.I security.restorecon_last,
+или полностью удалит эти атрибуты. Эти атрибуты устанавливаются командой
+.BR restorecon (8)
+или
+.BR setfiles (8)
+для указанных каталогов при рекурсивном повторном проставлении меток.
+.sp
+.B restorecon_xattr
+полезно использовать для управления записями расширенных атрибутов, в частности, когда пользователи забывают, из каких каталогов они запускали
+.BR restorecon (8)
+или
+.BR setfiles (8).
+.sp
+Файловые системы
+.B RAMFS
+.B TMPFS
+не поддерживают расширенные атрибуты
+.I security.restorecon_last
+и автоматически исключаются из поиска.
+.sp
+По умолчанию
+.B restorecon_xattr
+показывает дайджесты SHA1, добавляя в конце "Match", если они соответствуют установленному по умолчанию файлу спецификации или файлу спецификации
+.I specfile,
+который установлен с помощью параметра
+.B \-f.
+Несоответствующие дайджесты SHA1 будут показаны с добавлением "No Match" в конце.
+Эту возможность можно отключить с помощью параметра
+.B \-n.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.B \-d
+удалить все несоответствующие записи дайджеста каталога
+.I security.restorecon_last.
+.TP
+.B \-D
+удалить все записи дайджеста каталога
+.I security.restorecon_last.
+.TP
+.B \-m
+не выполнять чтение
+.B /proc/mounts
+для получения списка монтирований без seclabel, которые следует исключить из проверок с повторным проставлением меток.
+.br
+установка параметра
+.B \-m
+полезна при наличии смонтированной файловой системы без seclabel, в которой в расположенном ниже каталоге смонтирована файловая система с seclabel.
+.TP
+.B \-n
+не добавлять "Match" или "No Match" в конце отображаемых дайджестов.
+.TP
+.B \-r
+рекурсивно спускаться по каталогам.
+.TP
+.B \-v
+показать дайджест SHA1, созданный установленным файлом спецификации.
+.TP
+.B \-e
+.I directory
+.br
+каталог, который следует исключить (чтобы исключить более одного каталога, этот параметр необходимо использовать соответствующее количество раз).
+.TP
+.B \-f
+.I specfile
+.br
+необязательный файл спецификации
+.I specfile,
+который содержит записи контекстов файлов в соответствии с описанием в
+.BR file_contexts (5).
+Он будет использоваться
+.BR selabel_open (3)
+для получения набора записей меток; получение дайджеста SHA1 выполняется с помощью
+.BR selabel_digest (3).
+Если этот параметр не указан, будет использоваться файл file_contexts по умолчанию.
+
+.SH "АРГУМЕНТЫ"
+.TP
+.I pathname
+.br
+путь к дереву каталогов, в котором следует выполнить поиск.
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR restorecon (8),
+.BR setfiles (8)
+
+.SH "АВТОРЫ"
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>
diff --git a/policycoreutils/setfiles/ru/setfiles.8 b/policycoreutils/setfiles/ru/setfiles.8
new file mode 100644
index 00000000..27815a3f
--- /dev/null
+++ b/policycoreutils/setfiles/ru/setfiles.8
@@ -0,0 +1,221 @@
+.TH "setfiles" "8" "10 июня 2016" "" "Команда пользователя SELinux"
+.SH "ИМЯ"
+setfiles \- установить SELinux-контексты безопасности файлов.
+
+.SH "ОБЗОР"
+.B setfiles
+.RB [ \-c
+.IR policy ]
+.RB [ \-d ]
+.RB [ \-l ]
+.RB [ \-m ]
+.RB [ \-n ]
+.RB [ \-e
+.IR directory ]
+.RB [ \-p ]
+.RB [ \-s ]
+.RB [ \-v ]
+.RB [ \-W ]
+.RB [ \-F ]
+.RB [ \-I | \-D ]
+.I spec_file
+.IR pathname \ ...
+
+.SH "ОПИСАНИЕ"
+На этой странице руководства приводится описание программы
+.BR setfiles.
+.P
+Эта программа используется в основном для инициализации полей контекста безопасности (расширенных атрибутов) в одной или нескольких файловых системах (или их частях). Обычно она впервые запускается как часть процесса установки SELinux (этап, который называется проставлением меток).
+.P
+Также можно запустить её в любой другой момент, чтобы исправить некорректные метки, добавить поддержку для недавно установленной политики или, используя параметр
+.B \-n
+, пассивно проверить, соответствуют ли установленные контексты файлов тем контекстам, которые указаны в активной политике (поведение по умолчанию) или в какой-либо другой политике (см. параметр
+.B \-c
+).
+.P
+Если объект файла не имеет контекста,
+.B setfiles
+запишет контекст по умолчанию в расширенные атрибуты объекта файла. Если объект файла имеет контекст,
+.B setfiles
+изменит только ту часть контекста безопасности, которая относится к типу.
+Параметр
+.B \-F
+позволяет принудительно заменить контекст целиком.
+.SH "ПАРАМЕТРЫ"
+.TP
+.B \-c
+проверить действительность контекстов относительно указанной двоичной политики.
+.TP
+.B \-d
+показать, какая спецификация соответствует каждому из файлов (не прекращать проверку после получения ошибок ABORT_ON_ERRORS).
+.TP
+.BI \-e \ directory
+исключить каталог (чтобы исключить более одного каталога, этот параметр необходимо использовать соответствующее количество раз).
+.TP
+.BI \-f \ infilename
+.I infilename
+содержит список файлов для обработки. Используйте
+.RB \*(lq \- \*(rq
+для
+.BR stdin .
+.TP
+.B \-F
+принудительно сбросить контекст, чтобы обеспечить соответствие file_context для настраиваемых файлов и соответствие контексту файлов по умолчанию для остальных файлов (меняются части контекста, связанные с пользователем, ролью, диапазоном, а также тип).
+.TP
+.B \-h, \-?
+показать сведения об использовании и выйти.
+.TP
+.B \-i
+игнорировать файлы, которые не существуют.
+.TP
+.B \-I
+игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA1 соответствует дайджесту SHA1 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе
+.B ПРИМЕЧАНИЯ.
+.TP
+.B \-D
+установить или обновить дайджесты SHA1 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута
+.IR security.restorecon_last.
+.TP
+.B \-l
+записывать изменения меток файлов в системный журнал.
+.TP
+.B \-m
+не выполнять чтение
+.B /proc/mounts
+для получения списка монтирований без seclabel, которые следует исключить из проверок с повторным проставлением меток. Установка этого параметра полезна при наличии смонтированной файловой системы без seclabel, в которой в расположенном ниже каталоге смонтирована файловая система с seclabel.
+.TP
+.B \-n
+не изменять метки файлов (пассивная проверка).
+.TP
+.BI \-o \ outfilename
+этот параметр устарел и больше не поддерживается.
+.TP
+.B \-p
+показывать ход выполнения, выводя количество обработанных файлов (единица измерения - блок размером 1 КБ (то есть 1000 файлов)). Если выполняется повторное проставление меток во всей ОС, будет показан примерный процент выполнения. Обратите внимание, что параметры
+.B \-p
+.B \-v
+являются взаимоисключающими.
+.TP
+.B \-q
+этот параметр устарел, ранее использовался для прекращения вывода параметров ассоциаций индексных дескрипторов (inode).
+.TP
+.BI \-r \ rootpath
+использовать альтернативный корневой путь. Используется в meta-selinux для сборок OpenEmbedded/Yocto, чтобы проставить метки для файлов в каталоге
+.I rootpath
+таким образом, как если бы они были в
+.B /
+.TP
+.B \-s
+взять список файлов из стандартного ввода, а не использовать путь из командной строки (эквивалентно
+.RB \*(lq "\-f \-" \*(rq
+).
+.TP
+.B \-v
+показать изменения меток для файлов и вывести параметры ассоциаций индексных дескрипторов (inode).
+Обратите внимание, что параметры
+.B \-v
+.B \-p
+являются взаимоисключающими.
+.TP
+.B \-W
+показать предупреждения о записях, для которых не обнаружены соответствующие файлы, с помощью вывода результатов
+.BR selabel_stats (3).
+.TP
+.B \-0
+предполагается, что разделителем для элементов ввода является символ нуля
+(вместо пробела). Символы кавычек и обратной косой черты также считаются обычными символами, которые могут формировать допустимый ввод.
+Этот параметр также отключает строку конца файла (end-of-file string), она обрабатывается, как любой другой аргумент. Это полезно, если элементы ввода содержат пробелы, кавычки или обратные косые черты. Параметр
+.B -print0
+GNU
+.B find
+производит ввод, подходящий для этого режима.
+
+.SH "АРГУМЕНТЫ"
+.TP
+.I spec_file
+Файл спецификации, содержащий строки следующего вида:
+.sp
+.RS
+.I regexp
+.RI [ type ]
+.IR context \ |
+.B <<none>>
+.RS
+Регулярное выражение привязывается с обоих концов. Необязательное поле
+.I type
+указывает тип файла (показывается в поле режима по команде
+.BR ls (1)
+), например,
+.B \-\-
+для соответствия только обычным файлам или
+.B \-d
+для соответствия только каталогам.
+.I context
+может быть обычным контекстом безопасности или строкой
+.B <<none>>
+(чтобы указать, что контекст файла не следует изменять).
+.br
+Используется последняя соответствующая спецификация. Если на файл имеется несколько жёстких ссылок, которые соответствуют разным спецификациям, и эти спецификации означают разные контексты безопасности, будет показано предупреждение, но для файла всё равно будет проставлена метка на основе последней соответствующей спецификации, отличной от
+.BR <<none>> \|.
+.RE
+.RE
+.TP
+.IR pathname \ ...
+Путь к корневому каталогу каждой файловой системы, в которой следует повторно проставить метки, или конкретный каталог в файловой системе, по которому следует рекурсивно спуститься и повторно проставить метки, или путь к файлу, для которого следует повторно проставить метку.
+Не используется, если используется параметр
+.B \-f
+или
+.B \-s .
+
+.SH "ПРИМЕЧАНИЯ"
+.IP "1." 4
+.B setfiles
+следует по символическим ссылкам и рекурсивно применяется к каталогам.
+.IP "2." 4
+Если в
+.I pathname
+указан корневой каталог, установлен параметр
+.B \-v
+, а также запущена система аудита, в журнал с меткой сообщения
+.BR FS_RELABEL
+автоматически записывается событие аудита, которое содержит сообщение о том, что произошло "массовое повторное проставление меток".
+.IP "3." 4
+Для повышения производительности при рекурсивном повторном проставлении меток в файловых системах используется параметр
+.B \-D
+команды
+.B setfiles .
+Он обеспечивает сохранение дайджеста SHA1 файла спецификации
+.B spec_file
+в расширенном атрибуте с именем
+.IR security.restorecon_last
+для каталога, указанного в соответствующем пути
+.IR pathname \ ...
+, после успешного завершения повторного проставления меток. Этот дайджест будет проверен, если команда
+.B setfiles
+.B \-D
+будет перезапущена с теми же параметрами
+.I spec_file
+.I pathname
+Подробные сведения доступны в
+.BR selinux_restorecon (3).
+.sp
+Параметр
+.B \-I
+позволяет игнорировать дайджест SHA1 из каждого каталога, указанного в
+.IR pathname \ ...
+, и, при условии, что НЕ установлен параметр
+.B \-n
+, для файлов будут необходимым образом повторно проставлены метки, а дайджест затем будет обновлён (если не будет ошибок).
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR restorecon (8),
+.BR load_policy (8),
+.BR checkpolicy (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Russell Coker <russell@coker.com.au>.
+Программа была написана Stephen Smalley <sds@tycho.nsa.gov>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>
diff --git a/policycoreutils/setsebool/Makefile b/policycoreutils/setsebool/Makefile
index 47bea605..4b55046c 100644
--- a/policycoreutils/setsebool/Makefile
+++ b/policycoreutils/setsebool/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SBINDIR ?= $(PREFIX)/sbin
MANDIR = $(PREFIX)/share/man
@@ -19,6 +20,12 @@ install: all
install -m 755 setsebool $(DESTDIR)$(SBINDIR)
-mkdir -p $(DESTDIR)$(MANDIR)/man8
install -m 644 setsebool.8 $(DESTDIR)$(MANDIR)/man8/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
-mkdir -p $(DESTDIR)$(BASHCOMPLETIONDIR)
install -m 644 $(BASHCOMPLETIONS) $(DESTDIR)$(BASHCOMPLETIONDIR)/setsebool
diff --git a/policycoreutils/setsebool/ru/setsebool.8 b/policycoreutils/setsebool/ru/setsebool.8
new file mode 100644
index 00000000..8a97b8ab
--- /dev/null
+++ b/policycoreutils/setsebool/ru/setsebool.8
@@ -0,0 +1,27 @@
+.TH "setsebool" "8" "11 августа 2004" "dwalsh@redhat.com" "Документация по командной строке SELinux"
+.SH "ИМЯ"
+setsebool \- установить значение логического переключателя SELinux
+
+.SH "ОБЗОР"
+.B setsebool
+.I "[ \-PNV ] boolean value | bool1=val1 bool2=val2 ..."
+
+.SH "ОПИСАНИЕ"
+.B setsebool
+устанавливает текущее состояние отдельного логического переключателя SELinux или списка логических переключателей в указанное значение. Это значение может быть либо 1, true или on (включает логический переключатель), либо 0, false или off (отключает логический переключатель).
+
+Если параметр \-P не указан, будет изменено только текущее значение логического переключателя; параметры загрузки по умолчанию останутся без изменений.
+
+Если параметр \-P указан, все ожидающие значения записываются в файл политики на диске. Поэтому они не будут сбрасываться после перезагрузок.
+
+Если параметр \-N указан, политика на диске не перезагружается в ядро.
+
+Если параметр \-V указан, показываются подробные сообщения об ошибках из библиотек semanage.
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+getsebool(8), booleans(8), togglesebool(8), semanage(8)
+
+.SH АВТОРЫ
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Программа была написана Tresys Technology.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/policycoreutils/setsebool/setsebool.c b/policycoreutils/setsebool/setsebool.c
index 53d3566c..a5157efc 100644
--- a/policycoreutils/setsebool/setsebool.c
+++ b/policycoreutils/setsebool/setsebool.c
@@ -18,7 +18,7 @@
#include <errno.h>
int permanent = 0;
-int reload = 1;
+int no_reload = 0;
int verbose = 0;
int setbool(char **list, size_t start, size_t end);
@@ -38,11 +38,6 @@ int main(int argc, char **argv)
if (argc < 2)
usage();
- if (is_selinux_enabled() <= 0) {
- fputs("setsebool: SELinux is disabled.\n", stderr);
- return 1;
- }
-
while (1) {
clflag = getopt(argc, argv, "PNV");
if (clflag == -1)
@@ -53,7 +48,7 @@ int main(int argc, char **argv)
permanent = 1;
break;
case 'N':
- reload = 0;
+ no_reload = 1;
break;
case 'V':
verbose = 1;
@@ -130,6 +125,7 @@ static int semanage_set_boolean_list(size_t boolcnt,
semanage_bool_key_t *bool_key = NULL;
int managed;
int result;
+ int enabled = is_selinux_enabled();
handle = semanage_handle_create();
if (handle == NULL) {
@@ -191,7 +187,7 @@ static int semanage_set_boolean_list(size_t boolcnt,
boolean) < 0)
goto err;
- if (semanage_bool_set_active(handle, bool_key, boolean) < 0) {
+ if (enabled && semanage_bool_set_active(handle, bool_key, boolean) < 0) {
fprintf(stderr, "Failed to change boolean %s: %m\n",
boollist[j].name);
goto err;
@@ -202,7 +198,8 @@ static int semanage_set_boolean_list(size_t boolcnt,
boolean = NULL;
}
- semanage_set_reload(handle, reload);
+ if (no_reload)
+ semanage_set_reload(handle, 0);
if (semanage_commit(handle) < 0)
goto err;
diff --git a/python/Makefile b/python/Makefile
index 80bc124b..9b66d52f 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -1,8 +1,6 @@
SUBDIRS = sepolicy audit2allow semanage sepolgen chcat
-all install relabel clean indent:
+all install relabel clean indent test:
@for subdir in $(SUBDIRS); do \
(cd $$subdir && $(MAKE) $@) || exit 1; \
done
-
-test:
diff --git a/python/VERSION b/python/VERSION
index a4412fa7..29cba064 100644
--- a/python/VERSION
+++ b/python/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/python/audit2allow/.gitignore b/python/audit2allow/.gitignore
index 3816d2e0..2cd46afd 100644
--- a/python/audit2allow/.gitignore
+++ b/python/audit2allow/.gitignore
@@ -1 +1,2 @@
sepolgen-ifgen-attr-helper
+test_dummy_policy
diff --git a/python/audit2allow/Makefile b/python/audit2allow/Makefile
index 513bb2b6..18d740d3 100644
--- a/python/audit2allow/Makefile
+++ b/python/audit2allow/Makefile
@@ -1,6 +1,8 @@
PYTHON ?= python
+SECILC ?= secilc
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -22,9 +24,12 @@ sepolgen-ifgen-attr-helper: sepolgen-ifgen-attr-helper.o $(LIBSEPOLA)
audit2why:
ln -sf audit2allow audit2why
-test: all
+test: all test_dummy_policy
@$(PYTHON) test_audit2allow.py -v
+test_dummy_policy: test_dummy_policy.cil
+ $(SECILC) -o $@ -f /dev/null $<
+
install: all
-mkdir -p $(DESTDIR)$(BINDIR)
install -m 755 audit2allow $(DESTDIR)$(BINDIR)
@@ -34,9 +39,15 @@ install: all
-mkdir -p $(DESTDIR)$(MANDIR)/man1
install -m 644 audit2allow.1 $(DESTDIR)$(MANDIR)/man1/
install -m 644 audit2why.1 $(DESTDIR)$(MANDIR)/man1/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man1 ; \
+ install -m 644 $${lang}/*.1 $(DESTDIR)$(MANDIR)/$${lang}/man1/ ; \
+ fi ; \
+ done
clean:
- rm -f *~ *.o sepolgen-ifgen-attr-helper
+ rm -f *~ *.o sepolgen-ifgen-attr-helper test_dummy_policy
indent:
../../scripts/Lindent $(wildcard *.[ch])
diff --git a/python/audit2allow/ru/audit2allow.1 b/python/audit2allow/ru/audit2allow.1
new file mode 100644
index 00000000..1633fa3b
--- /dev/null
+++ b/python/audit2allow/ru/audit2allow.1
@@ -0,0 +1,210 @@
+.\" Hey, Emacs! This is an -*- nroff -*- source file.
+.\" Copyright (c) 2005 Manoj Srivastava <srivasta@debian.org>
+.\" Copyright (c) 2010 Dan Walsh <dwalsh@redhat.com>
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.\"
+.TH AUDIT2ALLOW "1" "Октябрь 2010" "Security Enhanced Linux" NSA
+.SH ИМЯ
+.BR audit2allow
+\- создаёт правила политики SELinux allow/dontaudit из журналов отклонённых операций
+
+.BR audit2why
+\- преобразовывает сообщения аудита SELinux в описание причины отказа в доступе (audit2allow \-w)
+
+.SH ОБЗОР
+.B audit2allow
+.RI [ options "] "
+.SH ПАРАМЕТРЫ
+.TP
+.B "\-a" | "\-\-all"
+Прочитать ввод из журнала аудита и сообщений, конфликтует с \-i
+.TP
+.B "\-b" | "\-\-boot"
+Прочитать ввод из сообщений аудита с момента последней загрузки, конфликтует с \-i
+.TP
+.B "\-d" | "\-\-dmesg"
+Прочитать ввод из вывода
+.I /bin/dmesg.
+Обратите внимание, что с помощью dmesg будут доступны не все сообщения аудита, когда выполняется auditd; в этом случае используйте "ausearch \-m avc | audit2allow" или "\-a".
+.TP
+.B "\-D" | "\-\-dontaudit"
+Создать правила dontaudit (по умолчанию: allow)
+.TP
+.B "\-h" | "\-\-help"
+Вывести краткое сообщение об использовании
+.TP
+.B "\-i <inputfile>" | "\-\-input <inputfile>"
+Прочитать ввод из
+.I <inputfile>
+.TP
+.B "\-l" | "\-\-lastreload"
+Прочитать ввод только после последней перезагрузки политики
+.TP
+.B "\-m <modulename>" | "\-\-module <modulename>"
+Создать модуль / запросить вывод <modulename>
+.TP
+.B "\-M <modulename>"
+Создать загружаемый пакет модуля, конфликтует с \-o
+.TP
+.B "\-p <policyfile>" | "\-\-policy <policyfile>"
+Файл политики, который следует использовать для анализа
+.TP
+.B "\-o <outputfile>" | "\-\-output <outputfile>"
+Добавить вывод в конец
+.I <outputfile>
+.TP
+.B "\-r" | "\-\-requires"
+Создать вывод в синтаксисе загружаемого модуля
+.TP
+.B "\-N" | "\-\-noreference"
+Не создавать эталонную политику, традиционные разрешительные правила.
+Это поведение по умолчанию.
+.TP
+.B "\-R" | "\-\-reference"
+Создать эталонную политику с помощью установленных макросов.
+Будет предпринята попытка сопоставить отказы в доступе с интерфейсами, это сопоставление может быть неправильным.
+.TP
+.B "\-x" | "\-\-xperms"
+Создать расширенные правила вектора доступа для разрешения
+.TP
+.B "\-w" | "\-\-why"
+Преобразовать сообщения аудита SELinux в описание причин отказа в доступе
+
+.TP
+.B "\-v" | "\-\-verbose"
+Включить подробный вывод
+
+.SH ОПИСАНИЕ
+.PP
+Эта утилита ищет в журналах сообщения, которые появляются, когда система не даёт разрешения на операции, и создаёт фрагмент кода правил политики, который (если бы был загружен в политику) мог бы позволить этим операциям успешно завершиться. Однако эта утилита создаёт только разрешительные (allow) правила принудительного присвоения типов. При работе с некоторыми отказами в разрешениях может потребоваться изменить политику как-то иначе, например, добавить атрибут в объявление типа для удовлетворения существующему ограничению, добавить разрешительное правило для роли или изменить ограничение. Утилиту
+.BR audit2why (8)
+можно использовать для диагностики неясных причин отказов в разрешениях.
+.PP
+Использовать вывод этой утилиты необходимо с осторожностью; убедитесь, что разрешаемые операции не представляют угрозы безопасности. Часто лучше определить новые домены и/или типы или выполнить другие структурные изменения, чтобы разрешить успешное выполнение только оптимальному набору операций, а не вслепую применять иногда слишком обширные изменения, которые рекомендуются утилитой. Некоторые запреты на использование разрешений не вызывают критических ошибок в приложении; в этом случае предпочтительным может быть простое подавление журналирования отказов с помощью правила 'dontaudit', а не использование разрешительного правила 'allow'.
+.PP
+.SH ПРИМЕР
+.nf
+.B ПРИМЕЧАНИЕ: эти примеры относятся к системам, использующим пакет аудита. Если вы
+.B не используете пакет аудита, сообщения кэша вектора доступа (AVC) будут находиться в каталоге /var/log/messages.
+.B Замените в примерах /var/log/messages на /var/log/audit/audit.log
+.PP
+.B Использование audit2allow для создания модульной политики
+
+$ cat /var/log/audit/audit.log | audit2allow \-m local > local.te
+$ cat local.te
+module local 1.0;
+
+require {
+ class file { getattr open read };
+
+
+ type myapp_t;
+ type etc_t;
+ };
+
+
+allow myapp_t etc_t:file { getattr open read };
+<просмотреть local.te и настроить требуемым образом>
+
+.B Использование audit2allow для создания модульной политики с помощью эталонной политики
+
+$ cat /var/log/audit/audit.log | audit2allow \-R \-m local > local.te
+$ cat local.te
+policy_module(local, 1.0)
+
+gen_require(`
+ type myapp_t;
+ type etc_t;
+ };
+
+files_read_etc_files(myapp_t)
+<просмотреть local.te и настроить требуемым образом>
+
+.B Сборка модульной политики с помощью Makefile
+
+# SELinux предоставляет среду разработки политики в
+# /usr/share/selinux/devel, включая все поставляемые
+# файлы интерфейса.
+# Можно создать файл .te и скомпилировать его, выполнив
+
+$ make \-f /usr/share/selinux/devel/Makefile local.pp
+
+
+# Эта команда make скомпилирует файл local.te в текущем
+# каталоге. Если не был указан файл "pp", будут скомпилированы
+# все файлы "te" в текущем каталоге. После компиляции файла
+# .te в файл "pp" его потребуется установить с помощью
+# команды semodule.
+
+$ semodule \-i local.pp
+
+.B Сборка модульной политики вручную
+
+# Скомпилировать модуль
+$ checkmodule \-M \-m \-o local.mod local.te
+
+# Создать пакет
+$ semodule_package \-o local.pp \-m local.mod
+
+# Загрузить модуль в ядро
+$ semodule \-i local.pp
+
+.B Использование audit2allow для создания и сборки модульной политики
+
+$ cat /var/log/audit/audit.log | audit2allow \-M local
+Создание файла принудительного присвоения типов: local.te
+
+Компиляция политики: checkmodule \-M \-m \-o local.mod local.te
+Сборка пакета: semodule_package \-o local.pp \-m local.mod
+
+******************** ВАЖНО ***********************
+
+Чтобы загрузить созданный пакет политики в ядро, необходимо выполнить
+
+semodule \-i local.pp
+
+.B Использование audit2allow для создания монолитной (не модульной) политики
+
+$ cd /etc/selinux/$SELINUXTYPE/src/policy
+$ cat /var/log/audit/audit.log | audit2allow >> domains/misc/local.te
+$ cat domains/misc/local.te
+allow cupsd_config_t unconfined_t:fifo_file { getattr ioctl };
+<просмотреть domains/misc/local.te и настроить требуемым образом>
+$ make load
+
+.fi
+.PP
+.SH АВТОРЫ
+Эта страница руководства была написана
+.I Manoj Srivastava <srivasta@debian.org>
+для системы Debian GNU/Linux. Она была обновлена Dan Walsh <dwalsh@redhat.com>.
+.PP
+В разработке утилиты
+.B audit2allow
+участвовало несколько человек, в том числе
+.I Justin R. Smith,
+.I Yuichi Nakamura
+.I Dan Walsh.
+Перевод на русский язык выполнила
+.I Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/audit2allow/ru/audit2why.1 b/python/audit2allow/ru/audit2why.1
new file mode 100644
index 00000000..a9e88939
--- /dev/null
+++ b/python/audit2allow/ru/audit2why.1
@@ -0,0 +1 @@
+.so man1/audit2allow.1
diff --git a/python/audit2allow/sepolgen-ifgen b/python/audit2allow/sepolgen-ifgen
index e3f67d43..c482f227 100644
--- a/python/audit2allow/sepolgen-ifgen
+++ b/python/audit2allow/sepolgen-ifgen
@@ -56,6 +56,8 @@ def parse_options():
help="print debuging output")
parser.add_option("-d", "--debug", action="store_true", default=False,
help="extra debugging output")
+ parser.add_option("--attr-helper", default=ATTR_HELPER,
+ help="path to sepolgen-ifgen-attr-helper")
parser.add_option("--no_attrs", action="store_true", default=False,
help="do not retrieve attribute access from kernel policy")
options, args = parser.parse_args()
@@ -77,7 +79,7 @@ def get_policy():
return None
-def get_attrs(policy_path):
+def get_attrs(policy_path, attr_helper):
try:
if not policy_path:
policy_path = get_policy()
@@ -93,7 +95,7 @@ def get_attrs(policy_path):
return None
fd = open("/dev/null", "w")
- ret = subprocess.Popen([ATTR_HELPER, policy_path, outfile.name], stdout=fd).wait()
+ ret = subprocess.Popen([attr_helper, policy_path, outfile.name], stdout=fd).wait()
fd.close()
if ret != 0:
sys.stderr.write("could not run attribute helper\n")
@@ -127,7 +129,7 @@ def main():
# Get the attibutes from the binary
attrs = None
if not options.no_attrs:
- attrs = get_attrs(options.policy_path)
+ attrs = get_attrs(options.policy_path, options.attr_helper)
if attrs is None:
return 1
diff --git a/python/audit2allow/test_audit2allow.py b/python/audit2allow/test_audit2allow.py
index 4427dea7..87e5504a 100644
--- a/python/audit2allow/test_audit2allow.py
+++ b/python/audit2allow/test_audit2allow.py
@@ -1,6 +1,7 @@
import unittest
import os
-import shutil
+import os.path
+import sys
from tempfile import mkdtemp
from subprocess import Popen, PIPE
@@ -25,15 +26,22 @@ class Audit2allowTests(unittest.TestCase):
def test_sepolgen_ifgen(self):
"Verify sepolgen-ifgen works"
- p = Popen(['sudo', 'sepolgen-ifgen'], stdout=PIPE)
+ temp_directory = mkdtemp(suffix='audit2allow_test')
+ output_file = os.path.join(temp_directory, 'interface_info')
+ p = Popen([
+ sys.executable, './sepolgen-ifgen', '-p', 'test_dummy_policy', '-o', output_file,
+ '--attr-helper', './sepolgen-ifgen-attr-helper'
+ ], stdout=PIPE)
out, err = p.communicate()
if err:
print(out, err)
self.assertSuccess("sepolgen-ifgen", p.returncode, err)
+ os.unlink(output_file)
+ os.rmdir(temp_directory)
def test_audit2allow(self):
"Verify audit2allow works"
- p = Popen(['python', './audit2allow', "-i", "test.log"], stdout=PIPE)
+ p = Popen([sys.executable, './audit2allow', '-p', 'test_dummy_policy', '-i', 'test.log'], stdout=PIPE)
out, err = p.communicate()
if err:
print(out, err)
@@ -41,7 +49,7 @@ class Audit2allowTests(unittest.TestCase):
def test_audit2why(self):
"Verify audit2why works"
- p = Popen(['python', './audit2why', "-i", "test.log"], stdout=PIPE)
+ p = Popen([sys.executable, './audit2why', '-p', 'test_dummy_policy', '-i', 'test.log'], stdout=PIPE)
out, err = p.communicate()
if err:
print(out, err)
@@ -49,12 +57,13 @@ class Audit2allowTests(unittest.TestCase):
def test_xperms(self):
"Verify that xperms generation works"
- p = Popen(['python', './audit2allow', "-x", "-i", "test.log"], stdout=PIPE)
+ p = Popen([sys.executable, './audit2allow', '-x', '-p', 'test_dummy_policy', '-i', 'test.log'], stdout=PIPE)
out, err = p.communicate()
if err:
print(out, err)
self.assertTrue(b"allowxperm" in out)
self.assertSuccess("xperms", p.returncode, err)
+
if __name__ == "__main__":
unittest.main()
diff --git a/python/audit2allow/test_dummy_policy.cil b/python/audit2allow/test_dummy_policy.cil
new file mode 100644
index 00000000..795fedc3
--- /dev/null
+++ b/python/audit2allow/test_dummy_policy.cil
@@ -0,0 +1,75 @@
+; This is a dummy policy which main aim is to be compatible with test.log
+
+; Define one category and one sensitivity in order to make things work
+(mls true)
+(category c0)
+(categoryorder (c0))
+(sensitivity s0)
+(sensitivityorder (s0))
+(sensitivitycategory s0 (c0))
+
+; Define some users and roles
+(user system_u)
+(user root)
+(user unconfined_u)
+(role system_r)
+(role unconfined_r)
+(userrole root system_r)
+(userrole system_u system_r)
+(userrole unconfined_u unconfined_r)
+(userlevel system_u (s0))
+(userlevel root (s0))
+(userlevel unconfined_u (s0))
+(userrange system_u ((s0)(s0 (c0))))
+(userrange root ((s0)(s0 (c0))))
+(userrange unconfined_u ((s0)(s0 (c0))))
+
+; Define domain types
+(type automount_t)
+(type ftpd_t)
+(type httpd_t)
+(type kernel_t)
+(type nsplugin_t)
+(type postfix_local_t)
+(type qemu_t)
+(type smbd_t)
+
+(roletype system_r automount_t)
+(roletype system_r ftpd_t)
+(roletype system_r httpd_t)
+(roletype system_r kernel_t)
+(roletype system_r postfix_local_t)
+(roletype system_r qemu_t)
+(roletype system_r smbd_t)
+(roletype unconfined_r nsplugin_t)
+
+; Define file types
+(type automount_lock_t)
+(type default_t)
+(type fixed_disk_device_t)
+(type home_root_t)
+(type httpd_sys_content_t)
+(type httpd_sys_script_exec_t)
+(type mail_spool_t)
+(type ssh_home_t)
+(type usr_t)
+(type var_t)
+
+; Define port types
+(type mysqld_port_t)
+(type reserved_port_t)
+
+; Define initial SID
+(sid kernel)
+(sidorder (kernel))
+(sidcontext kernel (system_u system_r kernel_t ((s0) (s0))))
+
+; Define classes
+(class blk_file (getattr open read write))
+(class dir (append open search))
+(class file (execute execute_no_trans getattr open read write))
+(class tcp_socket (ioctl name_bind name_connect))
+(classorder (blk_file file dir tcp_socket))
+
+; The policy compiler requires at least one rule
+(allow kernel_t default_t (file (open read write)))
diff --git a/python/chcat/Makefile b/python/chcat/Makefile
index 290b9a6e..e4873bf4 100644
--- a/python/chcat/Makefile
+++ b/python/chcat/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -11,9 +12,17 @@ install: all
install -m 755 chcat $(DESTDIR)$(BINDIR)
-mkdir -p $(DESTDIR)$(MANDIR)/man8
install -m 644 chcat.8 $(DESTDIR)$(MANDIR)/man8/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
clean:
indent:
relabel:
+
+test:
diff --git a/python/chcat/ru/chcat.8 b/python/chcat/ru/chcat.8
new file mode 100644
index 00000000..9a904ff3
--- /dev/null
+++ b/python/chcat/ru/chcat.8
@@ -0,0 +1,57 @@
+.TH CHCAT "8" "Сентябрь 2005" "chcat" "Команды пользователя"
+.SH ИМЯ
+chcat \- изменить SELinux-категорию безопасности файла
+.SH ОБЗОР
+.B chcat
+\fIcategory file\fR...
+.br
+.B chcat -l
+\fIcategory user\fR...
+.br
+.B chcat
+\fI[[+|-]category...] file\fR...
+.br
+.B chcat -l
+\fI[[+|-]category...] user\fR...
+.br
+.B chcat
+[\fI-d\fR] \fIfile\fR...
+.br
+.B chcat -l
+[\fI-d\fR] \fIuser\fR...
+.br
+.B chcat
+\fI-L\fR [ \-l ] [ user ... ]
+.br
+.SH ОПИСАНИЕ
+.PP
+Изменить/Удалить категорию безопасности \fIcategory\fR для каждого файла \fIfile\fR или пользователя \fIuser\fR.
+.PP
+Используйте +/- для добавления/удаления категорий из \fIfile\fR или \fIuser\fR.
+.PP
+.B
+Примечание:
+При удалении категории необходимо указать '\-\-' в командной строке перед использованием синтаксиса \-Category. Это сообщает команде, что вы закончили вводить параметры и теперь указываете имя категории.
+
+.TP
+\fB\-d\fR
+удалить категорию из каждого FILE/USER.
+.TP
+\fB\-L\fR
+вывести список доступных категорий.
+.TP
+\fB\-l\fR
+если используется, chcat будет работать с пользователями, а не с файлами.
+.SH "СМОТРИТЕ ТАКЖЕ"
+.TP
+chcon(1), selinux(8), semanage(8)
+.PP
+.br
+При работе с файлами этот сценарий вызывает команду chcon.
+.SH "FILES"
+/etc/selinux/{SELINUXTYPE}/setrans.conf
+.br
+/etc/selinux/{SELINUXTYPE}/seusers
+
+.SH "АВТОРЫ"
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>
diff --git a/python/semanage/Makefile b/python/semanage/Makefile
index 5fc1998e..2e262ef8 100644
--- a/python/semanage/Makefile
+++ b/python/semanage/Makefile
@@ -1,6 +1,7 @@
PYTHON ?= python
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SBINDIR ?= $(PREFIX)/sbin
MANDIR = $(PREFIX)/share/man
@@ -19,6 +20,12 @@ install: all
-mkdir -p $(DESTDIR)$(SBINDIR)
install -m 755 semanage $(DESTDIR)$(SBINDIR)
install -m 644 *.8 $(DESTDIR)$(MANDIR)/man8
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ [ -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
test -d $(DESTDIR)/$(PACKAGEDIR) || install -m 755 -d $(DESTDIR)/$(PACKAGEDIR)
install -m 755 seobject.py $(DESTDIR)/$(PACKAGEDIR)
-mkdir -p $(DESTDIR)$(BASHCOMPLETIONDIR)
diff --git a/python/semanage/ru/semanage-boolean.8 b/python/semanage/ru/semanage-boolean.8
new file mode 100644
index 00000000..cc91e70a
--- /dev/null
+++ b/python/semanage/ru/semanage-boolean.8
@@ -0,0 +1,60 @@
+.TH "semanage-boolean" "8" "20130617" "" ""
+.SH "ИМЯ"
+semanage\-boolean \- утилита для управления политикой SELinux, основанная на использовании логических переключателей
+.SH "ОБЗОР"
+.B semanage boolean [\-h] [\-n] [\-N] [\-S STORE] [ \-\-extract | \-\-deleteall | \-\-list [\-C] | \-\-modify ( \-\-on | \-\-off ) boolean ]
+
+.SH "ОПИСАНИЕ"
+Команда semanage используется для настройки определённых элементов политики
+SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage boolean управляет настройками логических переключателей в политике SELinux. Логические переключатели - это правила if\-then\-else, записанные в политике SELinux. Их можно использовать для настройки того, как правила политики SELinux влияют на ограниченный домен.
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+.TP
+.I \-m, \-\-modify
+изменить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-D, \-\-deleteall
+удалить все локальные настройки
+.TP
+.I \-1, \-\-on
+включить логический переключатель
+.TP
+.I \-0, \-\-off
+отключить логический переключатель
+.SH ПРИМЕР
+.nf
+Включить на apache логический переключатель can send mail
+# semanage boolean \-m \-\-on httpd_can_sendmail
+
+Вывести список настраиваемых логических переключателей
+# semanage boolean \-l \-C
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8),
+.BR setsebool (8),
+.BR getsebool (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-dontaudit.8 b/python/semanage/ru/semanage-dontaudit.8
new file mode 100644
index 00000000..4f992ce4
--- /dev/null
+++ b/python/semanage/ru/semanage-dontaudit.8
@@ -0,0 +1,32 @@
+.TH "semanage-dontaudit" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-dontaudit \- утилита dontaudit для управления политикой SELinux
+.SH "ОБЗОР"
+.B semanage dontaudit [\-h] [\-S STORE] [\-N] {on,off}
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage dontaudit определяет, будут ли правила dontaudit присутствовать в политике. Авторы политик применяют правила dontaudit для того, чтобы ограниченные приложения использовали альтернативные пути. При использовании правил dontaudit отказы в доступе выполняются, но не журналируются. Иногда использование правил dontaudit вызывает ошибки в приложениях (но авторы политик не знают о них, так как аудит кэша вектора доступа не выполняется). Отключите правила dontaudit с помощью этой команды, чтобы проверить, блокирует ли ядро доступ.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+Показать это справочное сообщение и выйти
+.TP
+.I \-S STORE, \-\-store STORE
+Выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-N, \-\-noreload
+Не перезагружать политику после фиксации
+
+.SH ПРИМЕР
+.nf
+Отключить правила dontaudit
+# semanage dontaudit off
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-export.8 b/python/semanage/ru/semanage-export.8
new file mode 100644
index 00000000..a4a67e8e
--- /dev/null
+++ b/python/semanage/ru/semanage-export.8
@@ -0,0 +1,36 @@
+.TH "semanage-export" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-export \- утилита импорта для управления политикой SELinux
+.SH "ОБЗОР"
+.B semanage export [\-h] [\-S STORE] [\-f OUTPUT_FILE]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команды semanage import и semanage export можно использовать, чтобы извлечь изменения SELinux на одном компьютере и применить их к другому. В файл можно поместить целую группу команд semanage и применить их к компьютеру в одной транзакции.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-f OUTPUT_FILE, \-\-output_file OUTPUT_FILE
+выходной файл
+
+.SH ПРИМЕР
+.nf
+Импортировать изменения semanage с другого компьютера
+# semanage export \-f semanage.mods
+# scp semanage.mod remotemachine:
+# ssh remotemachine
+# semanage import \-f semanage.mods
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8),
+.BR semanage-import (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-fcontext.8 b/python/semanage/ru/semanage-fcontext.8
new file mode 100644
index 00000000..243052da
--- /dev/null
+++ b/python/semanage/ru/semanage-fcontext.8
@@ -0,0 +1,84 @@
+.TH "semanage-fcontext" "8" "20130617" "" ""
+.SH "ИМЯ"
+semanage\-fcontext \- утилита для управления политикой SELinux, предназначенная для работы с контекстами файлов
+
+.SH "ОБЗОР"
+.B semanage fcontext [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add ( \-t TYPE \-f FTYPE \-r RANGE \-s SEUSER | \-e EQUAL ) FILE_SPEC ) | \-\-delete ( \-t TYPE \-f FTYPE | \-e EQUAL ) FILE_SPEC ) | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify ( \-t TYPE \-f FTYPE \-r RANGE \-s SEUSER | \-e EQUAL ) FILE_SPEC ) ]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage fcontext используется для управления проставлением меток по умолчанию в файловой системе в системе SELinux. Эта команда с помощью регулярных выражений сопоставляет пути файлов с метками SELinux.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-a, \-\-add
+добавить запись указанного типа объекта
+.TP
+.I \-d, \-\-delete
+удалить запись указанного типа объекта
+.TP
+.I \-m, \-\-modify
+изменить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-D, \-\-deleteall
+удалить все локальные настройки
+.TP
+.I \-e EQUAL, \-\-equal EQUAL
+Заменить путь к цели на путь к источнику при создании меток по умолчанию. Используется с fcontext. Необходимы аргументы путей к источнику и цели. Для целевого поддерева метки контекста будут проставляться тем же образом, который задан для источника.
+.TP
+.I \-f [{a,f,d,c,b,s,l,p}], \-\-ftype [{a,f,d,c,b,s,l,p}]
+Тип файла. Используется с fcontext. Требуется тип файла (показывается в поле режима по команде ls); например, используйте 'd' для соответствия только каталогам или 'f' для соответствия только обычным файлам. Могут передаваться следующие параметры типа файла: f (обычный файл), d (каталог), c (устройство символьного ввода-вывода), b (устройство блочного ввода-вывода), s (сокет), l (символическая ссылка), p (именованный канал). Если вы не укажете тип файла, по умолчанию будет установлен тип "all files" (все файлы).
+
+.TP
+.I \-s SEUSER, \-\-seuser SEUSER
+имя пользователя SELinux
+.TP
+.I \-t TYPE, \-\-type TYPE
+SELinux-тип для объекта
+.TP
+.I \-r RANGE, \-\-range RANGE
+диапазон безопасности MLS/MCS (только для систем с поддержкой MLS/MCS). По умолчанию SELinux-диапазон для сопоставления имени входа SELinux принимает значение диапазона записи пользователя SELinux. По умолчанию SELinux-диапазон для пользователя SELinux принимает значение s0.
+
+.SH ПРИМЕР
+.nf
+.I выполните restorecon после установки контекста файлов
+Добавьте контекст файлов для всего, что находится в /web
+# semanage fcontext \-a \-t httpd_sys_content_t "/web(/.*)?"
+# restorecon \-R \-v /web
+
+Замените /home1 на /home при установке контекста файлов
+# semanage fcontext \-a \-e /home /home1
+# restorecon \-R \-v /home1
+
+Выполните следующие команды для домашних каталогов, находящихся ниже каталога верхнего уровня, например /disk6/home
+# semanage fcontext \-a \-t home_root_t "/disk6"
+# semanage fcontext \-a \-e /home /disk6/home
+# restorecon \-R \-v /disk6
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-ibendport.8 b/python/semanage/ru/semanage-ibendport.8
new file mode 100644
index 00000000..41c6d7e6
--- /dev/null
+++ b/python/semanage/ru/semanage-ibendport.8
@@ -0,0 +1,67 @@
+.TH "semanage-ibendport" "8" "20170508" "" ""
+.SH "ИМЯ"
+.B semanage\-ibendport \- утилита для управления политикой SELinux, предназначенная для сопоставления конечных портов infiniband
+.SH "ОБЗОР"
+.B semanage ibendport [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add \-t TYPE \-z IBDEV_NAME \-r RANGE port | \-\-delete \-z IBDEV_NAME port | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify \-t TYPE \-z IBDEV_NAME \-r RANGE port ]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. semanage ibendport управляет определениями типов ibendport для номеров ibendport.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+.TP
+.I \-a, \-\-add
+добавить запись указанного типа объекта
+.TP
+.I \-d, \-\-delete
+удалить запись указанного типа объекта
+.TP
+.I \-m, \-\-modify
+изменить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-D, \-\-deleteall
+удалить все локальные настройки
+.TP
+.I \-t TYPE, \-\-type TYPE
+SELinux-тип для объекта
+.TP
+.I \-r RANGE, \-\-range RANGE
+диапазон безопасности MLS/MCS (только для систем с поддержкой MLS/MCS). По умолчанию SELinux-диапазон для сопоставления имени входа SELinux принимает значение диапазона записи пользователя SELinux. По умолчанию SELinux-диапазон для пользователя SELinux принимает значение s0.
+.TP
+.I \-z IBDEV_NAME, \-\-ibdev_name IBDEV_NAME
+Имя устройства infiniband для порта, для которого следует проставить метку. (например, mlx5_0)
+
+.SH ПРИМЕР
+.nf
+Вывести список всех определений ibendport
+# semanage ibendport \-l
+Проставить метку 'устройство mlx4_0 порт 2'
+# semanage ibendport \-a \-t allowed_ibendport_t \-z mlx4_0 2
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Jurgens <danielj@mellanox.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-ibpkey.8 b/python/semanage/ru/semanage-ibpkey.8
new file mode 100644
index 00000000..846d5532
--- /dev/null
+++ b/python/semanage/ru/semanage-ibpkey.8
@@ -0,0 +1,67 @@
+.TH "semanage-ibpkey" "8" "20170508" "" ""
+.SH "ИМЯ"
+.B semanage\-ibpkey \- утилита для управления политикой SELinux, предназначенная для сопоставления ключей разделов infiniband
+.SH "ОБЗОР"
+.B semanage ibpkey [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add \-t TYPE \-x SUBNET_PREFIX \-r RANGE ibpkey_name | ibpkey_range | \-\-delete \-x SUBNET_PREFIX ibpkey_name | ibpkey_range | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify \-t TYPE \-x SUBNET_PREFIX \-r RANGE ibpkey_name | ibpkey_range ]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage ibpkey управляет определениями типов ibpkey для номеров ibpkey.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+.TP
+.I \-a, \-\-add
+добавить запись указанного типа объекта
+.TP
+.I \-d, \-\-delete
+удалить запись указанного типа объекта
+.TP
+.I \-m, \-\-modify
+изменить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-D, \-\-deleteall
+удалить все локальные настройки
+.TP
+.I \-t TYPE, \-\-type TYPE
+SELinux-тип для объекта
+.TP
+.I \-r RANGE, \-\-range RANGE
+диапазон безопасности MLS/MCS (только для систем с поддержкой MLS/MCS). По умолчанию SELinux-диапазон для сопоставления имени входа SELinux принимает значение диапазона записи пользователя SELinux. По умолчанию SELinux-диапазон для пользователя SELinux принимает значение s0.
+.TP
+.I \-x SUBNET_PREFIX, \-\-subnet_prefix SUBNET_PREFIX
+Префикс подсети для указанного ключа раздела (pkey) или диапазона ключей раздела.
+
+.SH ПРИМЕР
+.nf
+Вывести список всех определений ibpkey
+# semanage ibpkey \-l
+Отметить pkey 0x8FFF (pkey ограниченного участия по умолчанию) как тип pkey по умолчанию
+# semanage ibpkey \-a \-t default_ibpkey_t \-x fe80:: 0x8FFF
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Jurgens <danielj@mellanox.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-import.8 b/python/semanage/ru/semanage-import.8
new file mode 100644
index 00000000..b374c41d
--- /dev/null
+++ b/python/semanage/ru/semanage-import.8
@@ -0,0 +1,35 @@
+.TH "semanage-import" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-import \- утилита импорта для управления политикой SELinux
+.SH "ОБЗОР"
+.B semanage import [\-h] [\-N] [\-S STORE] [\-f INPUT_FILE]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команды semanage import и semanage export можно использовать, чтобы извлечь изменения SELinux на одном компьютере и применить их к другому. В файл можно поместить целую группу команд semanage и применить их к компьютеру в одной транзакции.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-f INPUT_FILE, \-\-input_file INPUT_FILE
+входной файл
+.SH ПРИМЕР
+.nf
+Импортировать изменения semanage с другого компьютера
+# semanage import \-f semanage.mods
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.B selinux (8),
+.B semanage (8),
+.B semanage-export (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-interface.8 b/python/semanage/ru/semanage-interface.8
new file mode 100644
index 00000000..62308f39
--- /dev/null
+++ b/python/semanage/ru/semanage-interface.8
@@ -0,0 +1,62 @@
+.TH "semanage-interface" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-interface \- утилита для управления политикой SELinux, предназначенная для работы с сетевыми интерфейсами
+.SH "ОБЗОР"
+.B semanage interface [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add \-t TYPE \-r RANGE interface | \-\-delete interface | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify \-t TYPE \-r RANGE interface ]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage interface управляет метками, которые назначаются сетевым интерфейсам.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+.TP
+.I \-a, \-\-add
+добавить запись указанного типа объекта
+.TP
+.I \-d, \-\-delete
+удалить запись указанного типа объекта
+.TP
+.I \-m, \-\-modify
+изменить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-D, \-\-deleteall
+удалить все локальные настройки
+.TP
+.I \-t TYPE, \-\-type TYPE
+SELinux-тип для объекта
+.TP
+.I \-r RANGE, \-\-range RANGE
+диапазон безопасности MLS/MCS (только для систем с поддержкой MLS/MCS). По умолчанию SELinux-диапазон для сопоставления имени входа SELinux принимает значение диапазона записи пользователя SELinux. По умолчанию SELinux-диапазон для пользователя SELinux принимает значение s0.
+
+.SH ПРИМЕР
+.nf
+Вывести список всех определений интерфейсов
+# semanage interface \-l
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8)
+
+.SH "AUTHOR"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-login.8 b/python/semanage/ru/semanage-login.8
new file mode 100644
index 00000000..47bd2193
--- /dev/null
+++ b/python/semanage/ru/semanage-login.8
@@ -0,0 +1,67 @@
+.TH "semanage-login" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-login \- утилита для управления политикой SELinux, предназначенная для сопоставления пользователей Linux с пользователями SELinux
+.SH "ОБЗОР"
+.B semanage login [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add \-s SEUSER \-r RANGE LOGIN | \-\-delete LOGIN | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify \-s SEUSER \-r RANGE LOGIN ]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage login управляет сопоставлением пользователей Linux с пользователями SELinux. Её можно использовать для включения ограниченных пользователей. Например, можно определить, что конкретный пользователь или группа пользователей будет входить в систему как пользователь user_u. Чтобы указать имя группы, поставьте перед ним знак '%'.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-a, \-\-add
+добавить запись указанного типа объекта
+.TP
+.I \-d, \-\-delete
+удалить запись указанного типа объекта
+.TP
+.I \-m, \-\-modify
+изменить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-D, \-\-deleteall
+удалить все локальные настройки
+.TP
+.I \-s SEUSER, \-\-seuser SEUSER
+имя пользователя SELinux
+.TP
+.I \-r RANGE, \-\-range RANGE
+диапазон безопасности MLS/MCS (только для систем с поддержкой MLS/MCS). По умолчанию SELinux-диапазон для сопоставления имени входа SELinux принимает значение диапазона записи пользователя SELinux. По умолчанию SELinux-диапазон для пользователя SELinux принимает значение s0.
+
+.SH ПРИМЕР
+.nf
+Изменить пользователя по умолчанию в системе на пользователя guest_u
+# semanage login \-m \-s guest_u __default__
+Назначить пользователю gijoe на компьютере с поддержкой MLS диапазон и пользователя staff_u
+# semanage login \-a \-s staff_u \-rSystemLow-Secret gijoe
+Назначить всем пользователям в группе engineering пользователя staff_u
+# semanage login \-a \-s staff_u %engineering
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8),
+.BR semanage-user (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-module.8 b/python/semanage/ru/semanage-module.8
new file mode 100644
index 00000000..2d8666d6
--- /dev/null
+++ b/python/semanage/ru/semanage-module.8
@@ -0,0 +1,61 @@
+.TH "semanage-module" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-module \- утилита для управления политикой SELinux, предназначенная для сопоставления модулей
+.SH "ОБЗОР"
+.B semanage module [\-h] [\-n] [\-N] [\-S STORE] (\-a | \-r | \-e | \-d | \-\-extract | \-\-list [\-C] | \-\-deleteall) [module_name]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage module позволяет устанавливать, удалять, отключать модули политики SELinux.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-a, \-\-add
+установить указанный модуль
+.TP
+.I \-r, \-\-remove
+удалить указанный модуль
+.TP
+.I \-d \-\-disable
+отключить указанный модуль
+.TP
+.I \-e \-\-enable
+включить указанный модуль
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+
+.SH ПРИМЕР
+.nf
+Вывести список всех модулей
+# semanage module \-l
+Отключить неограниченный модуль (unconfined)
+# semanage module \-\-disable unconfined
+Установить пользовательский модуль политики apache
+# semanage module \-a myapache
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8),
+.BR semodule (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-node.8 b/python/semanage/ru/semanage-node.8
new file mode 100644
index 00000000..1e89eed9
--- /dev/null
+++ b/python/semanage/ru/semanage-node.8
@@ -0,0 +1,59 @@
+.TH "semanage-node" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-node \- утилита для управления политикой SELinux, предназначенная для сопоставления узлов
+.SH "ОБЗОР"
+.B semanage node [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add \-M NETMASK \-p PROTOCOL \-t TYPE \-r RANGE node | \-\-delete \-M NETMASK \-p PROTOCOL node | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify \-M NETMASK \-p PROTOCOL \-t TYPE \-r RANGE node ]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage node управляет определениями типов узлов для IP-адресов.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+.TP
+.I \-a, \-\-add
+добавить запись указанного типа объекта
+.TP
+.I \-d, \-\-delete
+удалить запись указанного типа объекта
+.TP
+.I \-m, \-\-modify
+изменить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-D, \-\-deleteall
+удалить все локальные настройки
+.TP
+.I \-M NETMASK, \-\-netmask NETMASK
+маска сети
+.TP
+.I \-t TYPE, \-\-type TYPE
+SELinux-тип для объекта
+.TP
+.I \-r RANGE, \-\-range RANGE
+диапазон безопасности MLS/MCS (только для систем с поддержкой MLS/MCS). По умолчанию SELinux-диапазон для сопоставления имени входа SELinux принимает значение диапазона записи пользователя SELinux. По умолчанию SELinux-диапазон для пользователя SELinux принимает значение s0.
+.TP
+.I \-p PROTO, \-\-proto PROTO
+
+Протокол для указанного порта (tcp|udp) или версия протокола Интернета для указанного узла (ipv4|ipv6).
+
+.SH "АВТОРЫ"
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>
diff --git a/python/semanage/ru/semanage-permissive.8 b/python/semanage/ru/semanage-permissive.8
new file mode 100644
index 00000000..2fe8e013
--- /dev/null
+++ b/python/semanage/ru/semanage-permissive.8
@@ -0,0 +1,47 @@
+.TH "semanage-permissive" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-permissive \- утилита разрешительного сопоставления для управления политикой SELinux
+.SH "ОБЗОР"
+.B semanage permissive [\-h] (\-a | \-d | \-l) [\-n] [\-N] [\-S STORE] [type]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Утилита semanage permissive позволяет добавить или удалить разрешительный модуль политики SELinux.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-a, \-\-add
+добавить запись указанного типа объекта
+.TP
+.I \-d, \-\-delete
+удалить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+
+.SH ПРИМЕР
+.nf
+Вывести список всех разрешительных модулей
+# semanage permissive \-l
+Сделать httpd_t (веб-сервер) разрешительным доменом
+# semanage permissive \-a httpd_t
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-port.8 b/python/semanage/ru/semanage-port.8
new file mode 100644
index 00000000..d0143466
--- /dev/null
+++ b/python/semanage/ru/semanage-port.8
@@ -0,0 +1,69 @@
+.TH "semanage-port" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-port \- средство сопоставления портов для управления политикой SELinux
+.SH "ОБЗОР"
+.B semanage port [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add \-t TYPE \-p PROTOCOL \-r RANGE port_name | port_range | \-\-delete \-p PROTOCOL port_name | port_range | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify \-t TYPE \-p PROTOCOL \-r RANGE port_name | port_range ]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage port управляет определениями типов портов для номеров портов.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+.TP
+.I \-a, \-\-add
+добавить запись указанного типа объекта
+.TP
+.I \-d, \-\-delete
+удалить запись указанного типа объекта
+.TP
+.I \-m, \-\-modify
+изменить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-D, \-\-deleteall
+удалить все локальные настройки
+.TP
+.I \-t TYPE, \-\-type TYPE
+SELinux-тип для объекта
+.TP
+.I \-r RANGE, \-\-range RANGE
+диапазон безопасности MLS/MCS (только для систем с поддержкой MLS/MCS). По умолчанию SELinux-диапазон для сопоставления имени входа SELinux принимает значение диапазона записи пользователя SELinux. По умолчанию SELinux-диапазон для пользователя SELinux принимает значение s0.
+.TP
+.I \-p PROTO, \-\-proto PROTO
+Протокол для указанного порта (tcp|udp) или версия протокола Интернета для указанного узла (ipv4|ipv6).
+
+.SH ПРИМЕР
+.nf
+Вывести список всех определений портов
+# semanage port \-l
+Разрешить Apache прослушивать tcp-порт 81
+# semanage port \-a \-t http_port_t \-p tcp 81
+Разрешить sshd прослушивать tcp-порт 8991
+# semanage port \-a \-t ssh_port_t \-p tcp 8991
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage-user.8 b/python/semanage/ru/semanage-user.8
new file mode 100644
index 00000000..06e3fa8a
--- /dev/null
+++ b/python/semanage/ru/semanage-user.8
@@ -0,0 +1,70 @@
+.TH "semanage-user" "8" "20130617" "" ""
+.SH "ИМЯ"
+.B semanage\-user \- утилита для управления политикой SELinux, предназначенная для сопоставления пользователей
+.SH "ОБЗОР"
+.B semanage user [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add ( \-L LEVEL \-R ROLES \-r RANGE SEUSER) | \-\-delete SEUSER | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify ( \-L LEVEL \-R ROLES \-r RANGE SEUSER ) ]
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Команда semanage user управляет сопоставлением пользователей SELinux с ролями и уровнями MLS/MCS.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать это справочное сообщение и выйти
+.TP
+.I \-n, \-\-noheading
+не показывать заголовок при выводе указанного типа объекта
+.TP
+.I \-N, \-\-noreload
+не перезагружать политику после фиксации
+.TP
+.I \-S STORE, \-\-store STORE
+выбрать для управления альтернативное хранилище политики SELinux
+.TP
+.I \-C, \-\-locallist
+вывести список локальных настроек
+.TP
+.I \-a, \-\-add
+добавить запись указанного типа объекта
+.TP
+.I \-d, \-\-delete
+удалить запись указанного типа объекта
+.TP
+.I \-m, \-\-modify
+изменить запись указанного типа объекта
+.TP
+.I \-l, \-\-list
+вывести список записей указанного типа объекта
+.TP
+.I \-E, \-\-extract
+извлечь настраиваемые команды для использования в транзакции
+.TP
+.I \-D, \-\-deleteall
+удалить все локальные настройки
+.TP
+.I \-L LEVEL, \-\-level LEVEL
+уровень SELinux по умолчанию для пользователя SELinux, s0 (только для систем с поддержкой MLS/MCS)
+.TP
+.I \-r RANGE, \-\-range RANGE
+диапазон безопасности MLS/MCS (только для систем с поддержкой MLS/MCS). По умолчанию SELinux-диапазон для сопоставления имени входа SELinux принимает значение диапазона записи пользователя SELinux. По умолчанию SELinux-диапазон для пользователя SELinux принимает значение s0.
+.TP
+.I \-R [ROLES], \-\-roles [ROLES]
+роли SELinux. Если ролей несколько, их необходимо перечислить через пробелы и заключить этот перечень в кавычки. Или можно несколько раз указать \-R.
+
+.SH ПРИМЕР
+.nf
+Вывести список пользователей SELinux
+# semanage user \-l
+Изменить группы для пользователя staff_u
+# semanage user \-m \-R "system_r unconfined_r staff_r" staff_u
+Добавить уровень для пользователей TopSecret
+# semanage user \-a \-R "staff_r" \-rs0\-TopSecret topsecret_u
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage (8),
+.BR semanage\-login (8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/ru/semanage.8 b/python/semanage/ru/semanage.8
new file mode 100644
index 00000000..85d8e24f
--- /dev/null
+++ b/python/semanage/ru/semanage.8
@@ -0,0 +1,84 @@
+.TH "semanage" "8" "20100223" "" ""
+.SH "ИМЯ"
+semanage \- средство управления политикой SELinux
+
+.SH "ОБЗОР"
+.B semanage {import,export,login,user,port,interface,module,node,fcontext,boolean,permissive,dontaudit,ibpkey,ibendport}
+ ...
+.B позиционные аргументы:
+
+.B import
+Импортировать локальные настройки
+
+.B export
+Экспортировать локальные настройки
+
+.B login
+Управлять сопоставлениями имён входа между пользователями Linux и ограниченными пользователями SELinux
+
+.B user
+Управлять ограниченными пользователями SELinux (роли и уровни для пользователя SELinux)
+
+.B port
+Управлять определениями типов сетевых портов
+
+.B interface
+Управлять определениями типов сетевых интерфейсов
+
+.B module
+Управлять модулями политики SELinux
+
+.B node
+Управлять определениями типов сетевых узлов
+
+.B fcontext
+Управлять определениями соответствий контекстов файлов
+
+.B boolean
+Управлять логическими переключателями для избирательного включения функциональности
+
+.B permissive
+Управлять режимом принудительного назначения типов процессов
+
+.B dontaudit
+Отключить/Включить правила dontaudit в политике
+
+.B ibpkey
+Управлять определениями типов ключей разделов infiniband
+
+.B ibendport
+Управлять определениями типов конечных портов infiniband
+
+.SH "ОПИСАНИЕ"
+semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Это включает сопоставление имён пользователей Linux с пользователями SELinux (что управляет исходным контекстом безопасности, который присваивается пользователям Linux при их входе в систему, и ограничивает доступный им набор ролей). Также это включает сопоставление контекстов безопасности для различных видов объектов, таких как сетевые порты, интерфейсы, ключи разделов (pkeys) и конечные порты (endports) infiniband, сетевые узлы (хосты), а также сопоставление контекстов файлов. В разделе ПРИМЕРЫ приведены примеры обычного использования этой утилиты. Обратите внимание, что при вызове команды semanage login пользователи Linux (logins) сопоставляются с пользователями SELinux, а при вызове команды semanage user пользователи SELinux сопоставляются с доступными наборами ролей. В большинстве случаев администратору требуется настроить только первый тип сопоставлений; второй тип сопоставлений определяется базовой политикой и обычно не требует изменения.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+Вывести справочную информацию
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR selinux (8),
+.BR semanage-boolean (8),
+.BR semanage-dontaudit (8),
+.BR semanage-export (8),
+.BR semanage-fcontext (8),
+.BR semanage-import (8),
+.BR semanage-interface (8),
+.BR semanage-login (8),
+.BR semanage-module (8),
+.BR semanage-node (8),
+.BR semanage-permissive (8),
+.BR semanage-port (8),
+.BR semanage-user (8)
+.BR semanage-ibkey (8),
+.BR semanage-ibendport (8),
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>
+.br
+и Russell Coker <rcoker@redhat.com>.
+.br
+Примеры подготовлены Thomas Bleher <ThomasBleher@gmx.de>.
+usage: semanage [\-h]
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/semanage/semanage b/python/semanage/semanage
index 49add51e..4b544bfc 100644
--- a/python/semanage/semanage
+++ b/python/semanage/semanage
@@ -109,7 +109,7 @@ class SetExportFile(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
if values:
- if values is not "-":
+ if values != "-":
try:
sys.stdout = open(values, 'w')
except:
@@ -121,7 +121,7 @@ class SetExportFile(argparse.Action):
class SetImportFile(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
- if values and values is not "-":
+ if values and values != "-":
try:
sys.stdin = open(values, 'r')
except IOError as e:
@@ -189,17 +189,17 @@ def handleLogin(args):
OBJECT = object_dict['login'](args)
- if args.action is "add":
+ if args.action == "add":
OBJECT.add(args.login, args.seuser, args.range)
- if args.action is "modify":
+ if args.action == "modify":
OBJECT.modify(args.login, args.seuser, args.range)
- if args.action is "delete":
+ if args.action == "delete":
OBJECT.delete(args.login)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("login %s" % (str(i)))
@@ -322,26 +322,26 @@ def handleFcontext(args):
OBJECT = object_dict['fcontext'](args)
- if args.action is "add":
+ if args.action == "add":
if args.equal:
OBJECT.add_equal(args.file_spec, args.equal)
else:
OBJECT.add(args.file_spec, args.type, args.ftype, args.range, args.seuser)
- if args.action is "modify":
+ if args.action == "modify":
if args.equal:
OBJECT.add_equal(args.file_spec, args.equal)
else:
OBJECT.modify(args.file_spec, args.type, args.ftype, args.range, args.seuser)
- if args.action is "delete":
+ if args.action == "delete":
if args.equal:
OBJECT.delete(args.file_spec, args.equal)
else:
OBJECT.delete(args.file_spec, args.ftype)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("fcontext %s" % str(i))
@@ -390,17 +390,17 @@ def handleUser(args):
OBJECT = object_dict['user'](args)
- if args.action is "add":
+ if args.action == "add":
OBJECT.add(args.selinux_name, args.roles, args.level, args.range, args.prefix)
- if args.action is "modify":
+ if args.action == "modify":
OBJECT.modify(args.selinux_name, args.roles, args.level, args.range, args.prefix)
- if args.action is "delete":
+ if args.action == "delete":
OBJECT.delete(args.selinux_name)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("user %s" % str(i))
@@ -440,17 +440,17 @@ def handlePort(args):
OBJECT = object_dict['port'](args)
- if args.action is "add":
+ if args.action == "add":
OBJECT.add(args.port, args.proto, args.range, args.type)
- if args.action is "modify":
+ if args.action == "modify":
OBJECT.modify(args.port, args.proto, args.range, args.type)
- if args.action is "delete":
+ if args.action == "delete":
OBJECT.delete(args.port, args.proto)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("port %s" % str(i))
@@ -485,17 +485,17 @@ def handlePkey(args):
OBJECT = object_dict['ibpkey'](args)
- if args.action is "add":
+ if args.action == "add":
OBJECT.add(args.ibpkey, args.subnet_prefix, args.range, args.type)
- if args.action is "modify":
+ if args.action == "modify":
OBJECT.modify(args.ibpkey, args.subnet_prefix, args.range, args.type)
- if args.action is "delete":
+ if args.action == "delete":
OBJECT.delete(args.ibpkey, args.subnet_prefix)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("ibpkey %s" % str(i))
@@ -528,17 +528,17 @@ def handleIbendport(args):
OBJECT = object_dict['ibendport'](args)
- if args.action is "add":
+ if args.action == "add":
OBJECT.add(args.ibendport, args.ibdev_name, args.range, args.type)
- if args.action is "modify":
+ if args.action == "modify":
OBJECT.modify(args.ibendport, args.ibdev_name, args.range, args.type)
- if args.action is "delete":
+ if args.action == "delete":
OBJECT.delete(args.ibendport, args.ibdev_name)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("ibendport %s" % str(i))
@@ -571,17 +571,17 @@ def handleInterface(args):
OBJECT = object_dict['interface'](args)
- if args.action is "add":
+ if args.action == "add":
OBJECT.add(args.interface, args.range, args.type)
- if args.action is "modify":
+ if args.action == "modify":
OBJECT.modify(args.interface, args.range, args.type)
- if args.action is "delete":
+ if args.action == "delete":
OBJECT.delete(args.interface)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("interface %s" % str(i))
@@ -617,11 +617,11 @@ def handleModule(args):
OBJECT.set_enabled(args.module_name, False)
if args.action == "remove":
OBJECT.delete(args.module_name, args.priority)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("module %s" % str(i))
@@ -652,17 +652,17 @@ def handleNode(args):
OBJECT = object_dict['node'](args)
- if args.action is "add":
+ if args.action == "add":
OBJECT.add(args.node, args.netmask, args.proto, args.range, args.type)
- if args.action is "modify":
+ if args.action == "modify":
OBJECT.modify(args.node, args.netmask, args.proto, args.range, args.type)
- if args.action is "delete":
+ if args.action == "delete":
OBJECT.delete(args.node, args.netmask, args.proto)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("node %s" % str(i))
@@ -698,14 +698,14 @@ def handleBoolean(args):
OBJECT = object_dict['boolean'](args)
- if args.action is "modify":
+ if args.action == "modify":
if args.boolean:
OBJECT.modify(args.boolean, args.state, False)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading, args.locallist)
- if args.action is "deleteall":
+ if args.action == "deleteall":
OBJECT.deleteall()
- if args.action is "extract":
+ if args.action == "extract":
for i in OBJECT.customized():
print("boolean %s" % str(i))
@@ -736,17 +736,15 @@ def setupBooleanParser(subparsers):
def handlePermissive(args):
OBJECT = object_dict['permissive'](args)
- if args.action is "list":
+ if args.action == "list":
OBJECT.list(args.noheading)
elif args.type is not None:
- if args.action is "add":
+ if args.action == "add":
OBJECT.add(args.type)
- if args.action is "delete":
+ if args.action == "delete":
OBJECT.delete(args.type)
else:
- args.parser.print_usage(sys.stderr)
- sys.stderr.write(_('semanage permissive: error: the following argument is required: type\n'))
- sys.exit(1)
+ args.parser.error(message=_('semanage permissive: error: the following argument is required: type\n'))
def setupPermissiveParser(subparsers):
diff --git a/python/semanage/semanage.8 b/python/semanage/semanage.8
index 0bdb90f4..0cdcfccd 100644
--- a/python/semanage/semanage.8
+++ b/python/semanage/semanage.8
@@ -57,9 +57,8 @@ to SELinux user identities (which controls the initial security context
assigned to Linux users when they login and bounds their authorized role set)
as well as security context mappings for various kinds of objects, such
as network ports, interfaces, infiniband pkeys and endports, and nodes (hosts)
-as well as the file context mapping. See the EXAMPLES section below for some
-examples of common usage. Note that the semanage login command deals with the
-mapping from Linux usernames (logins) to SELinux user identities,
+as well as the file context mapping. Note that the semanage login command deals
+with the mapping from Linux usernames (logins) to SELinux user identities,
while the semanage user command deals with the mapping from SELinux
user identities to authorized role sets. In most cases, only the
former mapping needs to be adjusted by the administrator; the latter
diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py
index 556d3ba5..b31a90c1 100644
--- a/python/semanage/seobject.py
+++ b/python/semanage/seobject.py
@@ -2807,7 +2807,7 @@ class booleanRecords(semanageRecords):
value = []
name = semanage_bool_get_name(boolean)
value.append(semanage_bool_get_value(boolean))
- if self.modify_local and boolean in self.current_booleans:
+ if self.modify_local and name in self.current_booleans:
value.append(selinux.security_get_boolean_pending(name))
value.append(selinux.security_get_boolean_active(name))
else:
@@ -2849,4 +2849,4 @@ class booleanRecords(semanageRecords):
print("%-30s %s %s %s\n" % (_("SELinux boolean"), _("State"), _("Default"), _("Description")))
for k in sorted(ddict.keys()):
if ddict[k]:
- print("%-30s (%-5s,%5s) %s" % (k, on_off[selinux.security_get_boolean_active(k)], on_off[ddict[k][2]], self.get_desc(k)))
+ print("%-30s (%-5s,%5s) %s" % (k, on_off[ddict[k][2]], on_off[ddict[k][0]], self.get_desc(k)))
diff --git a/python/sepolgen/src/sepolgen/defaults.py b/python/sepolgen/src/sepolgen/defaults.py
index 533a9041..6e800695 100644
--- a/python/sepolgen/src/sepolgen/defaults.py
+++ b/python/sepolgen/src/sepolgen/defaults.py
@@ -70,7 +70,10 @@ def attribute_info():
def refpolicy_makefile():
chooser = PathChooser("/etc/selinux/sepolgen.conf")
- return chooser("Makefile")
+ result = chooser("Makefile")
+ if not os.path.exists(result):
+ result = chooser("include/Makefile")
+ return result
def headers():
chooser = PathChooser("/etc/selinux/sepolgen.conf")
diff --git a/python/sepolgen/src/sepolgen/output.py b/python/sepolgen/src/sepolgen/output.py
index 7a83aee4..3a21b64c 100644
--- a/python/sepolgen/src/sepolgen/output.py
+++ b/python/sepolgen/src/sepolgen/output.py
@@ -74,13 +74,13 @@ def id_set_cmp(x, y):
# Compare two avrules
def avrule_cmp(a, b):
ret = id_set_cmp(a.src_types, b.src_types)
- if ret is not 0:
+ if ret != 0:
return ret
ret = id_set_cmp(a.tgt_types, b.tgt_types)
- if ret is not 0:
+ if ret != 0:
return ret
ret = id_set_cmp(a.obj_classes, b.obj_classes)
- if ret is not 0:
+ if ret != 0:
return ret
# At this point, who cares - just return something
diff --git a/python/sepolgen/src/sepolgen/refparser.py b/python/sepolgen/src/sepolgen/refparser.py
index 9fb93182..f506dc3a 100644
--- a/python/sepolgen/src/sepolgen/refparser.py
+++ b/python/sepolgen/src/sepolgen/refparser.py
@@ -1044,7 +1044,7 @@ def list_headers(root):
if name == "obj_perm_sets.spt":
support_macros = filename
elif len(re.findall("patterns", modname[0])):
- modules.append((modname[0], filename))
+ modules.append((modname[0], filename))
elif modname[1] == '.if':
modules.append((modname[0], filename))
diff --git a/python/sepolgen/src/sepolgen/yacc.py b/python/sepolgen/src/sepolgen/yacc.py
index 88188a1e..55c1ef7d 100644
--- a/python/sepolgen/src/sepolgen/yacc.py
+++ b/python/sepolgen/src/sepolgen/yacc.py
@@ -2566,118 +2566,118 @@ class LRGeneratedTable(LRTable):
log.info('')
for p in I:
- if p.len == p.lr_index + 1:
- if p.name == "S'":
- # Start symbol. Accept!
- st_action['$end'] = 0
- st_actionp['$end'] = p
+ if p.len == p.lr_index + 1:
+ if p.name == "S'":
+ # Start symbol. Accept!
+ st_action['$end'] = 0
+ st_actionp['$end'] = p
+ else:
+ # We are at the end of a production. Reduce!
+ if self.lr_method == 'LALR':
+ laheads = p.lookaheads[st]
else:
- # We are at the end of a production. Reduce!
- if self.lr_method == 'LALR':
- laheads = p.lookaheads[st]
- else:
- laheads = self.grammar.Follow[p.name]
- for a in laheads:
- actlist.append((a, p, 'reduce using rule %d (%s)' % (p.number, p)))
- r = st_action.get(a)
- if r is not None:
- # Whoa. Have a shift/reduce or reduce/reduce conflict
- if r > 0:
- # Need to decide on shift or reduce here
- # By default we favor shifting. Need to add
- # some precedence rules here.
-
- # Shift precedence comes from the token
- sprec, slevel = Precedence.get(a, ('right', 0))
-
- # Reduce precedence comes from rule being reduced (p)
- rprec, rlevel = Productions[p.number].prec
-
- if (slevel < rlevel) or ((slevel == rlevel) and (rprec == 'left')):
- # We really need to reduce here.
- st_action[a] = -p.number
- st_actionp[a] = p
- if not slevel and not rlevel:
- log.info(' ! shift/reduce conflict for %s resolved as reduce', a)
- self.sr_conflicts.append((st, a, 'reduce'))
- Productions[p.number].reduced += 1
- elif (slevel == rlevel) and (rprec == 'nonassoc'):
- st_action[a] = None
- else:
- # Hmmm. Guess we'll keep the shift
- if not rlevel:
- log.info(' ! shift/reduce conflict for %s resolved as shift', a)
- self.sr_conflicts.append((st, a, 'shift'))
- elif r < 0:
- # Reduce/reduce conflict. In this case, we favor the rule
- # that was defined first in the grammar file
- oldp = Productions[-r]
- pp = Productions[p.number]
- if oldp.line > pp.line:
- st_action[a] = -p.number
- st_actionp[a] = p
- chosenp, rejectp = pp, oldp
- Productions[p.number].reduced += 1
- Productions[oldp.number].reduced -= 1
- else:
- chosenp, rejectp = oldp, pp
- self.rr_conflicts.append((st, chosenp, rejectp))
- log.info(' ! reduce/reduce conflict for %s resolved using rule %d (%s)',
- a, st_actionp[a].number, st_actionp[a])
+ laheads = self.grammar.Follow[p.name]
+ for a in laheads:
+ actlist.append((a, p, 'reduce using rule %d (%s)' % (p.number, p)))
+ r = st_action.get(a)
+ if r is not None:
+ # Whoa. Have a shift/reduce or reduce/reduce conflict
+ if r > 0:
+ # Need to decide on shift or reduce here
+ # By default we favor shifting. Need to add
+ # some precedence rules here.
+
+ # Shift precedence comes from the token
+ sprec, slevel = Precedence.get(a, ('right', 0))
+
+ # Reduce precedence comes from rule being reduced (p)
+ rprec, rlevel = Productions[p.number].prec
+
+ if (slevel < rlevel) or ((slevel == rlevel) and (rprec == 'left')):
+ # We really need to reduce here.
+ st_action[a] = -p.number
+ st_actionp[a] = p
+ if not slevel and not rlevel:
+ log.info(' ! shift/reduce conflict for %s resolved as reduce', a)
+ self.sr_conflicts.append((st, a, 'reduce'))
+ Productions[p.number].reduced += 1
+ elif (slevel == rlevel) and (rprec == 'nonassoc'):
+ st_action[a] = None
+ else:
+ # Hmmm. Guess we'll keep the shift
+ if not rlevel:
+ log.info(' ! shift/reduce conflict for %s resolved as shift', a)
+ self.sr_conflicts.append((st, a, 'shift'))
+ elif r < 0:
+ # Reduce/reduce conflict. In this case, we favor the rule
+ # that was defined first in the grammar file
+ oldp = Productions[-r]
+ pp = Productions[p.number]
+ if oldp.line > pp.line:
+ st_action[a] = -p.number
+ st_actionp[a] = p
+ chosenp, rejectp = pp, oldp
+ Productions[p.number].reduced += 1
+ Productions[oldp.number].reduced -= 1
else:
- raise LALRError('Unknown conflict in state %d' % st)
+ chosenp, rejectp = oldp, pp
+ self.rr_conflicts.append((st, chosenp, rejectp))
+ log.info(' ! reduce/reduce conflict for %s resolved using rule %d (%s)',
+ a, st_actionp[a].number, st_actionp[a])
else:
- st_action[a] = -p.number
- st_actionp[a] = p
- Productions[p.number].reduced += 1
- else:
- i = p.lr_index
- a = p.prod[i+1] # Get symbol right after the "."
- if a in self.grammar.Terminals:
- g = self.lr0_goto(I, a)
- j = self.lr0_cidhash.get(id(g), -1)
- if j >= 0:
- # We are in a shift state
- actlist.append((a, p, 'shift and go to state %d' % j))
- r = st_action.get(a)
- if r is not None:
- # Whoa have a shift/reduce or shift/shift conflict
- if r > 0:
- if r != j:
- raise LALRError('Shift/shift conflict in state %d' % st)
- elif r < 0:
- # Do a precedence check.
- # - if precedence of reduce rule is higher, we reduce.
- # - if precedence of reduce is same and left assoc, we reduce.
- # - otherwise we shift
-
- # Shift precedence comes from the token
- sprec, slevel = Precedence.get(a, ('right', 0))
-
- # Reduce precedence comes from the rule that could have been reduced
- rprec, rlevel = Productions[st_actionp[a].number].prec
-
- if (slevel > rlevel) or ((slevel == rlevel) and (rprec == 'right')):
- # We decide to shift here... highest precedence to shift
- Productions[st_actionp[a].number].reduced -= 1
- st_action[a] = j
- st_actionp[a] = p
- if not rlevel:
- log.info(' ! shift/reduce conflict for %s resolved as shift', a)
- self.sr_conflicts.append((st, a, 'shift'))
- elif (slevel == rlevel) and (rprec == 'nonassoc'):
- st_action[a] = None
- else:
- # Hmmm. Guess we'll keep the reduce
- if not slevel and not rlevel:
- log.info(' ! shift/reduce conflict for %s resolved as reduce', a)
- self.sr_conflicts.append((st, a, 'reduce'))
-
+ raise LALRError('Unknown conflict in state %d' % st)
+ else:
+ st_action[a] = -p.number
+ st_actionp[a] = p
+ Productions[p.number].reduced += 1
+ else:
+ i = p.lr_index
+ a = p.prod[i+1] # Get symbol right after the "."
+ if a in self.grammar.Terminals:
+ g = self.lr0_goto(I, a)
+ j = self.lr0_cidhash.get(id(g), -1)
+ if j >= 0:
+ # We are in a shift state
+ actlist.append((a, p, 'shift and go to state %d' % j))
+ r = st_action.get(a)
+ if r is not None:
+ # Whoa have a shift/reduce or shift/shift conflict
+ if r > 0:
+ if r != j:
+ raise LALRError('Shift/shift conflict in state %d' % st)
+ elif r < 0:
+ # Do a precedence check.
+ # - if precedence of reduce rule is higher, we reduce.
+ # - if precedence of reduce is same and left assoc, we reduce.
+ # - otherwise we shift
+
+ # Shift precedence comes from the token
+ sprec, slevel = Precedence.get(a, ('right', 0))
+
+ # Reduce precedence comes from the rule that could have been reduced
+ rprec, rlevel = Productions[st_actionp[a].number].prec
+
+ if (slevel > rlevel) or ((slevel == rlevel) and (rprec == 'right')):
+ # We decide to shift here... highest precedence to shift
+ Productions[st_actionp[a].number].reduced -= 1
+ st_action[a] = j
+ st_actionp[a] = p
+ if not rlevel:
+ log.info(' ! shift/reduce conflict for %s resolved as shift', a)
+ self.sr_conflicts.append((st, a, 'shift'))
+ elif (slevel == rlevel) and (rprec == 'nonassoc'):
+ st_action[a] = None
else:
- raise LALRError('Unknown conflict in state %d' % st)
+ # Hmmm. Guess we'll keep the reduce
+ if not slevel and not rlevel:
+ log.info(' ! shift/reduce conflict for %s resolved as reduce', a)
+ self.sr_conflicts.append((st, a, 'reduce'))
+
else:
- st_action[a] = j
- st_actionp[a] = p
+ raise LALRError('Unknown conflict in state %d' % st)
+ else:
+ st_action[a] = j
+ st_actionp[a] = p
# Print the actions associated with each terminal
_actprint = {}
diff --git a/python/sepolicy/Makefile b/python/sepolicy/Makefile
index fb8a1325..7ed039bc 100644
--- a/python/sepolicy/Makefile
+++ b/python/sepolicy/Makefile
@@ -1,6 +1,7 @@
PYTHON ?= python
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -32,6 +33,12 @@ install:
(cd $(DESTDIR)$(BINDIR); ln -sf sepolicy sepolgen)
-mkdir -p $(DESTDIR)$(MANDIR)/man8
install -m 644 *.8 $(DESTDIR)$(MANDIR)/man8
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
-mkdir -p $(DESTDIR)$(BASHCOMPLETIONDIR)
install -m 644 $(BASHCOMPLETIONS) $(DESTDIR)$(BASHCOMPLETIONDIR)/sepolicy
diff --git a/python/sepolicy/ru/sepolgen.8 b/python/sepolicy/ru/sepolgen.8
new file mode 100644
index 00000000..3ecf3eb2
--- /dev/null
+++ b/python/sepolicy/ru/sepolgen.8
@@ -0,0 +1 @@
+.so man8/sepolicy-generate.8
diff --git a/python/sepolicy/ru/sepolicy-booleans.8 b/python/sepolicy/ru/sepolicy-booleans.8
new file mode 100644
index 00000000..0f8f8ef6
--- /dev/null
+++ b/python/sepolicy/ru/sepolicy-booleans.8
@@ -0,0 +1,29 @@
+.TH "sepolicy-booleans" "8" "20121112" "" ""
+.SH "ИМЯ"
+sepolicy-booleans \- запросить описание логических переключателей из политики SELinux
+
+.SH "ОБЗОР"
+
+.br
+.B sepolicy booleans [\-h] [ \-a | \-b booleanname ... ]
+
+.SH "ОПИСАНИЕ"
+Утилита sepolicy booleans показывает все логические переключатели и их описание (либо можно вывести описание для отдельных логических переключателей)
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+показать справочное сообщение
+.TP
+.I \-a, \-\-all
+показать все описания логических переключателей
+.TP
+.I \-b, \-\-boolean
+логический переключатель, для которого следует получить описание
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+sepolicy(8), selinux(8), getsebool(8), setsebool(8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/sepolicy/ru/sepolicy-communicate.8 b/python/sepolicy/ru/sepolicy-communicate.8
new file mode 100644
index 00000000..3a8c535c
--- /dev/null
+++ b/python/sepolicy/ru/sepolicy-communicate.8
@@ -0,0 +1,40 @@
+.TH "sepolicy-communicate" "8" "20121005" "" ""
+.SH "ИМЯ"
+sepolicy-communicate \- создать отчёт, который покажет, могут ли связываться два домена политики SELinux
+
+.SH "ОБЗОР"
+
+.br
+.B sepolicy communicate [\-h] \-s SOURCE \-t TARGET [\-c TCLASS] [\-S SOURCEACCESS] [\-T TARGETACCESS]
+
+.SH "ОПИСАНИЕ"
+Команда sepolicy communicate позволяет проанализировать политику SELinux, чтобы узнать, может ли исходный домен SELinux связываться с целевым доменом SELinux.
+Команда по умолчанию проверяет, имеются ли какие-либо типы файлов, которые может записывать исходный домен и читать целевой домен.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-c, \-\-class
+Указать класс SELinux, который исходный домен попытается использовать для связи с целевым доменом. По умолчанию: file.
+.TP
+.I \-h, \-\-help
+Показать справочное сообщение
+.TP
+.I \-s, \-\-source
+Указать тип исходного домена SELinux
+.TP
+.I \-S, \-\-sourceaccess
+Указать список доступов, используемых типом исходного домена SELinux для связи с целевым доменом. По умолчанию: Open, Write.
+.TP
+.I \-t, \-\-target
+Указать тип целевого домена SELinux
+.TP
+.I \-T, \-\-targetaccess
+Указать список доступов, используемых типом целевого домена SELinux для получения обращений от исходного домена. По умолчанию: Open, Read.
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+sepolicy(8), selinux(8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
+
diff --git a/python/sepolicy/ru/sepolicy-generate.8 b/python/sepolicy/ru/sepolicy-generate.8
new file mode 100644
index 00000000..d2e98861
--- /dev/null
+++ b/python/sepolicy/ru/sepolicy-generate.8
@@ -0,0 +1,173 @@
+.TH "sepolicy-generate" "8" "20121005" "" ""
+.SH "ИМЯ"
+sepolicy-generate \- создать исходный шаблон модуля политики SELinux.
+
+.SH "ОБЗОР"
+
+Общие параметры
+
+.B sepolicy generate [\-h ] [\-p PATH]
+
+.br
+
+Ограниченные приложения
+
+.br
+.B sepolicy generate \-\-application [\-n NAME] [\-u USER ]command [\-w WRITE_PATH ]
+.br
+.B sepolicy generate \-\-cgi [\-n NAME] command [\-w WRITE_PATH ]
+.br
+.B sepolicy generate \-\-dbus [\-n NAME] command [\-w WRITE_PATH ]
+.br
+.B sepolicy generate \-\-inetd [\-n NAME] command [\-w WRITE_PATH ]
+.br
+.B sepolicy generate \-\-init [\-n NAME] command [\-w WRITE_PATH ]
+
+Ограниченные пользователи
+
+.br
+.B sepolicy generate \-\-admin_user [\-r TRANSITION_ROLE] \-n NAME
+.br
+.B sepolicy generate \-\-confined_admin \-n NAME [\-a ADMIN_DOMAIN] [\-u USER] [\-n NAME] [\-w WRITE_PATH]
+.br
+.B sepolicy generate \-\-desktop_user \-n NAME [\-w WRITE_PATH]
+.br
+.B sepolicy generate \-\-term_user \-n NAME [\-w WRITE_PATH]
+.br
+.B sepolicy generate \-\-x_user \-n NAME [\-w WRITE_PATH]
+.br
+
+Разное
+
+.br
+.B sepolicy generate \-\-customize \-d DOMAIN \-n NAME [\-a ADMIN_DOMAIN]
+.br
+.B sepolicy generate \-\-newtype \-t type \-n NAME
+.br
+.B sepolicy generate \-\-sandbox \-n NAME
+
+.SH "ОПИСАНИЕ"
+Используйте команду \fBsepolicy generate\fP для создания модуля политики SELinux.
+
+.br
+\fBsepolicy generate\fP создаст 5 файлов.
+
+При указании \fBconfined application\fP необходимо указать путь. Команда \fBsepolicy generate\fP будет использовать полезную нагрузку rpm-пакета приложения вместе с \fBnm \-D APPLICATION\fP, чтобы создать типы и правила политики для ваших файлов политики.
+
+.B Файл принудительного назначения типов NAME.te
+.br
+Этот файл можно использовать, чтобы определить для конкретного домена все правила типов.
+
+.I Примечание:
+Политика, созданная с помощью команды \fBsepolicy generate\fP, автоматически добавит разрешительный домен (DOMAIN) в ваш файл .te. Когда вы закончите настройку политики, из файла .te будет необходимо удалить разрешительную строку, чтобы запустить домен в принудительном режиме.
+
+.B Файл интерфейсов NAME.if
+.br
+Этот файл определяет интерфейсы для созданных в файле .te типов, которые могут использоваться другими доменами политики.
+
+.B Контексты файлов NAME.fc
+.br
+Этот файл определяет контексты файлов по умолчанию для системы; он берёт типы файлов, созданные в файле .te, и связывает пути файлов с этими типами. Такие утилиты, как restorecon и RPM, будут использовать эти пути для проставления меток.
+
+.B Файл спецификации RPM NAME_selinux.spec
+.br
+Этот файл - файл СПЕЦИФИКАЦИИ, который можно использовать для установки политики SELinux на компьютеры и настройки проставления меток. Файл спецификации также устанавливает файл интерфейсов и man-страницу с описанием политики. Для создания man-страницы можно использовать команду \fBsepolicy manpage \-d NAME\fP.
+
+.B Файл оболочки NAME.sh
+.br
+Это вспомогательный сценарий оболочки для компиляции, установки и исправления меток в тестовой системе. Он также создаёт man-страницу на основе установленной политики, компилирует и собирает RPM, который подходит для установки на других компьютерах.
+
+Если создание возможно, эта утилита выведет на экран все пути создания из исходного домена в целевой домен
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+Показать справочное сообщение
+.TP
+.I \-d, \-\-domain
+Ввести тип домена, который будет расширен
+.TP
+.I \-n, \-\-name
+Указать альтернативное имя политики. По умолчанию: указанный исполняемый файл или имя.
+.TP
+.I \-p, \-\-path
+Указать каталог для сохранения созданных файлов политики. По умолчанию: текущий рабочий каталог.
+Необязательные аргументы:
+.TP
+.I \-r, \-\-role
+Ввести роль (роли), в которую перейдёт этот администратор
+.TP
+.I \-t, \-\-type
+Ввести тип (типы), для которого создаётся новое определение и правило (правила)
+.TP
+.I \-u, \-\-user
+Пользователь (пользователи) SELinux, который перейдёт в этот домен
+.TP
+.I \-w, \-\-writepath
+Путь (пути), который требуется для записи ограниченным процессам
+.TP
+.I \-a, \-\-admin
+Домен (домены), который будет администрировать ограниченный администратор
+.TP
+.I \-\-admin_user
+Создать политику для роли авторизации администратора
+.TP
+.I \-\-application
+Создать политику для приложения пользователя
+.TP
+.I \-\-cgi
+Создать политику для веб-приложения/сценария (CGI)
+.TP
+.I \-\-confined_admin
+Создать политику для роли ограниченного администратора root
+.TP
+.I \-\-customize
+Создать политику для типа существующего домена
+.TP
+.I \-\-dbus
+Создать политику для системной внутренней службы DBUS
+.TP
+.I \-\-desktop_user
+Создать политику для роли авторизации на рабочем столе
+.TP
+.I \-\-inetd
+Создать политику для внутренней службы Интернет-служб
+.TP
+.I \-\-init
+Создать политику для стандартной внутренней службы init (по умолчанию)
+.TP
+.I \-\-newtype
+Создать политику для новых типов, которые будут добавлены в существующую политику.
+.TP
+.I \-\-sandbox
+Создать политику для изолированной среды
+.TP
+.I \-\-term_user
+Создать политику для минимальной роли авторизации пользователя терминала
+.TP
+.I \-\-x_user
+Создать политику для минимальной роли авторизации пользователя X Windows
+
+.SH "ПРИМЕР"
+.B > sepolicy generate --init /usr/sbin/rwhod
+.br
+Создание политики для /usr/sbin/rwhod с именем rwhod
+.br
+Созданы следующие файлы:
+.br
+rwhod.te # файл принудительного присвоения типов
+.br
+rwhod.if # файл интерфейсов
+.br
+rwhod.fc # файл контекстов файлов
+.br
+rwhod_selinux.spec # файл спецификации
+.br
+rwhod.sh # сценарий настройки
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+sepolicy(8), selinux(8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/sepolicy/ru/sepolicy-gui.8 b/python/sepolicy/ru/sepolicy-gui.8
new file mode 100644
index 00000000..1912c58b
--- /dev/null
+++ b/python/sepolicy/ru/sepolicy-gui.8
@@ -0,0 +1,29 @@
+.TH "sepolicy-gui" "8" "20121005" "" ""
+.SH "ИМЯ"
+sepolicy-gui \- графический интерфейс пользователя политики SELinux
+
+.SH "ОБЗОР"
+
+Общие параметры
+
+.B sepolicy gui [\-h ] [ \-d DOMAIN ]
+
+.br
+
+.SH "ОПИСАНИЕ"
+Используйте утилиту \fBsepolicy gui\fP для запуска графического интерфейса пользователя, с помощью которого можно посмотреть, как SELinux ограничивает различные домены процессов.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+Показать справочное сообщение
+.TP
+.I \-d, \-\-domain
+Инициализировать для выбранного домена графический интерфейс пользователя
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+sepolicy(8), selinux(8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/sepolicy/ru/sepolicy-interface.8 b/python/sepolicy/ru/sepolicy-interface.8
new file mode 100644
index 00000000..b78a7925
--- /dev/null
+++ b/python/sepolicy/ru/sepolicy-interface.8
@@ -0,0 +1,41 @@
+.TH "sepolicy-interface" "8" "20121222" "" ""
+.SH "ИМЯ"
+sepolicy-interface \- вывести сведения об интерфейсах на основе установленной политики SELinux
+
+.SH "ОБЗОР"
+
+.br
+.B sepolicy interface [\-h] [\-c] [\-v] [\-a | \-u | \-l | \-i INTERFACE [INTERFACE ... ]]
+
+.SH "ОПИСАНИЕ"
+Используйте утилиту sepolicy interface для вывода сведений об интерфейсах на основе политики SELinux.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-a, \-\-list_admin
+Вывести список всех доменов с интерфейсом администратора
+.TP
+.I \-c, \-\-compile
+Проверить сборку интерфейсов
+.TP
+.I \-h, \-\-help
+Показать справочное сообщение
+.TP
+.I \-i, \-\-interface
+Интерфейс (интерфейсы), которые следует показать
+.TP
+.I \-l, \-\-list
+Вывести список всех интерфейсов
+.TP
+.I \-u, \-\-list_user
+Вывести список всех доменов с интерфейсом роли пользователя SELinux
+.TP
+.I \-v, \-\-verbose
+Показать расширенные сведения об интерфейсе, включая параметры и описание (если доступно).
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+sepolicy(8), selinux(8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/sepolicy/ru/sepolicy-manpage.8 b/python/sepolicy/ru/sepolicy-manpage.8
new file mode 100644
index 00000000..35d7c683
--- /dev/null
+++ b/python/sepolicy/ru/sepolicy-manpage.8
@@ -0,0 +1,38 @@
+.TH "sepolicy-manpage" "8" "20121005" "" ""
+.SH "ИМЯ"
+sepolicy-manpage \- создать man-страницу на основе установленной политики SELinux
+
+.SH "ОБЗОР"
+
+.br
+.B sepolicy manpage [\-w] [\-h] [\-p PATH ] [\-r ROOTDIR ] [\-a | \-d ]
+
+.SH "ОПИСАНИЕ"
+Используйте утилиту sepolicy manpage для создания man-страниц на основе политики SELinux.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-a, \-\-all
+Создать man-страницы для всех доменов
+.TP
+.I \-d, \-\-domain
+Создать man-страницу для указанного домена. (Поддерживает несколько команд)
+.TP
+.I \-h, \-\-help
+Показать справочное сообщение
+.TP
+.I \-p, \-\-path
+Указать каталог для сохранения созданных man-страниц. (По умолчанию: /tmp)
+.TP
+.I \-r, \-\-root
+Указать альтернативный корневой каталог для создания man-страниц. (По умолчанию: /)
+.TP
+.I \-w, \-\-web
+Создать дополнительные man-страницы в формате HTML для указанного домена (доменов).
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+sepolicy(8), selinux(8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/sepolicy/ru/sepolicy-network.8 b/python/sepolicy/ru/sepolicy-network.8
new file mode 100644
index 00000000..ba78eced
--- /dev/null
+++ b/python/sepolicy/ru/sepolicy-network.8
@@ -0,0 +1,90 @@
+.TH "sepolicy-network" "8" "20121005" "" ""
+.SH "ИМЯ"
+sepolicy-network \- проанализировать политику SELinux и создать отчёт о сети
+
+.SH "ОБЗОР"
+
+.br
+.B sepolicy network [\-h] (\-l | \-a application [application ...] | \-p PORT [PORT ...] | \-t TYPE [TYPE ...] | \-d DOMAIN [DOMAIN ...])
+
+.SH "ОПИСАНИЕ"
+Используйте команду sepolicy network для анализа политики SELinux и создания отчётов о сети.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-a, \-\-application
+Создать отчёт с перечнем портов, к которым разрешено подключение и/или привязка указанного приложения инициализации.
+.TP
+.I \-d, \-\-domain
+Создать отчёт с перечнем портов, к которым разрешено подключение и/или привязка указанного домена.
+.TP
+.I \-l, \-\-list
+Вывести список всех типов сетевых портов, определённых в политике SELinux
+.TP
+.I \-h, \-\-help
+Показать справочное сообщение
+.TP
+.I \-t, \-\-type
+Создать отчёт с перечнем номеров портов, связанных с указанным типом портов SELinux.
+.TP
+.I \-p, \-\-port
+Создать отчёт с перечнем типов портов SELinux, связанных с указанным номером порта.
+
+.SH "ПРИМЕРЫ"
+
+.B sepolicy network -p 22
+.br
+22: tcp ssh_port_t 22
+.br
+22: udp reserved_port_t 1-511
+.br
+22: tcp reserved_port_t 1-511
+
+.B sepolicy network -a /usr/sbin/sshd
+.br
+sshd_t: tcp name_connect
+.br
+ 111 (portmap_port_t)
+.br
+ 53 (dns_port_t)
+.br
+ 88, 750, 4444 (kerberos_port_t)
+.br
+ 9080 (ocsp_port_t)
+.br
+ 9180, 9701, 9443-9447 (pki_ca_port_t)
+.br
+ 32768-61000 (ephemeral_port_t)
+.br
+ all ports < 1024 (reserved_port_type)
+.br
+ all ports with out defined types (port_t)
+.br
+sshd_t: tcp name_bind
+.br
+ 22 (ssh_port_t)
+.br
+ 5900-5983, 5985-5999 (vnc_port_t)
+.br
+ 6000-6020 (xserver_port_t)
+.br
+ 32768-61000 (ephemeral_port_t)
+.br
+ all ports > 500 and < 1024 (rpc_port_type)
+.br
+ all ports with out defined types (port_t)
+.br
+sshd_t: udp name_bind
+.br
+ 32768-61000 (ephemeral_port_t)
+.br
+ all ports > 500 and < 1024 (rpc_port_type)
+.br
+ all ports with out defined types (port_t)
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+sepolicy(8), selinux(8), semanage(8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/sepolicy/ru/sepolicy-transition.8 b/python/sepolicy/ru/sepolicy-transition.8
new file mode 100644
index 00000000..77c25203
--- /dev/null
+++ b/python/sepolicy/ru/sepolicy-transition.8
@@ -0,0 +1,34 @@
+.TH "sepolicy-transition" "8" "20121005" "" ""
+.SH "ИМЯ"
+sepolicy-transition \- проанализировать политику SELinux и создать отчёт о переходах процессов
+
+.SH "ОБЗОР"
+
+.br
+.B sepolicy transition [\-h] \-s SOURCE
+
+.br
+.B sepolicy transition [\-h] \-s SOURCE \-t TARGET
+
+.SH "ОПИСАНИЕ"
+Утилита sepolicy transition покажет все домены, в которые может перейти указанный исходный домен SELinux, включая точку входа.
+
+Если указан целевой домен, команда sepolicy transition проанализирует политику на предмет наличия путей перехода из исходного домена в целевой домен и выведет список этих путей. Если переход возможен, эта утилита выведет все пути перехода из исходного домена в целевой домен.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-h, \-\-help
+Показать справочное сообщение
+.TP
+.I \-s, \-\-source
+Указать тип исходного домена SELinux
+.TP
+.I \-t, \-\-target
+Указать тип целевого домена SELinux
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+sepolicy(8), selinux(8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/sepolicy/ru/sepolicy.8 b/python/sepolicy/ru/sepolicy.8
new file mode 100644
index 00000000..1d8d3911
--- /dev/null
+++ b/python/sepolicy/ru/sepolicy.8
@@ -0,0 +1,77 @@
+.TH "sepolicy" "8" "20121005" "" ""
+.SH "ИМЯ"
+sepolicy \- утилита анализа политики SELinux
+
+.SH "ОБЗОР"
+.B sepolicy [-h] [-P policy_path ] {booleans,communicate,generate,interface,manpage,network,transition} OPTIONS
+
+.br
+Аргументы:
+.br
+
+.B booleans
+.br
+Отправить запрос к политике SELinux, чтобы просмотреть описание логических переключателей
+.B sepolicy-boolean(8)
+.br
+
+.B communicate
+.br
+Отправить запрос к политике SELinux, чтобы узнать, могут ли домены связываться друг с другом
+.B sepolicy-communicate(8)
+.br
+
+.B generate
+.br
+Создать шаблон модуля политики SELinux
+.B sepolicy-generate(8)
+.br
+
+.B gui
+.br
+Запустить графический интерфейс пользователя политики SELinux (требуется пакет policycoreutils-gui)
+.B sepolicy-gui(8)
+.br
+
+.B interface
+.br
+.br
+Вывести сведения интерфейса политики SELinux
+.B sepolicy-interface(8)
+.br
+
+.B manpage
+.br
+Создать man-страницы SELinux
+.B sepolicy-manpage(8)
+.br
+
+.B network
+.br
+Запросить сведения о сети политики SELinux
+.B sepolicy-network(8)
+.br
+
+.B transition
+.br
+Отправить запрос к политике SELinux, чтобы узнать, как исходный домен процесса может перейти в целевой домен процесса
+.B sepolicy-transition(8)
+
+.SH "ОПИСАНИЕ"
+sepolicy - это набор средств, опрашивающих установленную политику SELinux и создающих полезные отчёты, man-страницы или даже новые модули политики.
+Параметры и их описание доступны на man-страницах соответствующих аргументов.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.I \-P, \-\-policy
+Альтернативная политика для анализа. (По умолчанию: текущая установленная политика /sys/fs/selinux/policy)
+.TP
+.I \-h, \-\-help
+Показать справочное сообщение
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+selinux(8), sepolicy-booleans(8), sepolicy-communicate(8), sepolicy-generate(8),sepolicy-gui(8), sepolicy-interface(8), sepolicy-network(8), sepolicy-manpage(8), sepolicy-transition(8)
+
+.SH "АВТОРЫ"
+Эта man-страница была написана Daniel Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/python/sepolicy/sepolicy/generate.py b/python/sepolicy/sepolicy/generate.py
index 37ddfc7a..5a2195b8 100644
--- a/python/sepolicy/sepolicy/generate.py
+++ b/python/sepolicy/sepolicy/generate.py
@@ -643,7 +643,7 @@ allow %s_t %s_t:%s_socket name_%s;
def __find_path(self, file):
for d in self.DEFAULT_DIRS:
- if file.find(d) is 0:
+ if file.find(d) == 0:
self.DEFAULT_DIRS[d][1].append(file)
return self.DEFAULT_DIRS[d]
self.DEFAULT_DIRS["rw"][1].append(file)
@@ -1346,7 +1346,7 @@ allow %s_t %s_t:%s_socket name_%s;
else:
continue
- if len(temp_dirs) is not 0:
+ if len(temp_dirs) != 0:
for i in temp_dirs:
if i in self.dirs.keys():
del(self.dirs[i])
diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py
index 9d413652..d4bf3b48 100644
--- a/python/sepolicy/sepolicy/gui.py
+++ b/python/sepolicy/sepolicy/gui.py
@@ -149,6 +149,7 @@ class SELinuxGui():
self.clear_entry = True
self.files_add = False
self.network_add = False
+ self.mislabeled_files = False
self.all_domains = []
self.installed_list = []
@@ -1544,7 +1545,7 @@ class SELinuxGui():
path = self.executable_files_liststore.get_value(iter, 0)
self.files_path_entry.set_text(path)
ftype = self.executable_files_liststore.get_value(iter, 1)
- if type != None:
+ if ftype != None:
self.combo_set_active_text(self.files_type_combobox, ftype)
tclass = self.executable_files_liststore.get_value(iter, 2)
if tclass != None:
diff --git a/python/sepolicy/sepolicy/interface.py b/python/sepolicy/sepolicy/interface.py
index 18374dcf..27c37bb8 100644
--- a/python/sepolicy/sepolicy/interface.py
+++ b/python/sepolicy/sepolicy/interface.py
@@ -193,9 +193,9 @@ def get_xml_file(if_file):
""" Returns xml format of interfaces for given .if policy file"""
import os
try:
- from commands import getstatusoutput
+ from commands import getstatusoutput
except ImportError:
- from subprocess import getstatusoutput
+ from subprocess import getstatusoutput
basedir = os.path.dirname(if_file) + "/"
filename = os.path.basename(if_file).split(".")[0]
rc, output = getstatusoutput("python /usr/share/selinux/devel/include/support/segenxml.py -w -m %s" % basedir + filename)
@@ -212,9 +212,9 @@ def interface_compile_test(interface, path="/usr/share/selinux/devel/policy.xml"
exclude_interface_type = ["template"]
try:
- from commands import getstatusoutput
+ from commands import getstatusoutput
except ImportError:
- from subprocess import getstatusoutput
+ from subprocess import getstatusoutput
import os
policy_files = {'pp': "compiletest.pp", 'te': "compiletest.te", 'fc': "compiletest.fc", 'if': "compiletest.if"}
idict = get_interface_dict(path)
diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py
index cfcb7c39..af18b6ff 100755
--- a/python/sepolicy/sepolicy/manpage.py
+++ b/python/sepolicy/sepolicy/manpage.py
@@ -169,9 +169,9 @@ def get_alphabet_manpages(manpage_list):
def convert_manpage_to_html(html_manpage, manpage):
try:
- from commands import getstatusoutput
+ from commands import getstatusoutput
except ImportError:
- from subprocess import getstatusoutput
+ from subprocess import getstatusoutput
rc, output = getstatusoutput("/usr/bin/groff -man -Thtml %s 2>/dev/null" % manpage)
if rc == 0:
print(html_manpage, "has been created")
diff --git a/restorecond/Makefile b/restorecond/Makefile
index 8a0ada1f..b81f8c82 100644
--- a/restorecond/Makefile
+++ b/restorecond/Makefile
@@ -1,6 +1,7 @@
PKG_CONFIG ?= pkg-config
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SBINDIR ?= $(PREFIX)/sbin
MANDIR = $(PREFIX)/share/man
@@ -42,6 +43,12 @@ install: all
-mkdir -p $(DESTDIR)$(SBINDIR)
install -m 755 restorecond $(DESTDIR)$(SBINDIR)
install -m 644 restorecond.8 $(DESTDIR)$(MANDIR)/man8
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ [ -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
-mkdir -p $(DESTDIR)$(INITDIR)
install -m 755 restorecond.init $(DESTDIR)$(INITDIR)/restorecond
-mkdir -p $(DESTDIR)$(SELINUXDIR)
@@ -50,7 +57,7 @@ install: all
-mkdir -p $(DESTDIR)$(AUTOSTARTDIR)
install -m 644 restorecond.desktop $(DESTDIR)$(AUTOSTARTDIR)/restorecond.desktop
-mkdir -p $(DESTDIR)$(DBUSSERVICEDIR)
- install -m 600 org.selinux.Restorecond.service $(DESTDIR)$(DBUSSERVICEDIR)/org.selinux.Restorecond.service
+ install -m 644 org.selinux.Restorecond.service $(DESTDIR)$(DBUSSERVICEDIR)/org.selinux.Restorecond.service
-mkdir -p $(DESTDIR)$(SYSTEMDDIR)/system
install -m 644 restorecond.service $(DESTDIR)$(SYSTEMDDIR)/system/
relabel: install
diff --git a/restorecond/VERSION b/restorecond/VERSION
index a4412fa7..29cba064 100644
--- a/restorecond/VERSION
+++ b/restorecond/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/restorecond/ru/restorecond.8 b/restorecond/ru/restorecond.8
new file mode 100644
index 00000000..72d91199
--- /dev/null
+++ b/restorecond/ru/restorecond.8
@@ -0,0 +1,41 @@
+.TH "restorecond" "8" "2002031409" "" ""
+.SH "ИМЯ"
+restorecond \- внутренняя служба, которая отслеживает создание файлов и затем задаёт для них SELinux-контекст по умолчанию
+
+.SH "ОБЗОР"
+.B restorecond [\-d] [-h] [\-f restorecond_file ] [\-u] [\-v]
+.P
+
+.SH "ОПИСАНИЕ"
+Эта страница руководства содержит описание программы
+.BR restorecond.
+.P
+Эта внутренняя служба использует inotify для отслеживания файлов, перечисленных в /etc/selinux/restorecond.conf. После создания этих файлов эта служба обеспечивает присвоение им правильного контекста, связанного с политикой.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.B \-d
+Включить режим отладки. Приложение останется на переднем плане, будет показано много отладочных сообщений.
+.TP
+. B \-h
+Вывести сведения об использовании.
+.TP
+.B \-f restorecond_file
+Использовать альтернативный файл restorecond.conf.
+.TP
+.B \-u
+Включить пользовательский режим. Запускает restorecond в сеансе пользователя и выполняет чтение /etc/selinux/restorecond_user.conf. Использует dbus, чтобы удостовериться, что в одном сеансе пользователя запущен только один экземпляр restorecond.
+.TP
+.B \-v
+Включить отладку с подробным выводом. (Сообщать об отсутствующих файлах)
+
+.SH "ФАЙЛЫ"
+/etc/selinux/restorecond.conf
+/etc/selinux/restorecond_user.conf
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.BR restorecon (8)
+
+.SH "АВТОРЫ"
+Эта man-страница и программа были написаны Dan Walsh <dwalsh@redhat.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/sandbox/Makefile b/sandbox/Makefile
index 49c1d3f6..862bffbe 100644
--- a/sandbox/Makefile
+++ b/sandbox/Makefile
@@ -1,6 +1,7 @@
PYTHON ?= python
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
SYSCONFDIR ?= /etc/sysconfig
BINDIR ?= $(PREFIX)/bin
@@ -23,6 +24,14 @@ install: all
install -m 644 seunshare.8 $(DESTDIR)$(MANDIR)/man8/
-mkdir -p $(DESTDIR)$(MANDIR)/man5
install -m 644 sandbox.5 $(DESTDIR)$(MANDIR)/man5/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man5 ; \
+ mkdir -p $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.5 $(DESTDIR)$(MANDIR)/$${lang}/man5/ ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
-mkdir -p $(DESTDIR)$(SBINDIR)
install -m 4755 seunshare $(DESTDIR)$(SBINDIR)/
-mkdir -p $(DESTDIR)$(SHAREDIR)
diff --git a/sandbox/VERSION b/sandbox/VERSION
index a4412fa7..29cba064 100644
--- a/sandbox/VERSION
+++ b/sandbox/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/sandbox/ru/sandbox.5 b/sandbox/ru/sandbox.5
new file mode 100644
index 00000000..69e822d8
--- /dev/null
+++ b/sandbox/ru/sandbox.5
@@ -0,0 +1,42 @@
+.TH sandbox.conf "5" "Июнь 2010" "sandbox.conf" "Администрирование системы Linux"
+.SH ИМЯ
+sandbox.conf \- файл конфигурации пользователей для изолированной среды SELinux
+.SH ОПИСАНИЕ
+.PP
+Если изолированная среда запускается с аргументом -C, она будет ограничена с помощью групп управления. Системный администратор может указать, как именно ограничить изолированную среду.
+
+.PP
+Весь текст после "#" игнорируется, как и пустые строки. Все аргументы должны быть разделены пробелами и иметь знаки равенства ("=").
+
+.PP
+Эти ключевые слова разрешены.
+
+.RS
+.TP
+.B NAME
+Имя группы управления изолированной средой. По умолчанию: "sandbox".
+
+.TP
+.B CPUAFFINITY
+Определяет, каким процессорам назначить изолированную среду. По умолчанию она назначается всем процессорам (ALL), но пользователи могут указать разделённый запятыми список с дефисами ("-"), чтобы представить диапазоны. Пример: 0-2,5
+
+.TP
+.B MEMUSAGE
+Определяет, сколько памяти разрешается использовать изолированной среде. Значение по умолчанию: 80%. Пользователи могут указать либо процентное значение, либо значение в виде числа, за которым следует суффикс K, M, G, для соответствующего обозначения килобайтов, мегабайтов или гигабайтов. Пример: 50% или 100M
+
+.TP
+.B CPUUSAGE
+Процент использования ЦП, разрешённый для изолированной среды. По умолчанию: 80%. Укажите значение, за которым следует знак процента ("%"). Пример: 50%
+
+
+
+.SH "СМОТРИТЕ ТАКЖЕ"
+.TP
+sandbox(8)
+.PP
+
+.SH АВТОРЫ
+Эта страница руководства была написана
+.I Thomas Liu <tliu@fedoraproject.org>.
+Перевод на русский язык выполнила
+.I Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/sandbox/ru/sandbox.8 b/sandbox/ru/sandbox.8
new file mode 100644
index 00000000..5e6e0aad
--- /dev/null
+++ b/sandbox/ru/sandbox.8
@@ -0,0 +1,100 @@
+.TH SANDBOX "8" "Май 2010" "sandbox" "Команды пользователя"
+.SH ИМЯ
+sandbox \- выполнить приложение cmd в изолированной среде SELinux
+.SH ОБЗОР
+.B sandbox
+[\-C] [\-s] [ \-d DPI ] [\-l level ] [[\-M | \-X] \-H homedir \-T tempdir ] [\-I includefile ] [ \-W windowmanager ] [ \-w windowsize ] [[\-i file ]...] [ \-t type ] cmd
+
+.br
+.B sandbox
+[\-C] [\-s] [ \-d DPI ] [\-l level ] [[\-M | \-X] \-H homedir \-T tempdir ] [\-I includefile ] [ \-W windowmanager ] [ \-w windowsize ] [[\-i file ]...] [ \-t type ] \-S
+.br
+.SH ОПИСАНИЕ
+.PP
+Выполнить приложение
+.I cmd
+в строго ограниченном домене SELinux. По умолчанию в домене изолированной среды приложения могут только читать и записывать stdin, stdout и любые другие передаваемые дескрипторы файлов. Открывать другие файлы нельзя. Параметр \-M позволяет смонтировать альтернативные домашний каталог и временный каталог, которые будут использоваться изолированной средой.
+
+Если установлен пакет
+.I policycoreutils-sandbox,
+можно использовать параметр \-X и параметр \-M.
+.B sandbox \-X
+позволяет запускать приложения X в изолированной среде. Эти приложения запускаются на своём собственном X-сервере и создают временные домашний каталог и каталог /tmp. Политика SELinux по умолчанию не разрешает использовать какие-либо средства для управления привилегиями или осуществлять доступ к сети. Она также предотвращает доступ к другим процессам и файлам пользователей. Указанные в команде файлы, которые находятся в домашнем каталоге или каталоге /tmp, будут скопированы в каталоги изолированной среды.
+
+Если каталоги указаны с параметром \-H или \-T, их контекст будет изменён chcon(1) (если только с помощью параметра \-l не указан уровень). Если уровень безопасности MLS/MCS указан, пользователь должен установить правильные метки.
+.PP
+.TP
+\fB\-h\ \fB\-\-help\fR
+Показать сведения об использовании
+.TP
+\fB\-H\ \fB\-\-homedir\fR
+Указать альтернативный домашний каталог для монтирования вместо вашего домашнего каталога. По умолчанию используется временный каталог. Требуется \-X или \-M.
+.TP
+\fB\-i\fR \fB\-\-include\fR
+Копировать этот файл в соответствующий временный каталог изолированной среды. Команду можно повторять.
+.TP
+\fB\-I\fR \fB\-\-includefile\fR
+Копировать все файлы, перечисленные во входном файле (inputfile), в соответствующие временные каталоги изолированной среды.
+.TP
+\fB\-l\fR \fB\-\-level\fR
+Указать уровень безопасности MLS/MCS, с которым следует запускать изолированную среду. По умолчанию используется случайное значение.
+.TP
+\fB\-M\fR \fB\-\-mount\fR
+Создать изолированную среду с временными файлами для $HOME и /tmp.
+.TP
+\fB\-s\fR \fB\-\-shred\fR
+Уничтожить временные файлы, созданные в $HOME в /tmp, перед удалением.
+.TP
+\fB\-t\fR \fB\-\-type\fR
+Использовать альтернативный тип изолированной среды. По умолчанию: sandbox_t или sandbox_x_t для \-X.
+
+\fBПримеры:\fR
+.br
+sandbox_t \- без X, без доступа к сети, без открытия, чтение/запись передаются в дескрипторах файлов.
+.br
+sandbox_min_t \- без доступа к сети
+.br
+sandbox_x_t \- порты для X-приложений, которые следует запустить локально
+.br
+sandbox_web_t \- порты, необходимые для работы в Интернете
+.br
+sandbox_net_t \- сетевые порты (для серверного ПО)
+.br
+sandbox_net_client_t \- все сетевые порты
+
+.TP
+\fB\-T\fR \fB\-\-tmpdir\fR
+Использовать альтернативный временный каталог для монтирования в /tmp. По умолчанию: tmpfs. Требуется \-X или \-M.
+.TP
+\fB\-S\fR \fB\-\-session\fR
+Запустить полный сеанс рабочего стола. Требуется уровень, домашний каталог и временный каталог.
+.TP
+\fB\-w\fR \fB\-\-windowsize\fR
+Указать размер окна при создании изолированной среды на основе X. По умолчанию: 1000x700.
+.TP
+\fB\-W\fR \fB\-\-windowmanager\fR
+Выбрать альтернативный диспетчер окон для запуска в
+.B sandbox \-X.
+По умолчанию: /usr/bin/openbox.
+.TP
+\fB\-X\fR
+Создать изолированную среду на основе X для приложений графического интерфейса пользователя, временные файлы для $HOME и /tmp, дополнительный X-сервер. По умолчанию: sandbox_x_t
+.TP
+\fB\-d\fR \fB\-\-dpi\fR
+Указать значение разрешения (DPI) для X-сервера изолированной среды. По умолчанию используется значение разрешения текущего X-сервера.
+.TP
+\fB\-C\fR \fB\-\-capabilities\fR
+Использовать средства для управления привилегиями внутри изолированной среды. По умолчанию приложениям, которые выполняются в изолированной среде, запрещено использовать средства для управления привилегиями (setuid apps), но с флагом \-C можно использовать программы, которым необходимы средства для управления привилегиями.
+.PP
+.SH "СМОТРИТЕ ТАКЖЕ"
+.TP
+runcon(1), seunshare(8), selinux(8)
+.PP
+
+.SH АВТОРЫ
+Эта страница руководства была написана
+.I Dan Walsh <dwalsh@redhat.com>
+.I Thomas Liu <tliu@fedoraproject.org>.
+Перевод на русский язык выполнила
+.I Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/sandbox/ru/seunshare.8 b/sandbox/ru/seunshare.8
new file mode 100644
index 00000000..f604b9eb
--- /dev/null
+++ b/sandbox/ru/seunshare.8
@@ -0,0 +1,42 @@
+.TH SEUNSHARE "8" "Май 2010" "seunshare" "Команды пользователя"
+.SH ИМЯ
+seunshare \- выполнить cmd с другим домашним каталогом (homedir), временным каталогом (tmpdir) и/или контекстом SELinux
+.SH ОБЗОР
+.B seunshare
+[ -v ] [ -C ] [ -k ] [ -t tmpdir ] [ -h homedir ] [ -Z context ] -- executable [args]
+.br
+.SH ОПИСАНИЕ
+.PP
+Запустите исполняемый файл
+.I executable
+в указанном контексте, используя альтернативный домашний каталог и каталог /tmp. Команда seunshare отменяет общий доступ из пространства имён по умолчанию, затем монтирует указанные домашний каталог и временный каталог вместо домашнего каталога и временного каталога по умолчанию. После этого команда сообщает ядру, что следует выполнить приложение в указанном контексте SELinux.
+
+.TP
+\fB\-h homedir\fR
+Альтернативный домашний каталог для использования приложением. Пользователь должен быть владельцем домашнего каталога.
+.TP
+\fB\-t\ tmpdir
+Использовать альтернативный временный каталог для монтирования в /tmp. Пользователь должен быть владельцем временного каталога.
+.TP
+\fB\-C --capabilities\fR
+Разрешить приложениям, исполняемым в пространстве имён, использовать средства для управления привилегиям. По умолчанию использование средств для управления привилегиями запрещено.
+.TP
+\fB\-k --kill\fR
+Завершить все процессы с соответствующим уровнем MCS.
+.TP
+\fB\-Z\ context
+Использовать альтернативный контекст SELinux при запуске исполняемого файла.
+.TP
+\fB\-v\fR
+Подробный вывод
+.SH "СМОТРИТЕ ТАКЖЕ"
+.TP
+runcon(1), sandbox(8), selinux(8)
+.PP
+.SH АВТОРЫ
+Эта страница руководства была написана
+.I Dan Walsh <dwalsh@redhat.com>
+.I Thomas Liu <tliu@fedoraproject.org>.
+Перевод на русский язык выполнила
+.I Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/scripts/env_use_destdir b/scripts/env_use_destdir
new file mode 100755
index 00000000..4fbfb8de
--- /dev/null
+++ b/scripts/env_use_destdir
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Set-up environment variables to run programs which are built in DESTDIR folder
+#
+# Usage example to use variables in the current shell:
+# $ export DESTDIR=$HOME/selinux-destdir
+# $ make install install-pywrap install-rubywrap
+# $ . ./scripts/env_use_destdir
+# $ make test
+#
+# Or to use variables in a subcommand, for example to run tests:
+# $ export DESTDIR=$HOME/selinux-destdir
+# $ make install install-pywrap install-rubywrap
+# $ ./scripts/env_use_destdir secilc ...
+# $ ./scripts/env_use_destdir make test
+
+if [ -z "${DESTDIR:-}" ] ; then
+ echo >&2 "Error: variable DESTDIR needs to be defined in order to use this script."
+ echo >&2 "Example:"
+ # shellcheck disable=SC2164
+ echo >&2 " DESTDIR=$(cd "$(dirname -- "$0")/.." ; pwd)/DESTDIR . $0"
+ exit 1
+fi
+
+export LD_LIBRARY_PATH="$DESTDIR/usr/lib:$DESTDIR/lib"
+export PATH="$DESTDIR/usr/sbin:$DESTDIR/usr/bin:$DESTDIR/sbin:$DESTDIR/bin:$PATH"
+
+# shellcheck disable=SC2155
+export PYTHONPATH="$DESTDIR$(${PYTHON:-python} -c "from distutils.sysconfig import *;print(get_python_lib(prefix='/usr'))")"
+
+# shellcheck disable=SC2155
+export RUBYLIB="$DESTDIR/$(${RUBY:-ruby} -e 'puts RbConfig::CONFIG["vendorlibdir"]'):$DESTDIR/$(${RUBY:-ruby} -e 'puts RbConfig::CONFIG["vendorarchdir"]')"
+
+# Run the command given on the command line
+if [ $# -gt 0 ] ; then
+ exec "$@"
+fi
diff --git a/scripts/release b/scripts/release
index ad10d557..07813749 100755
--- a/scripts/release
+++ b/scripts/release
@@ -7,11 +7,12 @@ if [ \! -d $WIKIDIR ]; then
git clone git@github.com:SELinuxProject/selinux.wiki.git $WIKIDIR
fi
-DEST=$WIKIDIR/files/releases/$(date '+%Y%m%d')
+RELEASE_TAG=$(date '+%Y%m%d')
+DEST=releases/$RELEASE_TAG
DIRS="libsepol libselinux libsemanage checkpolicy secilc policycoreutils mcstrans restorecond semodule-utils"
DIRS_NEED_PREFIX="dbus gui python sandbox"
-git tag -a $(date '+%Y%m%d') -m "Release $(date '+%Y%m%d')"
+git tag -a $RELEASE_TAG -m "Release $RELEASE_TAG"
rm -rf $DEST
mkdir -p $DEST
@@ -44,19 +45,34 @@ echo ""
echo "## Release $(date '+%Y-%m-%d')"
+echo ""
+
+echo "[Release Notes](https://github.com/SELinuxProject/selinux/releases/download/$RELEASE_TAG/RELEASE-$RELEASE_TAG.txt)"
+echo ""
+echo "[full log](https://github.com/SELinuxProject/selinux/releases/download/$RELEASE_TAG/log-$RELEASE_TAG.txt)"
+echo ""
+echo "[short log](https://github.com/SELinuxProject/selinux/releases/download/$RELEASE_TAG/shortlog-$RELEASE_TAG.txt)"
+echo ""
+
for i in *.tar.gz; do
- echo -n "[$i](https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/$(date '+%Y%m%d')/$i) "
+ echo -n "[$i](https://github.com/SELinuxProject/selinux/releases/download/$RELEASE_TAG/$i) "
sha256sum $i | cut -d " " -f 1
echo ""
done
echo "And then run:"
echo " cd $WIKIDIR"
-echo " git commit -m \"Release $(date '+%Y%m%d')\" -a -s"
+echo " git commit -m \"Release $RELEASE_TAG\" -a -s"
echo " git push"
echo ""
echo "Push the release and its tags to git via:"
echo " git push"
echo " git push --tags"
+
+echo ""
+echo "Create a new release from the latest tag on https://github.com/SELinuxProject/selinux/tags"
+
+echo ""
+echo "Add files from releases/$RELEASE_TAG as assets to the new github release"
diff --git a/scripts/run-flake8 b/scripts/run-flake8
index 6ad029fa..24b1202f 100755
--- a/scripts/run-flake8
+++ b/scripts/run-flake8
@@ -4,6 +4,11 @@
# Run on the base directory if no argument has been given
if [ $# -eq 0 ] ; then
cd "$(dirname -- "$0")/.." || exit $?
+
+ # Run on both files ending with .py and Python files without extension
+ # shellcheck disable=SC2046
+ set -- $( (find . -name '*.py' ; grep --exclude-dir=.git -l -e '^#!\s*/usr/bin/python' -e '^#!/usr/bin/env python' -r .) | sort -u )
+ echo "Analyzing $# Python scripts"
fi
# Assign each ignore warning on a line, in order to ease testing enabling the warning again
diff --git a/secilc/Android.bp b/secilc/Android.bp
index 6334bf83..75597dba 100644
--- a/secilc/Android.bp
+++ b/secilc/Android.bp
@@ -11,4 +11,17 @@ cc_binary {
srcs: ["secilc.c"],
static_libs: ["libsepol"],
stl: "none",
+ // secilc is a program that is executed very early by init.
+ // Since it is before the mount namespaces are setup, /system/bin/linker
+ // and /system/lib/libc.so point to the mount points where nothing
+ // is mounted on yet. Therefore, secilc has to have explicit knowledge about
+ // the paths where the bootstrap Bionic is. bootstrap:true sets DT_INTERP to
+ // /system/bin/bootstrap/linker. RPATH is explicitly set to /system/lib/bootstrap
+ // where the bootstrap libc.so is.
+ bootstrap: true,
+ target: {
+ android: {
+ ldflags: ["-Wl,--rpath,/system/${LIB}/bootstrap"],
+ },
+ },
}
diff --git a/secilc/VERSION b/secilc/VERSION
index a4412fa7..29cba064 100644
--- a/secilc/VERSION
+++ b/secilc/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/semodule-utils/VERSION b/semodule-utils/VERSION
index a4412fa7..29cba064 100644
--- a/semodule-utils/VERSION
+++ b/semodule-utils/VERSION
@@ -1 +1 @@
-2.8
+2.9-rc1
diff --git a/semodule-utils/semodule_expand/Makefile b/semodule-utils/semodule_expand/Makefile
index f1a1c8f3..e63dcff2 100644
--- a/semodule-utils/semodule_expand/Makefile
+++ b/semodule-utils/semodule_expand/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -15,6 +16,12 @@ install: all
install -m 755 semodule_expand $(DESTDIR)$(BINDIR)
test -d $(DESTDIR)$(MANDIR)/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/man8
install -m 644 semodule_expand.8 $(DESTDIR)$(MANDIR)/man8/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ test -d $(DESTDIR)$(MANDIR)/$${lang}/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
relabel:
diff --git a/semodule-utils/semodule_expand/ru/semodule_expand.8 b/semodule-utils/semodule_expand/ru/semodule_expand.8
new file mode 100644
index 00000000..afdc129e
--- /dev/null
+++ b/semodule-utils/semodule_expand/ru/semodule_expand.8
@@ -0,0 +1,31 @@
+.TH SEMODULE_EXPAND "8" "ноябрь 2005" "Security Enhanced Linux" NSA
+.SH ИМЯ
+semodule_expand \- расширить пакет модуля политики SELinux
+
+.SH ОБЗОР
+.B semodule_expand [-V ] [ -a ] [ -c [version]] basemodpkg outputfile
+.br
+.SH ОПИСАНИЕ
+.PP
+semodule_expand - утилита разработки для ручного расширения пакета базового модуля политики в двоичный файл политики ядра.
+Это средство не является необходимым для нормальной работы SELinux. Обычно такое расширение выполняется libsemanage внутренним образом в ответ на команды semodule. Пакеты базовых модулей политики можно создавать непосредственно с помощью semodule_package или semodule_link (при связывании набора пакетов в один пакет).
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.B \-V
+Показать версию
+.TP
+.B \-c [version]
+Версия политики, которую следует создать
+.TP
+.B \-a
+Не проверять утверждения. При использовании этого параметра политика не будет проверять запрещающие правила (neverallow).
+
+.SH СМОТРИТЕ ТАКЖЕ
+.B checkmodule(8), semodule_package(8), semodule(8), semodule_link(8)
+(8),
+.SH АВТОРЫ
+.nf
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Программа была написана Karl MacMillan <kmacmillan@tresys.com>, Joshua Brindle <jbrindle@tresys.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/semodule-utils/semodule_link/Makefile b/semodule-utils/semodule_link/Makefile
index 692cb026..c5cf69cd 100644
--- a/semodule-utils/semodule_link/Makefile
+++ b/semodule-utils/semodule_link/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -15,6 +16,12 @@ install: all
install -m 755 semodule_link $(DESTDIR)$(BINDIR)
test -d $(DESTDIR)$(MANDIR)/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/man8
install -m 644 semodule_link.8 $(DESTDIR)$(MANDIR)/man8/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ test -d $(DESTDIR)$(MANDIR)/$${lang}/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
relabel:
diff --git a/semodule-utils/semodule_link/ru/semodule_link.8 b/semodule-utils/semodule_link/ru/semodule_link.8
new file mode 100644
index 00000000..31d81206
--- /dev/null
+++ b/semodule-utils/semodule_link/ru/semodule_link.8
@@ -0,0 +1,32 @@
+.TH SEMODULE_LINK "8" "Ноябрь 2005" "Security Enhanced Linux" NSA
+.SH ИМЯ
+semodule_link \- связать вместе пакеты модулей политики SELinux
+
+.SH ОБЗОР
+.B semodule_link [-Vv] [-o outfile] basemodpkg modpkg1 [modpkg2]...
+.br
+.SH ОПИСАНИЕ
+.PP
+semodule_link - утилита разработки для ручного связывания набора пакетов модулей политики SELinux в один пакет модулей политики.
+Это средство не является необходимым для нормальной работы SELinux. Обычно такое связывание выполняется libsemanage внутренним образом в ответ на команды semodule. Пакеты модулей создаются с помощью semodule_package.
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.B \-V
+Показать версию
+.TP
+.B \-v
+Подробный режим
+.TP
+.B \-o <output file>
+Связанный пакет модулей политики, созданный с помощью этого средства
+
+
+.SH СМОТРИТЕ ТАКЖЕ
+.B checkmodule(8), semodule_package(8), semodule(8), semodule_expand(8)
+(8),
+.SH АВТОРЫ
+.nf
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Программа была написана Karl MacMillan <kmacmillan@tresys.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/semodule-utils/semodule_package/Makefile b/semodule-utils/semodule_package/Makefile
index da170267..680ab836 100644
--- a/semodule-utils/semodule_package/Makefile
+++ b/semodule-utils/semodule_package/Makefile
@@ -1,4 +1,5 @@
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -17,6 +18,12 @@ install: all
test -d $(DESTDIR)$(MANDIR)/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/man8
install -m 644 semodule_package.8 $(DESTDIR)$(MANDIR)/man8/
install -m 644 semodule_unpackage.8 $(DESTDIR)$(MANDIR)/man8/
+ for lang in $(LINGUAS) ; do \
+ if [ -e $${lang} ] ; then \
+ test -d $(DESTDIR)$(MANDIR)/$${lang}/man8 || install -m 755 -d $(DESTDIR)$(MANDIR)/$${lang}/man8 ; \
+ install -m 644 $${lang}/*.8 $(DESTDIR)$(MANDIR)/$${lang}/man8/ ; \
+ fi ; \
+ done
relabel:
diff --git a/semodule-utils/semodule_package/ru/semodule_package.8 b/semodule-utils/semodule_package/ru/semodule_package.8
new file mode 100644
index 00000000..6af67b29
--- /dev/null
+++ b/semodule-utils/semodule_package/ru/semodule_package.8
@@ -0,0 +1,48 @@
+.TH SEMODULE_PACKAGE "8" "Ноябрь 2005" "Security Enhanced Linux" NSA
+.SH ИМЯ
+semodule_package \- создать пакет модуля политики SELinux
+
+.SH ОБЗОР
+.B semodule_package \-o <output file> \-m <module> [\-f <file contexts>]
+.br
+.SH ОПИСАНИЕ
+.PP
+semodule_package - утилита, которая используется для создания пакета модуля политики SELinux из двоичного модуля политики и (необязательно) других данных, таких как контексты файлов. Команда semodule_package упаковывает двоичные модули политики, созданные с помощью checkmodule. Пакет политики, созданный с помощью semodule_package, затем можно установить через semodule.
+
+.SH ПРИМЕР
+.nf
+# Собрать пакет политики для базового модуля.
+$ semodule_package \-o base.pp \-m base.mod \-f file_contexts
+# Собрать пакет политики для модуля httpd.
+$ semodule_package \-o httpd.pp \-m httpd.mod \-f httpd.fc
+# Собрать пакет политики для локальных правил принудительного присвоения типов, не включая контексты файлов.
+$ semodule_package \-o local.pp \-m local.mod
+.fi
+
+.SH "ПАРАМЕТРЫ"
+.TP
+.B \-o \-\-outfile <output file>
+Файл пакета модуля политики, созданный этим средством.
+.TP
+.B \-s \-\-seuser <seuser file>
+Файл seuser, который следует включить в пакет.
+.TP
+.B \-u \-\-user_extra <user extra file>
+Файл user_extra, который следует включить в пакет.
+.TP
+.B \-m \-\-module <Module file>
+Файл модуля политики, который следует включить в пакет.
+.TP
+.B \-f \-\-fc <File context file>
+Файл контекстов файлов для модуля (необязательно).
+.TP
+.B \-n \-\-nc <netfilter context file>
+Файл контекста netfilter, который следует включить в пакет.
+
+.SH СМОТРИТЕ ТАКЖЕ
+.B checkmodule(8), semodule(8), semodule_unpackage(8)
+.SH АВТОРЫ
+.nf
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Программа была написана Karl MacMillan <kmacmillan@tresys.com>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
diff --git a/semodule-utils/semodule_package/ru/semodule_unpackage.8 b/semodule-utils/semodule_package/ru/semodule_unpackage.8
new file mode 100644
index 00000000..910fee02
--- /dev/null
+++ b/semodule-utils/semodule_package/ru/semodule_unpackage.8
@@ -0,0 +1,24 @@
+.TH SEMODULE_PACKAGE "8" "Ноябрь 2005" "Security Enhanced Linux" NSA
+.SH ИМЯ
+semodule_unpackage \- извлечь модуль политики и файл контекстов файлов из пакета модуля политики SELinux
+
+.SH ОБЗОР
+.B semodule_unpackage ppfile modfile [fcfile]
+.br
+.SH ОПИСАНИЕ
+.PP
+semodule_unpackage - утилита, которая используется для извлечения файла модуля политики SELinux и файла контекстов файлов из пакета политики SELinux.
+
+.SH ПРИМЕР
+.nf
+# Извлечь файл модуля httpd из пакета политики httpd.
+$ semodule_unpackage httpd.pp httpd.mod httpd.fc
+.fi
+
+.SH СМОТРИТЕ ТАКЖЕ
+.B semodule_package(8)
+.SH АВТОРЫ
+.nf
+Эта страница руководства была написана Dan Walsh <dwalsh@redhat.com>.
+Программа была написана Stephen Smalley <sds@tycho.nsa.gov>.
+Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.