# Russian translation of manpages # This file is distributed under the same license as the manpages-l10n package. # Copyright © of this file: # aereiae , 2014. # Alexey , 2015. # Azamat Hackimov , 2013-2017. # Dmitriy S. Seregin , 2013. # Dmitry Bolkhovskikh , 2017. # ITriskTI , 2013. # Max Is , 2016. # Yuri Kozlov , 2011-2019. # Иван Павлов , 2017. # Малянов Евгений Викторович , 2014. msgid "" msgstr "" "Project-Id-Version: manpages-l10n\n" "POT-Creation-Date: 2024-06-01 06:02+0200\n" "PO-Revision-Date: 2019-10-06 08:59+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" "%100>=11 && n%100<=14)? 2 : 3);\n" "X-Generator: Lokalize 2.0\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "memfd_create" msgstr "memfd_create" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "2 мая 2024 г." #. type: TH #: archlinux debian-unstable #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages 6.8" msgstr "Linux man-pages 6.7" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "ИМЯ" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "memfd_create - create an anonymous file" msgstr "memfd_create - создаёт анонимный файл" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Standard C library (I, I<-lc>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "СИНТАКСИС" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n" "B<#include Esys/mman.hE>\n" msgstr "" "B<#define _GNU_SOURCE> /* Смотрите feature_test_macros(7) */\n" "B<#include Esys/mman.hE>\n" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BIB<, unsigned int >IB<);>\n" msgstr "BIB<, unsigned int >IB<);>\n" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "ОПИСАНИЕ" #. David Herrmann: #. memfd uses VM_NORESERVE so each page is accounted on first access. #. This means, the overcommit-limits (see __vm_enough_memory()) and the #. memory-cgroup limits (mem_cgroup_try_charge()) are applied. Note that #. those are accounted on "current" and "current->mm", that is, the #. process doing the first page access. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() creates an anonymous file and returns a file descriptor " "that refers to it. The file behaves like a regular file, and so can be " "modified, truncated, memory-mapped, and so on. However, unlike a regular " "file, it lives in RAM and has a volatile backing storage. Once all " "references to the file are dropped, it is automatically released. Anonymous " "memory is used for all backing pages of the file. Therefore, files created " "by B() have the same semantics as other anonymous memory " "allocations such as those allocated using B(2) with the " "B flag." msgstr "" "Вызов B() создаёт анонимный файл и возвращает ссылающийся на " "него файловый дескриптор. Анонимный файл ведёт себя как обычный файл и может " "быть изменён, обрезан, отображён в память и т.д. Однако в отличие от " "обычного файла он располагается в ОЗУ и не имеет энергонезависимого " "хранилища. Как только все ссылки на файл удаляются, он автоматически " "исчезает. Анонимные файлы располагаются в анонимной памяти. Поэтому у " "файлов, создаваемых B(), такая же семантика как и областей " "анонимной памяти, выделяемой с помощью B(2) с флагом B." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The initial size of the file is set to 0. Following the call, the file size " "should be set using B(2). (Alternatively, the file may be " "populated by calls to B(2) or similar.)" msgstr "" "Первоначально, размер файла равен 0. После этого вызова нужно задать размер " "файла с помощью B(2) (или заполнить файл с помощью B(2) " "или подобными)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The name supplied in I is used as a filename and will be displayed as " "the target of the corresponding symbolic link in the directory I. The displayed name is always prefixed with I and serves only " "for debugging purposes. Names do not affect the behavior of the file " "descriptor, and as such multiple files can have the same name without any " "side effects." msgstr "" "Имя, указанное в I, используется в качестве имени файла и будет " "показываться как цель соответствующей символьной ссылки в каталоге. I. Отображаемое имя всегда начинается с I и служит только " "для отладки. Имена не влияют на поведение файлового дескриптора и поэтому " "несколько файлов могут иметь одно имя без каких-либо последствий." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The following values may be bitwise ORed in I to change the behavior " "of B():" msgstr "" "Для изменения поведения B() можно использовать следующие " "значения I (через OR):" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Set the close-on-exec (B) flag on the new file descriptor. See " "the description of the B flag in B(2) for reasons why this " "may be useful." msgstr "" "Устанавливает флаг close-on-exec (B) для нового открытого " "файлового дескриптора. Смотрите описание флага B в B(2) для " "того, чтобы узнать как это может пригодиться." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. FIXME Why is the MFD_ALLOW_SEALING behavior not simply the default? #. Is it worth adding some text explaining this? #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Allow sealing operations on this file. See the discussion of the " "B and B operations in B(2), and also NOTES, " "below. The initial set of seals is empty. If this flag is not set, the " "initial set of seals will be B, meaning that no other seals can " "be set on the file." msgstr "" "Разрешает операции опечатывания (sealing) файла. Описание операций " "B и B смотрите в B(2), а также в ЗАМЕЧАНИЯ " "ниже. Первоначально набор печатей пуст. Если этот флаг не установлен, то " "начальным набором печатей будет B, означающий запрещение " "установки печатей на файл." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.14)" msgstr "B (начиная с Linux 4.14)" #. commit 749df87bd7bee5a79cef073f5d032ddb2b211de8 #. commit 47b9012ecdc747f6936395265e677d41e11a31ff #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The anonymous file will be created in the hugetlbfs filesystem using huge " "pages. See the Linux kernel source file I for more information about hugetlbfs. Specifying both " "B and B in I is supported since Linux " "4.16." msgstr "" "В файловой системе hugetlbfs, использующей огромные страницы, будет создан " "анонимный файл. В файле исходного кода Linux I дана подробная информация о hugetlbfs. Одновременное " "указание B и B в I поддерживается " "начиная с Linux 4.16." #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "\\&.\\|.\\|." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Used in conjunction with B to select alternative hugetlb page " "sizes (respectively, 2\\ MB, 1\\ GB, ...) on systems that support multiple " "hugetlb page sizes. Definitions for known huge page sizes are included in " "the header file Ilinux/memfd.hE.>" msgstr "" "Используется как дополнение к B для выбора размера страницы " "hugetlb (соответственно, 2\\ МБ, 1\\ ГБ, …) в системах, которые поддерживают " "различные размеры страниц hugetlb. Определения размеров огромных страниц " "включены в заголовочный файл Ilinux/memfd.hE.>" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For details on encoding huge page sizes not included in the header file, see " "the discussion of the similarly named constants in B(2)." msgstr "" "Дополнительную информацию о кодировании размеров огромных страниц, " "отсутствующих в заголовочном файле, смотрите в описании сходных по имени " "констант в B(2)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Unused bits in I must be 0." msgstr "Неиспользуемые биты в I должны быть равны 0." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "As its return value, B() returns a new file descriptor that " "can be used to refer to the file. This file descriptor is opened for both " "reading and writing (B) and B is set for the file " "descriptor." msgstr "" "В качестве возвращаемого значения B() возвращает новый " "файловый дескриптор, который можно использовать для обращения к файлу. " "Данный файловый дескриптор открыт на чтение и запись (B) и в " "файловом дескрипторе установлен флаг B." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "With respect to B(2) and B(2), the usual semantics apply for " "the file descriptor created by B(). A copy of the file " "descriptor is inherited by the child produced by B(2) and refers to " "the same file. The file descriptor is preserved across B(2), unless " "the close-on-exec flag has been set." msgstr "" "При вызове B(2) и B(2) с файловым дескриптором, созданным " "B(), применяется обычная семантика. Копия файлового " "дескриптора наследуется потомком, созданным B(2), указывает на тот же " "файл. Файловый дескриптор сохраняется при после B(2), если не " "установлен флаг close-on-exec." #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RETURN VALUE" msgstr "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On success, B() returns a new file descriptor. On error, -1 " "is returned and I is set to indicate the error." msgstr "" "При успешном выполнении B() возвращает новый файловый " "дескриптор. При ошибке возвращается -1, и I устанавливается в " "соответствующее значение." #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ERRORS" msgstr "ОШИБКИ" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The address in I points to invalid memory." msgstr "Некорректный адрес в I." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "I included unknown bits." msgstr "В I указаны неизвестные биты." #. NAME_MAX - strlen("memfd:") #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I was too long. (The limit is 249 bytes, excluding the terminating " "null byte.)" msgstr "" "Значение I было слишком длинным (ограничено 249 байтами, не считая " "конечный байт null)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Both B and B were specified in I." msgstr "В I указаны B и B одновременно." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The per-process limit on the number of open file descriptors has been " "reached." msgstr "" "Было достигнуто ограничение по количеству открытых файловых дескрипторов на " "процесс." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The system-wide limit on the total number of open files has been reached." msgstr "Достигнуто максимальное количество открытых файлов в системе." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "There was insufficient memory to create a new anonymous file." msgstr "Недостаточно памяти для создания нового анонимного файла." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B flag was specified, but the caller was not privileged " "(did not have the B capability) and is not a member of the " "I group; see the description of I in B(5)." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "СТАНДАРТЫ" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Linux." msgstr "Linux." #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "ИСТОРИЯ" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "Since glibc 2.2.2:" msgid "Linux 3.17, glibc 2.27." msgstr "Начиная с glibc 2.2.2:" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NOTES" msgstr "ПРИМЕЧАНИЯ" #. See also http://lwn.net/Articles/593918/ #. and http://lwn.net/Articles/594919/ and http://lwn.net/Articles/591108/ #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() system call provides a simple alternative to manually " "mounting a B(5) filesystem and creating and opening a file in that " "filesystem. The primary purpose of B() is to create files " "and associated file descriptors that are used with the file-sealing APIs " "provided by B(2)." msgstr "" "Системный вызов B() предоставляет простую альтернативу ручному " "монтированию файловой системы B(5), созданию и открытию файла в этой " "файловой системе. Основным предназначением B() является " "создание файлов и соответствующих файловых дескрипторов, которые " "используются с программным интерфейсом опечатывания файлов, предоставляемым " "B(2)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() system call also has uses without file sealing (which " "is why file-sealing is disabled, unless explicitly requested with the " "B flag). In particular, it can be used as an alternative " "to creating files in I or as an alternative to using the B(2) " "B in cases where there is no intention to actually link the " "resulting file into the filesystem." msgstr "" "Системный вызов B() также используется и без опечатывания " "файла (вот почему опечатывание файлов отключено, если этого не запросить " "явно с помощью флага B). В частности, он может " "использоваться как альтернатива созданию файлов в I или использованию " "B(2) с B в случаях, когда не требуется реальная ссылка на " "конечный файл в файловой системе." #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "File sealing" msgstr "Опечатывание файла (file sealing)" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the absence of file sealing, processes that communicate via shared memory " "must either trust each other, or take measures to deal with the possibility " "that an untrusted peer may manipulate the shared memory region in " "problematic ways. For example, an untrusted peer might modify the contents " "of the shared memory at any time, or shrink the shared memory region. The " "former possibility leaves the local process vulnerable to time-of-check-to-" "time-of-use race conditions (typically dealt with by copying data from the " "shared memory region before checking and using it). The latter possibility " "leaves the local process vulnerable to B signals when an attempt is " "made to access a now-nonexistent location in the shared memory region. " "(Dealing with this possibility necessitates the use of a handler for the " "B signal.)" msgstr "" "Ели файл не опечатан, то процессы, которые связываются через общую память, " "должны или доверять друг другу, или учитывать возможность того, что " "недоверенная сторона может работать с общей памятью проблемным способом. " "Например, недоверенная сторона может изменить содержимое общей памяти в " "любое время или уменьшить область общей памяти. Первая возможность делает " "локальный процесс уязвимым к состязательности условий «момент проверки — " "момент использования» (обычно решается копированием данных из области общей " "памяти перед проверкой и использованием). Последняя возможность делает " "локальный процесс уязвимым к сигналам B, которые возникают при " "попытке получить доступ к теперь несуществующему расположению в области " "общей памяти (решается использованием обработчика сигнала B)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Dealing with untrusted peers imposes extra complexity on code that employs " "shared memory. Memory sealing enables that extra complexity to be " "eliminated, by allowing a process to operate secure in the knowledge that " "its peer can't modify the shared memory in an undesired fashion." msgstr "" "Взаимодействие с недоверенными сторонами приводит к усложнению кода для " "работы с общей памятью. Опечатывание памяти позволяет устранить эту " "сложность, позволяя процессу безопасно работать, зная что его партнёр не " "может изменить общую память нежелательным способом." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "An example of the usage of the sealing mechanism is as follows:" msgstr "В примере использования механизма опечатывания происходит следующее:" #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "(1)" msgstr "(1)" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The first process creates a B(5) file using B(). The " "call yields a file descriptor used in subsequent steps." msgstr "" "Первый процесс создаёт файл B(5) с помощью B(). Вызов " "возвращает файловый дескриптор, используемый далее." #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "(2)" msgstr "(2)" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The first process sizes the file created in the previous step using " "B(2), maps it using B(2), and populates the shared memory " "with the desired data." msgstr "" "Первый процесс задаёт размер файла, созданного ранее, с помощью " "B(2), отображает его с помощью B(2) и заполняется общую " "память нужными данными." #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "(3)" msgstr "(3)" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "The first process uses the B(2) B operation to place " #| "one or more seals on the file, in order to restrict further modifications " #| "on the file. (If placing the seal B, then it will be " #| "necessary to first unmap the shared writable mapping created in the " #| "previous step.)" msgid "" "The first process uses the B(2) B operation to place " "one or more seals on the file, in order to restrict further modifications on " "the file. (If placing the seal B, then it will be necessary " "to first unmap the shared writable mapping created in the previous step. " "Otherwise, behavior similar to B can be achieved by using " "B, which will prevent future writes via B(2) and " "B(2) from succeeding while keeping existing shared writable " "mappings)." msgstr "" "Первый процесс использует B(2) с операцией B для " "установки одной или более печатей на файл, чтобы в дальнейшем ограничить " "изменение файла (если устанавливается печать B, то сначала " "нужно удалить общее доступное на запись отображение, созданное ранее)." #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "(4)" msgstr "(4)" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A second process obtains a file descriptor for the B(5) file and " "maps it. Among the possible ways in which this could happen are the " "following:" msgstr "" "Второй процесс получает файловый дескриптор файла B(5) и отображает " "его. Варианты того, как это можно сделать:" #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "\\[bu]" msgstr "\\[bu]" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The process that called B() could transfer the resulting file " "descriptor to the second process via a UNIX domain socket (see B(7) " "and B(3)). The second process then maps the file using B(2)." msgstr "" "Процесс, вызвавший B(), может переслать полученный файловый " "дескриптор второму процессу через доменный сокет UNIX (смотрите B(7) и " "B(3)). Второй процесс затем отображает файл с помощью B(2)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The second process is created via B(2) and thus automatically " "inherits the file descriptor and mapping. (Note that in this case and the " "next, there is a natural trust relationship between the two processes, since " "they are running under the same user ID. Therefore, file sealing would not " "normally be necessary.)" msgstr "" "Второй процесс создаётся с помощью B(2) и, таким образом, наследует " "файловый дескриптор и отображение (заметим, что в этом случае и следующем " "образуется природное доверие между двумя процессами, так как они работают с " "правами одного пользовательского идентификатора. Поэтому опечатывание файла " "здесь не нужно)." #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "The second process opens the file IpidE/fd/EfdE>, " #| "where IpidE> is the PID of the first process (the one that " #| "called B()), and IfdE> is the number of the file " #| "descriptor returned by the call to B() in that process. " #| "The second process then maps the file using B(2)." msgid "" "The second process opens the file IpidIfd, where " "IpidE> is the PID of the first process (the one that called " "B()), and IfdE> is the number of the file descriptor " "returned by the call to B() in that process. The second " "process then maps the file using B(2)." msgstr "" "Второй процесс открывает файл IpidE/fd/EfdE>, где " "IpidE> — PID первого процесса (вызвавшего B()), а " "IfdE> — номер файлового дескриптора, возвращённого вызовом " "B() в этом процессе. Затем второй процесс отображает файл с " "помощью B(2)." #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "(5)" msgstr "(5)" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The second process uses the B(2) B operation to " "retrieve the bit mask of seals that has been applied to the file. This bit " "mask can be inspected in order to determine what kinds of restrictions have " "been placed on file modifications. If desired, the second process can apply " "further seals to impose additional restrictions (so long as the " "B seal has not yet been applied)." msgstr "" "Второй процесс использует B(2) с операцией B для " "получения битовой маски печатей, которые были применены к файлу. Данная " "маска проверяется, чтобы определить какие ограничения наложены на изменения " "файла. Если требуется, то второй процесс может наложить дополнительные " "печати, что ещё ограничить действия (возможно до тех пор, пока не будет " "наложена печать B)." #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "ПРИМЕРЫ" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Below are shown two example programs that demonstrate the use of " "B() and the file sealing API." msgstr "" "Далее показано два примера программы, в которых продемонстрировано " "использование B() и программный интерфейс опечатывания файла." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The first program, I, creates a B(5) file using " "B(), sets a size for the file, maps it into memory, and " "optionally places some seals on the file. The program accepts up to three " "command-line arguments, of which the first two are required. The first " "argument is the name to associate with the file, the second argument is the " "size to be set for the file, and the optional third argument is a string of " "characters that specify seals to be set on the file." msgstr "" "Первая программа, I, создаёт файл B(5) с помощью " "B(), изменяет его размер, отображает в память и, возможно, " "накладывает несколько печатей на файл. Программа принимает не более трёх " "аргументов командной строки, два первых обязательные. Первым аргументом " "задаётся имя файла, во втором — размер файла, а в необязательном третьем — " "строка символов, задающих устанавливаемые печати на файл." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The second program, I, can be used to open an existing file " "that was created via B() and inspect the set of seals that " "have been applied to that file." msgstr "" "Вторая программа, I, может использоваться для открытия " "существующего файла, созданного B(), и проверки набора " "печатей, применённых к файлу." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The following shell session demonstrates the use of these programs. First " "we create a B(5) file and set some seals on it:" msgstr "" "Следующий пример сеанса показывает как использовать программу. Сначала " "создаётся файл B(5) и накладываются печати:" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "$ B<./t_memfd_create my_memfd_file 4096 sw &>\n" "[1] 11775\n" "PID: 11775; fd: 3; /proc/11775/fd/3\n" msgstr "" "$ B<./t_memfd_create my_memfd_file 4096 sw &>\n" "[1] 11775\n" "PID: 11775; fd: 3; /proc/11775/fd/3\n" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "At this point, the I program continues to run in the " "background. From another program, we can obtain a file descriptor for the " "file created by B() by opening the IpidI file " "that corresponds to the file descriptor opened by B(). Using " "that pathname, we inspect the content of the IpidI symbolic " "link, and use our I program to view the seals that have been " "placed on the file:" msgstr "" "После этого программа I продолжает выполняться в фоновом " "режиме. Из другой программы можно получить дескриптор файла, созданный " "B(), открыв файл IpidI, который соответствует " "файловому дескриптору, открытому B(). Используя это имя, можно " "просмотреть содержимое символьной ссылки IpidI и использовать " "программу I для просмотра печатей, которые установлены на файл:" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "$ B\n" "/memfd:my_memfd_file (deleted)\n" "$ B<./t_get_seals /proc/11775/fd/3>\n" "Existing seals: WRITE SHRINK\n" msgstr "" "$ B\n" "/memfd:my_memfd_file (удалён)\n" "$ B<./t_get_seals /proc/11775/fd/3>\n" "Наложенные печати: WRITE SHRINK\n" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source: t_memfd_create.c" msgstr "Исходный код программы: t_memfd_create.c" #. type: Plain text #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Estring.hE\n" "#include Esys/mman.hE\n" "#include Esys/types.hE\n" "#include Eunistd.hE\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char *name, *seals_arg;\n" " ssize_t len;\n" " unsigned int seals;\n" "\\&\n" " if (argc E 3) {\n" " fprintf(stderr, \"%s name size [seals]\\en\", argv[0]);\n" " fprintf(stderr, \"\\et\\[aq]seals\\[aq] can contain any of the \"\n" " \"following characters:\\en\");\n" " fprintf(stderr, \"\\et\\etg - F_SEAL_GROW\\en\");\n" " fprintf(stderr, \"\\et\\ets - F_SEAL_SHRINK\\en\");\n" " fprintf(stderr, \"\\et\\etw - F_SEAL_WRITE\\en\");\n" " fprintf(stderr, \"\\et\\etW - F_SEAL_FUTURE_WRITE\\en\");\n" " fprintf(stderr, \"\\et\\etS - F_SEAL_SEAL\\en\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " name = argv[1];\n" " len = atoi(argv[2]);\n" " seals_arg = argv[3];\n" "\\&\n" " /* Create an anonymous file in tmpfs; allow seals to be\n" " placed on the file. */\n" "\\&\n" " fd = memfd_create(name, MFD_ALLOW_SEALING);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"memfd_create\");\n" "\\&\n" " /* Size the file as specified on the command line. */\n" "\\&\n" " if (ftruncate(fd, len) == -1)\n" " err(EXIT_FAILURE, \"truncate\");\n" "\\&\n" " printf(\"PID: %jd; fd: %d; /proc/%jd/fd/%d\\en\",\n" " (intmax_t) getpid(), fd, (intmax_t) getpid(), fd);\n" "\\&\n" " /* Code to map the file and populate the mapping with data\n" " omitted. */\n" "\\&\n" " /* If a \\[aq]seals\\[aq] command-line argument was supplied, set some\n" " seals on the file. */\n" "\\&\n" " if (seals_arg != NULL) {\n" " seals = 0;\n" "\\&\n" " if (strchr(seals_arg, \\[aq]g\\[aq]) != NULL)\n" " seals |= F_SEAL_GROW;\n" " if (strchr(seals_arg, \\[aq]s\\[aq]) != NULL)\n" " seals |= F_SEAL_SHRINK;\n" " if (strchr(seals_arg, \\[aq]w\\[aq]) != NULL)\n" " seals |= F_SEAL_WRITE;\n" " if (strchr(seals_arg, \\[aq]W\\[aq]) != NULL)\n" " seals |= F_SEAL_FUTURE_WRITE;\n" " if (strchr(seals_arg, \\[aq]S\\[aq]) != NULL)\n" " seals |= F_SEAL_SEAL;\n" "\\&\n" " if (fcntl(fd, F_ADD_SEALS, seals) == -1)\n" " err(EXIT_FAILURE, \"fcntl\");\n" " }\n" "\\&\n" " /* Keep running, so that the file created by memfd_create()\n" " continues to exist. */\n" "\\&\n" " pause();\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. SRC END #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source: t_get_seals.c" msgstr "Исходный код программы: t_get_seals.c" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " unsigned int seals;\n" "\\&\n" " if (argc != 2) {\n" " fprintf(stderr, \"%s /proc/PID/fd/FD\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " fd = open(argv[1], O_RDWR);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"open\");\n" "\\&\n" " seals = fcntl(fd, F_GET_SEALS);\n" " if (seals == -1)\n" " err(EXIT_FAILURE, \"fcntl\");\n" "\\&\n" " printf(\"Existing seals:\");\n" " if (seals & F_SEAL_SEAL)\n" " printf(\" SEAL\");\n" " if (seals & F_SEAL_GROW)\n" " printf(\" GROW\");\n" " if (seals & F_SEAL_WRITE)\n" " printf(\" WRITE\");\n" " if (seals & F_SEAL_FUTURE_WRITE)\n" " printf(\" FUTURE_WRITE\");\n" " if (seals & F_SEAL_SHRINK)\n" " printf(\" SHRINK\");\n" " printf(\"\\en\");\n" "\\&\n" " /* Code to map the file and access the contents of the\n" " resulting mapping omitted. */\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. SRC END #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "СМОТРИТЕ ТАКЖЕ" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(2), B(2), B(2), B(2), B(2), " "B(3)" msgstr "" "B(2), B(2), B(2), B(2), B(2), " "B(3)" #. type: TH #: debian-bookworm #, no-wrap msgid "2023-02-05" msgstr "5 февраля 2023 г." #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "Linux man-pages 6.03" #. type: TP #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "B, B, B<...>" msgstr "B, B, B<...>" #. type: SH #: debian-bookworm #, no-wrap msgid "VERSIONS" msgstr "ВЕРСИИ" #. type: Plain text #: debian-bookworm #, fuzzy #| msgid "" #| "The B() system call first appeared in Linux 3.17; glibc " #| "support was added in version 2.27." msgid "" "The B() system call first appeared in Linux 3.17; glibc " "support was added in glibc 2.27." msgstr "" "Системный вызов B() появился в Linux 3.17; поддержка в glibc " "началась с версии 2.27." #. type: Plain text #: debian-bookworm msgid "The B() system call is Linux-specific." msgstr "Системный вызов B() есть только в Linux." #. type: Plain text #: debian-bookworm msgid "" "The second process opens the file IpidE/fd/EfdE>, " "where IpidE> is the PID of the first process (the one that called " "B()), and IfdE> is the number of the file descriptor " "returned by the call to B() in that process. The second " "process then maps the file using B(2)." msgstr "" "Второй процесс открывает файл IpidE/fd/EfdE>, где " "IpidE> — PID первого процесса (вызвавшего B()), а " "IfdE> — номер файлового дескриптора, возвращённого вызовом " "B() в этом процессе. Затем второй процесс отображает файл с " "помощью B(2)." #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Estring.hE\n" "#include Esys/mman.hE\n" "#include Eunistd.hE\n" msgstr "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Estring.hE\n" "#include Esys/mman.hE\n" "#include Eunistd.hE\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char *name, *seals_arg;\n" " ssize_t len;\n" " unsigned int seals;\n" msgstr "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char *name, *seals_arg;\n" " ssize_t len;\n" " unsigned int seals;\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, fuzzy, no-wrap #| msgid "" #| " if (argc E 3) {\n" #| " fprintf(stderr, \"%s name size [seals]\\en\", argv[0]);\n" #| " fprintf(stderr, \"\\et\\(aqseals\\(aq can contain any of the \"\n" #| " \"following characters:\\en\");\n" #| " fprintf(stderr, \"\\et\\etg - F_SEAL_GROW\\en\");\n" #| " fprintf(stderr, \"\\et\\ets - F_SEAL_SHRINK\\en\");\n" #| " fprintf(stderr, \"\\et\\etw - F_SEAL_WRITE\\en\");\n" #| " fprintf(stderr, \"\\et\\etW - F_SEAL_FUTURE_WRITE\\en\");\n" #| " fprintf(stderr, \"\\et\\etS - F_SEAL_SEAL\\en\");\n" #| " exit(EXIT_FAILURE);\n" #| " }\n" msgid "" " if (argc E 3) {\n" " fprintf(stderr, \"%s name size [seals]\\en\", argv[0]);\n" " fprintf(stderr, \"\\et\\[aq]seals\\[aq] can contain any of the \"\n" " \"following characters:\\en\");\n" " fprintf(stderr, \"\\et\\etg - F_SEAL_GROW\\en\");\n" " fprintf(stderr, \"\\et\\ets - F_SEAL_SHRINK\\en\");\n" " fprintf(stderr, \"\\et\\etw - F_SEAL_WRITE\\en\");\n" " fprintf(stderr, \"\\et\\etW - F_SEAL_FUTURE_WRITE\\en\");\n" " fprintf(stderr, \"\\et\\etS - F_SEAL_SEAL\\en\");\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" " if (argc E 3) {\n" " fprintf(stderr, \"%s name size [seals]\\en\", argv[0]);\n" " fprintf(stderr, \"\\et\\(aqseals\\(aq могут быть \"\n" " \"следующие символы::\\en\");\n" " fprintf(stderr, \"\\et\\etg - F_SEAL_GROW\\en\");\n" " fprintf(stderr, \"\\et\\ets - F_SEAL_SHRINK\\en\");\n" " fprintf(stderr, \"\\et\\etw - F_SEAL_WRITE\\en\");\n" " fprintf(stderr, \"\\et\\etW - F_SEAL_FUTURE_WRITE\\en\");\n" " fprintf(stderr, \"\\et\\etS - F_SEAL_SEAL\\en\");\n" " exit(EXIT_FAILURE);\n" " }\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " name = argv[1];\n" " len = atoi(argv[2]);\n" " seals_arg = argv[3];\n" msgstr "" " name = argv[1];\n" " len = atoi(argv[2]);\n" " seals_arg = argv[3];\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* Create an anonymous file in tmpfs; allow seals to be\n" " placed on the file. */\n" msgstr "" " /* Создаётся анонимный файл в tmpfs; на файл\n" " накладываются указанные печати. */\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " fd = memfd_create(name, MFD_ALLOW_SEALING);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"memfd_create\");\n" msgstr "" " fd = memfd_create(name, MFD_ALLOW_SEALING);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"memfd_create\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " /* Size the file as specified on the command line. */\n" msgstr " /* Размер файл как указано в командной строке. */\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (ftruncate(fd, len) == -1)\n" " err(EXIT_FAILURE, \"truncate\");\n" msgstr "" " if (ftruncate(fd, len) == -1)\n" " err(EXIT_FAILURE, \"truncate\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"PID: %jd; fd: %d; /proc/%jd/fd/%d\\en\",\n" " (intmax_t) getpid(), fd, (intmax_t) getpid(), fd);\n" msgstr "" " printf(\"PID: %jd; fd: %d; /proc/%jd/fd/%d\\en\",\n" " (intmax_t) getpid(), fd, (intmax_t) getpid(), fd);\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* Code to map the file and populate the mapping with data\n" " omitted. */\n" msgstr " /* Здесь может быть код для отображения файла и заполнения данными. */\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, fuzzy, no-wrap #| msgid "" #| " /* If a \\(aqseals\\(aq command-line argument was supplied, set some\n" #| " seals on the file. */\n" msgid "" " /* If a \\[aq]seals\\[aq] command-line argument was supplied, set some\n" " seals on the file. */\n" msgstr "" " /* Если в командной строке задан параметр \\(aqпечати\\(aq, то\n" " накладываем их на файл. */\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (seals_arg != NULL) {\n" " seals = 0;\n" msgstr "" " if (seals_arg != NULL) {\n" " seals = 0;\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, fuzzy, no-wrap #| msgid "" #| " if (strchr(seals_arg, \\(aqg\\(aq) != NULL)\n" #| " seals |= F_SEAL_GROW;\n" #| " if (strchr(seals_arg, \\(aqs\\(aq) != NULL)\n" #| " seals |= F_SEAL_SHRINK;\n" #| " if (strchr(seals_arg, \\(aqw\\(aq) != NULL)\n" #| " seals |= F_SEAL_WRITE;\n" #| " if (strchr(seals_arg, \\(aqW\\(aq) != NULL)\n" #| " seals |= F_SEAL_FUTURE_WRITE;\n" #| " if (strchr(seals_arg, \\(aqS\\(aq) != NULL)\n" #| " seals |= F_SEAL_SEAL;\n" msgid "" " if (strchr(seals_arg, \\[aq]g\\[aq]) != NULL)\n" " seals |= F_SEAL_GROW;\n" " if (strchr(seals_arg, \\[aq]s\\[aq]) != NULL)\n" " seals |= F_SEAL_SHRINK;\n" " if (strchr(seals_arg, \\[aq]w\\[aq]) != NULL)\n" " seals |= F_SEAL_WRITE;\n" " if (strchr(seals_arg, \\[aq]W\\[aq]) != NULL)\n" " seals |= F_SEAL_FUTURE_WRITE;\n" " if (strchr(seals_arg, \\[aq]S\\[aq]) != NULL)\n" " seals |= F_SEAL_SEAL;\n" msgstr "" " if (strchr(seals_arg, \\(aqg\\(aq) != NULL)\n" " seals |= F_SEAL_GROW;\n" " if (strchr(seals_arg, \\(aqs\\(aq) != NULL)\n" " seals |= F_SEAL_SHRINK;\n" " if (strchr(seals_arg, \\(aqw\\(aq) != NULL)\n" " seals |= F_SEAL_WRITE;\n" " if (strchr(seals_arg, \\(aqW\\(aq) != NULL)\n" " seals |= F_SEAL_FUTURE_WRITE;\n" " if (strchr(seals_arg, \\(aqS\\(aq) != NULL)\n" " seals |= F_SEAL_SEAL;\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (fcntl(fd, F_ADD_SEALS, seals) == -1)\n" " err(EXIT_FAILURE, \"fcntl\");\n" " }\n" msgstr "" " if (fcntl(fd, F_ADD_SEALS, seals) == -1)\n" " err(EXIT_FAILURE, \"fcntl\");\n" " }\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* Keep running, so that the file created by memfd_create()\n" " continues to exist. */\n" msgstr "" " /* Продолжаем выполнение для того, чтобы файл, созданный memfd_create(),\n" " продолжал существовать. */\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " pause();\n" msgstr " pause();\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" " exit(EXIT_SUCCESS);\n" "}\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" msgstr "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " unsigned int seals;\n" msgstr "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " unsigned int seals;\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (argc != 2) {\n" " fprintf(stderr, \"%s /proc/PID/fd/FD\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" " if (argc != 2) {\n" " fprintf(stderr, \"%s /proc/PID/fd/FD\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " fd = open(argv[1], O_RDWR);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"open\");\n" msgstr "" " fd = open(argv[1], O_RDWR);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"open\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " seals = fcntl(fd, F_GET_SEALS);\n" " if (seals == -1)\n" " err(EXIT_FAILURE, \"fcntl\");\n" msgstr "" " seals = fcntl(fd, F_GET_SEALS);\n" " if (seals == -1)\n" " err(EXIT_FAILURE, \"fcntl\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"Existing seals:\");\n" " if (seals & F_SEAL_SEAL)\n" " printf(\" SEAL\");\n" " if (seals & F_SEAL_GROW)\n" " printf(\" GROW\");\n" " if (seals & F_SEAL_WRITE)\n" " printf(\" WRITE\");\n" " if (seals & F_SEAL_FUTURE_WRITE)\n" " printf(\" FUTURE_WRITE\");\n" " if (seals & F_SEAL_SHRINK)\n" " printf(\" SHRINK\");\n" " printf(\"\\en\");\n" msgstr "" " printf(\"Наложенные печати:\");\n" " if (seals & F_SEAL_SEAL)\n" " printf(\" SEAL\");\n" " if (seals & F_SEAL_GROW)\n" " printf(\" GROW\");\n" " if (seals & F_SEAL_WRITE)\n" " printf(\" WRITE\");\n" " if (seals & F_SEAL_FUTURE_WRITE)\n" " printf(\" FUTURE_WRITE\");\n" " if (seals & F_SEAL_SHRINK)\n" " printf(\" SHRINK\");\n" " printf(\"\\en\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* Code to map the file and access the contents of the\n" " resulting mapping omitted. */\n" msgstr " /* Здесь может быть код для отображения и доступа к содержимому файла. */\n" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "31 октября 2023 г." #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "Linux man-pages 6.06" #. type: Plain text #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Eerr.hE\n" "#include Efcntl.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Estring.hE\n" "#include Esys/mman.hE\n" "#include Eunistd.hE\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char *name, *seals_arg;\n" " ssize_t len;\n" " unsigned int seals;\n" "\\&\n" " if (argc E 3) {\n" " fprintf(stderr, \"%s name size [seals]\\en\", argv[0]);\n" " fprintf(stderr, \"\\et\\[aq]seals\\[aq] can contain any of the \"\n" " \"following characters:\\en\");\n" " fprintf(stderr, \"\\et\\etg - F_SEAL_GROW\\en\");\n" " fprintf(stderr, \"\\et\\ets - F_SEAL_SHRINK\\en\");\n" " fprintf(stderr, \"\\et\\etw - F_SEAL_WRITE\\en\");\n" " fprintf(stderr, \"\\et\\etW - F_SEAL_FUTURE_WRITE\\en\");\n" " fprintf(stderr, \"\\et\\etS - F_SEAL_SEAL\\en\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " name = argv[1];\n" " len = atoi(argv[2]);\n" " seals_arg = argv[3];\n" "\\&\n" " /* Create an anonymous file in tmpfs; allow seals to be\n" " placed on the file. */\n" "\\&\n" " fd = memfd_create(name, MFD_ALLOW_SEALING);\n" " if (fd == -1)\n" " err(EXIT_FAILURE, \"memfd_create\");\n" "\\&\n" " /* Size the file as specified on the command line. */\n" "\\&\n" " if (ftruncate(fd, len) == -1)\n" " err(EXIT_FAILURE, \"truncate\");\n" "\\&\n" " printf(\"PID: %jd; fd: %d; /proc/%jd/fd/%d\\en\",\n" " (intmax_t) getpid(), fd, (intmax_t) getpid(), fd);\n" "\\&\n" " /* Code to map the file and populate the mapping with data\n" " omitted. */\n" "\\&\n" " /* If a \\[aq]seals\\[aq] command-line argument was supplied, set some\n" " seals on the file. */\n" "\\&\n" " if (seals_arg != NULL) {\n" " seals = 0;\n" "\\&\n" " if (strchr(seals_arg, \\[aq]g\\[aq]) != NULL)\n" " seals |= F_SEAL_GROW;\n" " if (strchr(seals_arg, \\[aq]s\\[aq]) != NULL)\n" " seals |= F_SEAL_SHRINK;\n" " if (strchr(seals_arg, \\[aq]w\\[aq]) != NULL)\n" " seals |= F_SEAL_WRITE;\n" " if (strchr(seals_arg, \\[aq]W\\[aq]) != NULL)\n" " seals |= F_SEAL_FUTURE_WRITE;\n" " if (strchr(seals_arg, \\[aq]S\\[aq]) != NULL)\n" " seals |= F_SEAL_SEAL;\n" "\\&\n" " if (fcntl(fd, F_ADD_SEALS, seals) == -1)\n" " err(EXIT_FAILURE, \"fcntl\");\n" " }\n" "\\&\n" " /* Keep running, so that the file created by memfd_create()\n" " continues to exist. */\n" "\\&\n" " pause();\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "Linux man-pages 6.7" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-04-03" msgstr "3 апреля 2023 г." #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "Linux man-pages 6.04" #. type: TH #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages (unreleased)" msgstr "Linux man-pages 6.7"