aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2019-02-14 12:11:20 -0800
committerNick Kralevich <nnk@google.com>2019-02-14 12:11:20 -0800
commitdf5204a030cc8c2edda4c789b508abdb41adf80a (patch)
tree99003dd6cb72c7869f9a6a481da85f23ebf5d8e0 /python
parent9cb1372b7285eed8f802fa769c880dedfcbf5fec (diff)
parent913613da6639983080cf97192b529f58faad0049 (diff)
downloadandroid_external_selinux-df5204a030cc8c2edda4c789b508abdb41adf80a.tar.gz
android_external_selinux-df5204a030cc8c2edda4c789b508abdb41adf80a.tar.bz2
android_external_selinux-df5204a030cc8c2edda4c789b508abdb41adf80a.zip
Merge remote-tracking branch 'aosp/upstream-master' into mymerge
Followed the following steps: # In repo client cd external/selinux repo sync . repo start mymerge . git merge aosp/upstream-master --no-ff # resolve any conflicts repo upload . Test: device compiles and boots Change-Id: If92a0b5e99e69ac0434197fa848b736b9cf0bf77
Diffstat (limited to 'python')
-rw-r--r--python/audit2allow/Makefile7
-rw-r--r--python/audit2allow/ru/audit2allow.1210
-rw-r--r--python/audit2allow/ru/audit2why.11
-rw-r--r--python/chcat/Makefile7
-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/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.py2
-rw-r--r--python/sepolicy/sepolicy/interface.py8
-rwxr-xr-xpython/sepolicy/sepolicy/manpage.py4
42 files changed, 1932 insertions, 187 deletions
diff --git a/python/audit2allow/Makefile b/python/audit2allow/Makefile
index 06fc3b69..18d740d3 100644
--- a/python/audit2allow/Makefile
+++ b/python/audit2allow/Makefile
@@ -2,6 +2,7 @@ PYTHON ?= python
SECILC ?= secilc
# Installation directories.
+LINGUAS ?= ru
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
@@ -38,6 +39,12 @@ 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 test_dummy_policy
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/chcat/Makefile b/python/chcat/Makefile
index 79620f60..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,6 +12,12 @@ 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:
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/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 fde233ad..d4bf3b48 100644
--- a/python/sepolicy/sepolicy/gui.py
+++ b/python/sepolicy/sepolicy/gui.py
@@ -1545,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")