€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ,/translations/zh_CN/admin-guide/LSM/landlock”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/zh_TW/admin-guide/LSM/landlock”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/it_IT/admin-guide/LSM/landlock”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ja_JP/admin-guide/LSM/landlock”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ko_KR/admin-guide/LSM/landlock”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/pt_BR/admin-guide/LSM/landlock”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/sp_SP/admin-guide/LSM/landlock”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒF/var/lib/git/docbuild/linux/Documentation/admin-guide/LSM/landlock.rst”h´Kubh¶)�”}”(hŒ'Copyright © 2025 Microsoft Corporation”h]”hŒ'Copyright © 2025 Microsoft Corporation”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´Kubh¶)�”}”(hŒ"Copyright © 2026 Cloudflare, Inc.”h]”hŒ"Copyright © 2026 Cloudflare, Inc.”…”�”}”hhÖsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ Landlock: system-wide management”h]”hŒ Landlock: system-wide management”…”�”}”(hhëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhhæh²hh³hÇh´KubhŒ field_list”“”)�”}”(hhh]”(hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒAuthor”h]”hŒAuthor”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh³hÇh´KubhŒ field_body”“”)�”}”(hŒMickaël Salaün”h]”hŒ paragraph”“”)�”}”(hjh]”hŒMickaël Salaün”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþh³hÇh´K hhûh²hubhÿ)�”}”(hhh]”(j)�”}”(hŒDate”h]”hŒDate”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h³hÇh´Kubj)�”}”(hŒ October 2026 ”h]”j)�”}”(hŒ October 2026”h]”hŒ October 2026”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþh³hÇh´K hhûh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùhhæh²hh³hÇh´K ubj)�”}”(hŒ8Landlock can leverage the audit framework to log events.”h]”hŒ8Landlock can leverage the audit framework to log events.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K hhæh²hubj)�”}”(hŒUUser space documentation can be found here: Documentation/userspace-api/landlock.rst.”h]”hŒUUser space documentation can be found here: Documentation/userspace-api/landlock.rst.”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Khhæh²hubhå)�”}”(hhh]”(hê)�”}”(hŒAudit”h]”hŒAudit”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhj…h²hh³hÇh´Kubj)�”}”(hXnDenied access requests are logged by default for a sandboxed program if `audit` is enabled. This default behavior can be changed with the sys_landlock_restrict_self() flags (cf. Documentation/userspace-api/landlock.rst), suppressed on a per-object basis by using ``LANDLOCK_ADD_RULE_QUIET`` (ABI 10+), or suppressed for specific capability or namespace members with the corresponding permission rule's ``quiet_*`` field (ABI 12+). Quiet rules only suppress audit submission; they do not suppress denial trace events. Landlock logs can also be masked thanks to audit rules. Landlock can generate two audit record types.”h]”(hŒHDenied access requests are logged by default for a sandboxed program if ”…”�”}”(hj–h²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ`audit`”h]”hŒaudit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhj–ubhŒ¹ is enabled. This default behavior can be changed with the sys_landlock_restrict_self() flags (cf. Documentation/userspace-api/landlock.rst), suppressed on a per-object basis by using ”…”�”}”(hj–h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``LANDLOCK_ADD_RULE_QUIET``”h]”hŒLANDLOCK_ADD_RULE_QUIET”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj–ubhŒr (ABI 10+), or suppressed for specific capability or namespace members with the corresponding permission rule’s ”…”�”}”(hj–h²hh³Nh´Nubj³)�”}”(hŒ ``quiet_*``”h]”hŒquiet_*”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj–ubhŒÐ field (ABI 12+). Quiet rules only suppress audit submission; they do not suppress denial trace events. Landlock logs can also be masked thanks to audit rules. Landlock can generate two audit record types.”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Khj…h²hubhå)�”}”(hhh]”(hê)�”}”(hŒ Record types”h]”hŒ Record types”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhjÞh²hh³hÇh´KubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hX{ AUDIT_LANDLOCK_ACCESS This record type identifies a denied access request to a kernel resource. The ``domain`` field indicates the ID of the domain that blocked the request. The ``blockers`` field indicates the cause(s) of this denial (separated by a comma), and the following fields identify the kernel object (similar to SELinux). There may be more than one of this record type per audit event. Example with a file link request generating two records in the same event:: domain=195ba459b blockers=fs.refer path="/usr/bin" dev="vda2" ino=351 domain=195ba459b blockers=fs.make_reg,fs.refer path="/usr/local" dev="vda2" ino=365 The ``blockers`` field uses dot-separated prefixes to indicate the type of restriction that caused the denial: **fs.*** - Filesystem access rights (ABI 1+): - fs.execute, fs.write_file, fs.read_file, fs.read_dir - fs.remove_dir, fs.remove_file - fs.make_char, fs.make_dir, fs.make_reg, fs.make_sock - fs.make_fifo, fs.make_block, fs.make_sym - fs.refer (ABI 2+) - fs.truncate (ABI 3+) - fs.ioctl_dev (ABI 5+) - fs.resolve_unix (ABI 9+) **net.*** - Network access rights (ABI 4+): - net.bind_tcp - TCP port binding was denied - net.connect_tcp - TCP connection was denied - net.bind_udp - UDP port binding was denied - net.connect_send_udp - UDP connection and send was denied **scope.*** - IPC scoping restrictions (ABI 6+): - scope.abstract_unix_socket - Abstract UNIX socket connection denied - scope.signal - Signal sending denied **namespace.*** - Namespace restrictions (ABI 12+): - namespace.use - Namespace use was denied (creation via :manpage:`unshare(2)`, :manpage:`clone(2)`, :manpage:`clone3(2)`, :manpage:`open_tree(2)`, or :manpage:`fsmount(2)`, or joining via :manpage:`setns(2)`); ``namespace_type`` indicates the type (hex ``CLONE_NEW*`` bitmask), and ``namespace_id`` identifies the target namespace for :manpage:`setns(2)` operations (zero for creation) **capability.*** - Capability restrictions (ABI 12+): - capability.use - Capability use was denied; ``capability`` indicates the capability number Multiple blockers can appear in a single event (comma-separated) when multiple access rights are missing. For example, creating a regular file in a directory that lacks both ``make_reg`` and ``refer`` rights would show ``blockers=fs.make_reg,fs.refer``. The object identification fields depend on the type of access being blocked: ``path``, ``dev``, ``ino`` for filesystem; ``opid``, ``ocomm`` for signals; ``namespace_type`` and ``namespace_id`` for namespace operations; ``capability`` for capability use. ”h]”(hŒterm”“”)�”}”(hŒAUDIT_LANDLOCK_ACCESS”h]”hŒAUDIT_LANDLOCK_ACCESS”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1júh³hÇh´K\hjöubhŒ definition”“”)�”}”(hhh]”(j)�”}”(hXxThis record type identifies a denied access request to a kernel resource. The ``domain`` field indicates the ID of the domain that blocked the request. The ``blockers`` field indicates the cause(s) of this denial (separated by a comma), and the following fields identify the kernel object (similar to SELinux). There may be more than one of this record type per audit event.”h]”(hŒNThis record type identifies a denied access request to a kernel resource. The ”…”�”}”(hjh²hh³Nh´Nubj³)�”}”(hŒ ``domain``”h]”hŒdomain”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjubhŒE field indicates the ID of the domain that blocked the request. The ”…”�”}”(hjh²hh³Nh´Nubj³)�”}”(hŒ ``blockers``”h]”hŒblockers”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjubhŒÏ field indicates the cause(s) of this denial (separated by a comma), and the following fields identify the kernel object (similar to SELinux). There may be more than one of this record type per audit event.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K"hj ubj)�”}”(hŒKExample with a file link request generating two records in the same event::”h]”hŒJExample with a file link request generating two records in the same event:”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K)hj ubhŒ literal_block”“”)�”}”(hŒ™domain=195ba459b blockers=fs.refer path="/usr/bin" dev="vda2" ino=351 domain=195ba459b blockers=fs.make_reg,fs.refer path="/usr/local" dev="vda2" ino=365”h]”hŒ™domain=195ba459b blockers=fs.refer path="/usr/bin" dev="vda2" ino=351 domain=195ba459b blockers=fs.make_reg,fs.refer path="/usr/local" dev="vda2" ino=365”…”�”}”hjQsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jOh³hÇh´K+hj ubj)�”}”(hŒnThe ``blockers`` field uses dot-separated prefixes to indicate the type of restriction that caused the denial:”h]”(hŒThe ”…”�”}”(hj_h²hh³Nh´Nubj³)�”}”(hŒ ``blockers``”h]”hŒblockers”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj_ubhŒ^ field uses dot-separated prefixes to indicate the type of restriction that caused the denial:”…”�”}”(hj_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K/hj ubjð)�”}”(hhh]”(jõ)�”}”(hXE**fs.*** - Filesystem access rights (ABI 1+): - fs.execute, fs.write_file, fs.read_file, fs.read_dir - fs.remove_dir, fs.remove_file - fs.make_char, fs.make_dir, fs.make_reg, fs.make_sock - fs.make_fifo, fs.make_block, fs.make_sym - fs.refer (ABI 2+) - fs.truncate (ABI 3+) - fs.ioctl_dev (ABI 5+) - fs.resolve_unix (ABI 9+) ”h]”(jû)�”}”(hŒ-**fs.*** - Filesystem access rights (ABI 1+):”h]”(hŒstrong”“”)�”}”(hŒ**fs.***”h]”hŒfs.*”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj†ubhŒ% - Filesystem access rights (ABI 1+):”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1júh³hÇh´K:hj‚ubj )�”}”(hhh]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ4fs.execute, fs.write_file, fs.read_file, fs.read_dir”h]”j)�”}”(hj°h]”hŒ4fs.execute, fs.write_file, fs.read_file, fs.read_dir”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K3hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj©ubj­)�”}”(hŒfs.remove_dir, fs.remove_file”h]”j)�”}”(hjÇh]”hŒfs.remove_dir, fs.remove_file”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K4hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj©ubj­)�”}”(hŒ4fs.make_char, fs.make_dir, fs.make_reg, fs.make_sock”h]”j)�”}”(hjÞh]”hŒ4fs.make_char, fs.make_dir, fs.make_reg, fs.make_sock”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K5hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj©ubj­)�”}”(hŒ(fs.make_fifo, fs.make_block, fs.make_sym”h]”j)�”}”(hjõh]”hŒ(fs.make_fifo, fs.make_block, fs.make_sym”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K6hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj©ubj­)�”}”(hŒfs.refer (ABI 2+)”h]”j)�”}”(hj h]”hŒfs.refer (ABI 2+)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K7hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj©ubj­)�”}”(hŒfs.truncate (ABI 3+)”h]”j)�”}”(hj#h]”hŒfs.truncate (ABI 3+)”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K8hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj©ubj­)�”}”(hŒfs.ioctl_dev (ABI 5+)”h]”j)�”}”(hj:h]”hŒfs.ioctl_dev (ABI 5+)”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K9hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj©ubj­)�”}”(hŒfs.resolve_unix (ABI 9+) ”h]”j)�”}”(hŒfs.resolve_unix (ABI 9+)”h]”hŒfs.resolve_unix (ABI 9+)”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K:hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj©ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j§h³hÇh´K3hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jôh³hÇh´K:hjubjõ)�”}”(hŒð**net.*** - Network access rights (ABI 4+): - net.bind_tcp - TCP port binding was denied - net.connect_tcp - TCP connection was denied - net.bind_udp - UDP port binding was denied - net.connect_send_udp - UDP connection and send was denied ”h]”(jû)�”}”(hŒ+**net.*** - Network access rights (ABI 4+):”h]”(j‹)�”}”(hŒ **net.***”h]”hŒnet.*”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjubhŒ" - Network access rights (ABI 4+):”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1júh³hÇh´K@hj{ubj )�”}”(hhh]”j¨)�”}”(hhh]”(j­)�”}”(hŒ*net.bind_tcp - TCP port binding was denied”h]”j)�”}”(hj£h]”hŒ*net.bind_tcp - TCP port binding was denied”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K=hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjžubj­)�”}”(hŒ+net.connect_tcp - TCP connection was denied”h]”j)�”}”(hjºh]”hŒ+net.connect_tcp - TCP connection was denied”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K>hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjžubj­)�”}”(hŒ*net.bind_udp - UDP port binding was denied”h]”j)�”}”(hjÑh]”hŒ*net.bind_udp - UDP port binding was denied”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K?hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjžubj­)�”}”(hŒ:net.connect_send_udp - UDP connection and send was denied ”h]”j)�”}”(hŒ9net.connect_send_udp - UDP connection and send was denied”h]”hŒ9net.connect_send_udp - UDP connection and send was denied”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K@hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjžubeh}”(h]”h ]”h"]”h$]”h&]”jmjnuh1j§h³hÇh´K=hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jôh³hÇh´K@hjubjõ)�”}”(hŒž**scope.*** - IPC scoping restrictions (ABI 6+): - scope.abstract_unix_socket - Abstract UNIX socket connection denied - scope.signal - Signal sending denied ”h]”(jû)�”}”(hŒ0**scope.*** - IPC scoping restrictions (ABI 6+):”h]”(j‹)�”}”(hŒ **scope.***”h]”hŒscope.*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjubhŒ% - IPC scoping restrictions (ABI 6+):”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1júh³hÇh´KDhjubj )�”}”(hhh]”j¨)�”}”(hhh]”(j­)�”}”(hŒCscope.abstract_unix_socket - Abstract UNIX socket connection denied”h]”j)�”}”(hj8h]”hŒCscope.abstract_unix_socket - Abstract UNIX socket connection denied”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KChj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj3ubj­)�”}”(hŒ%scope.signal - Signal sending denied ”h]”j)�”}”(hŒ$scope.signal - Signal sending denied”h]”hŒ$scope.signal - Signal sending denied”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KDhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj3ubeh}”(h]”h ]”h"]”h$]”h&]”jmjnuh1j§h³hÇh´KChj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jôh³hÇh´KDhjubjõ)�”}”(hXÃ**namespace.*** - Namespace restrictions (ABI 12+): - namespace.use - Namespace use was denied (creation via :manpage:`unshare(2)`, :manpage:`clone(2)`, :manpage:`clone3(2)`, :manpage:`open_tree(2)`, or :manpage:`fsmount(2)`, or joining via :manpage:`setns(2)`); ``namespace_type`` indicates the type (hex ``CLONE_NEW*`` bitmask), and ``namespace_id`` identifies the target namespace for :manpage:`setns(2)` operations (zero for creation) ”h]”(jû)�”}”(hŒ3**namespace.*** - Namespace restrictions (ABI 12+):”h]”(j‹)�”}”(hŒ**namespace.***”h]”hŒ namespace.*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj{ubhŒ$ - Namespace restrictions (ABI 12+):”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1júh³hÇh´KMhjwubj )�”}”(hhh]”j¨)�”}”(hhh]”j­)�”}”(hX�namespace.use - Namespace use was denied (creation via :manpage:`unshare(2)`, :manpage:`clone(2)`, :manpage:`clone3(2)`, :manpage:`open_tree(2)`, or :manpage:`fsmount(2)`, or joining via :manpage:`setns(2)`); ``namespace_type`` indicates the type (hex ``CLONE_NEW*`` bitmask), and ``namespace_id`` identifies the target namespace for :manpage:`setns(2)` operations (zero for creation) ”h]”j)�”}”(hX€namespace.use - Namespace use was denied (creation via :manpage:`unshare(2)`, :manpage:`clone(2)`, :manpage:`clone3(2)`, :manpage:`open_tree(2)`, or :manpage:`fsmount(2)`, or joining via :manpage:`setns(2)`); ``namespace_type`` indicates the type (hex ``CLONE_NEW*`` bitmask), and ``namespace_id`` identifies the target namespace for :manpage:`setns(2)` operations (zero for creation)”h]”(hŒ7namespace.use - Namespace use was denied (creation via ”…”�”}”(hj¡h²hh³Nh´NubhŒmanpage”“”)�”}”(hŒ:manpage:`unshare(2)`”h]”hŒ unshare(2)”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j©ah"]”h$]”h&]”hÅhÆŒpath”Œ unshare(2)”Œpage”Œunshare”Œsection”Œ2”uh1j©hj¡ubhŒ, ”…”�”}”(hj¡h²hh³Nh´Nubjª)�”}”(hŒ:manpage:`clone(2)`”h]”hŒclone(2)”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j©ah"]”h$]”h&]”hÅhÆj¹Œclone(2)”j»Œclone”j½j¾uh1j©hj¡ubhŒ, ”…”�”}”hj¡sbjª)�”}”(hŒ:manpage:`clone3(2)`”h]”hŒ clone3(2)”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j©ah"]”h$]”h&]”hÅhÆj¹Œ clone3(2)”j»Œclone3”j½j¾uh1j©hj¡ubhŒ, ”…”�”}”(hj¡h²hh³Nh´Nubjª)�”}”(hŒ:manpage:`open_tree(2)`”h]”hŒ open_tree(2)”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j©ah"]”h$]”h&]”hÅhÆj¹Œ open_tree(2)”j»Œ open_tree”j½j¾uh1j©hj¡ubhŒ, or ”…”�”}”(hj¡h²hh³Nh´Nubjª)�”}”(hŒ:manpage:`fsmount(2)`”h]”hŒ fsmount(2)”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j©ah"]”h$]”h&]”hÅhÆj¹Œ fsmount(2)”j»Œfsmount”j½j¾uh1j©hj¡ubhŒ, or joining via ”…”�”}”(hj¡h²hh³Nh´Nubjª)�”}”(hŒ:manpage:`setns(2)`”h]”hŒsetns(2)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j©ah"]”h$]”h&]”hÅhÆj¹Œsetns(2)”j»Œsetns”j½j¾uh1j©hj¡ubhŒ); ”…”�”}”(hj¡h²hh³Nh´Nubj³)�”}”(hŒ``namespace_type``”h]”hŒnamespace_type”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj¡ubhŒ indicates the type (hex ”…”�”}”(hj¡h²hh³Nh´Nubj³)�”}”(hŒ``CLONE_NEW*``”h]”hŒ CLONE_NEW*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj¡ubhŒ bitmask), and ”…”�”}”(hj¡h²hh³Nh´Nubj³)�”}”(hŒ``namespace_id``”h]”hŒ namespace_id”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj¡ubhŒ% identifies the target namespace for ”…”�”}”(hj¡h²hh³Nh´Nubjª)�”}”(hŒ:manpage:`setns(2)`”h]”hŒsetns(2)”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j©ah"]”h$]”h&]”hÅhÆj¹Œsetns(2)”j»Œsetns”j½j¾uh1j©hj¡ubhŒ operations (zero for creation)”…”�”}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KGhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjšubah}”(h]”h ]”h"]”h$]”h&]”jmjnuh1j§h³hÇh´KGhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jôh³hÇh´KMhjubjõ)�”}”(hŒ•**capability.*** - Capability restrictions (ABI 12+): - capability.use - Capability use was denied; ``capability`` indicates the capability number ”h]”(jû)�”}”(hŒ5**capability.*** - Capability restrictions (ABI 12+):”h]”(j‹)�”}”(hŒ**capability.***”h]”hŒ capability.*”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj“ubhŒ% - Capability restrictions (ABI 12+):”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1júh³hÇh´KQhj�ubj )�”}”(hhh]”j¨)�”}”(hhh]”j­)�”}”(hŒ[capability.use - Capability use was denied; ``capability`` indicates the capability number ”h]”j)�”}”(hŒZcapability.use - Capability use was denied; ``capability`` indicates the capability number”h]”(hŒ,capability.use - Capability use was denied; ”…”�”}”(hj¹h²hh³Nh´Nubj³)�”}”(hŒ``capability``”h]”hŒ capability”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj¹ubhŒ indicates the capability number”…”�”}”(hj¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KPhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj²ubah}”(h]”h ]”h"]”h$]”h&]”jmjnuh1j§h³hÇh´KPhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jôh³hÇh´KQhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubj)�”}”(hŒýMultiple blockers can appear in a single event (comma-separated) when multiple access rights are missing. For example, creating a regular file in a directory that lacks both ``make_reg`` and ``refer`` rights would show ``blockers=fs.make_reg,fs.refer``.”h]”(hŒ®Multiple blockers can appear in a single event (comma-separated) when multiple access rights are missing. For example, creating a regular file in a directory that lacks both ”…”�”}”(hj÷h²hh³Nh´Nubj³)�”}”(hŒ ``make_reg``”h]”hŒmake_reg”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj÷ubhŒ and ”…”�”}”(hj÷h²hh³Nh´Nubj³)�”}”(hŒ ``refer``”h]”hŒrefer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj÷ubhŒ rights would show ”…”�”}”(hj÷h²hh³Nh´Nubj³)�”}”(hŒ!``blockers=fs.make_reg,fs.refer``”h]”hŒblockers=fs.make_reg,fs.refer”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj÷ubhŒ.”…”�”}”(hj÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KShj ubj)�”}”(hŒýThe object identification fields depend on the type of access being blocked: ``path``, ``dev``, ``ino`` for filesystem; ``opid``, ``ocomm`` for signals; ``namespace_type`` and ``namespace_id`` for namespace operations; ``capability`` for capability use.”h]”(hŒMThe object identification fields depend on the type of access being blocked: ”…”�”}”(hj;h²hh³Nh´Nubj³)�”}”(hŒ``path``”h]”hŒpath”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj;ubhŒ, ”…”�”}”(hj;h²hh³Nh´Nubj³)�”}”(hŒ``dev``”h]”hŒdev”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj;ubhŒ, ”…”�”}”hj;sbj³)�”}”(hŒ``ino``”h]”hŒino”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj;ubhŒ for filesystem; ”…”�”}”(hj;h²hh³Nh´Nubj³)�”}”(hŒ``opid``”h]”hŒopid”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj;ubhŒ, ”…”�”}”hj;sbj³)�”}”(hŒ ``ocomm``”h]”hŒocomm”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj;ubhŒ for signals; ”…”�”}”(hj;h²hh³Nh´Nubj³)�”}”(hŒ``namespace_type``”h]”hŒnamespace_type”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj;ubhŒ and ”…”�”}”(hj;h²hh³Nh´Nubj³)�”}”(hŒ``namespace_id``”h]”hŒ namespace_id”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj;ubhŒ for namespace operations; ”…”�”}”(hj;h²hh³Nh´Nubj³)�”}”(hŒ``capability``”h]”hŒ capability”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj;ubhŒ for capability use.”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KXhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jôh³hÇh´K\hjñubjõ)�”}”(hXïAUDIT_LANDLOCK_DOMAIN This record type describes the status of a Landlock domain. The ``status`` field can be either ``allocated`` or ``deallocated``. The ``allocated`` status is part of the same audit event and follows the first logged ``AUDIT_LANDLOCK_ACCESS`` record of a domain. It identifies Landlock domain information at the time of the sys_landlock_restrict_self() call with the following fields: - the ``domain`` ID - the enforcement ``mode`` - the domain creator's ``pid`` - the domain creator's ``uid`` - the domain creator's executable path (``exe``) - the domain creator's command line (``comm``) Example:: domain=195ba459b status=allocated mode=enforcing pid=300 uid=0 exe="/root/sandboxer" comm="sandboxer" The ``deallocated`` status is an event on its own and it identifies a Landlock domain release. After such event, it is guarantee that the related domain ID will never be reused during the lifetime of the system. The ``domain`` field indicates the ID of the domain which is released, and the ``denials`` field indicates the total number of denied access request, which might not have been logged according to the audit rules and sys_landlock_restrict_self()'s flags. Example:: domain=195ba459b status=deallocated denials=3 ”h]”(jû)�”}”(hŒAUDIT_LANDLOCK_DOMAIN”h]”hŒAUDIT_LANDLOCK_DOMAIN”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1júh³hÇh´K}hjåubj )�”}”(hhh]”(j)�”}”(hŒ�This record type describes the status of a Landlock domain. The ``status`` field can be either ``allocated`` or ``deallocated``.”h]”(hŒAThis record type describes the status of a Landlock domain. The ”…”�”}”(hjúh²hh³Nh´Nubj³)�”}”(hŒ ``status``”h]”hŒstatus”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjúubhŒ field can be either ”…”�”}”(hjúh²hh³Nh´Nubj³)�”}”(hŒ ``allocated``”h]”hŒ allocated”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjúubhŒ or ”…”�”}”(hjúh²hh³Nh´Nubj³)�”}”(hŒ``deallocated``”h]”hŒ deallocated”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjúubhŒ.”…”�”}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K_hj÷ubj)�”}”(hŒþThe ``allocated`` status is part of the same audit event and follows the first logged ``AUDIT_LANDLOCK_ACCESS`` record of a domain. It identifies Landlock domain information at the time of the sys_landlock_restrict_self() call with the following fields:”h]”(hŒThe ”…”�”}”(hj>h²hh³Nh´Nubj³)�”}”(hŒ ``allocated``”h]”hŒ allocated”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj>ubhŒE status is part of the same audit event and follows the first logged ”…”�”}”(hj>h²hh³Nh´Nubj³)�”}”(hŒ``AUDIT_LANDLOCK_ACCESS``”h]”hŒAUDIT_LANDLOCK_ACCESS”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj>ubhŒ� record of a domain. It identifies Landlock domain information at the time of the sys_landlock_restrict_self() call with the following fields:”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Kbhj÷ubj¨)�”}”(hhh]”(j­)�”}”(hŒthe ``domain`` ID”h]”j)�”}”(hjuh]”(hŒthe ”…”�”}”(hjwh²hh³Nh´Nubj³)�”}”(hŒ ``domain``”h]”hŒdomain”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjwubhŒ ID”…”�”}”(hjwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Kghjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjpubj­)�”}”(hŒthe enforcement ``mode``”h]”j)�”}”(hjžh]”(hŒthe enforcement ”…”�”}”(hj h²hh³Nh´Nubj³)�”}”(hŒ``mode``”h]”hŒmode”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Khhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjpubj­)�”}”(hŒthe domain creator's ``pid``”h]”j)�”}”(hjÃh]”(hŒthe domain creator’s ”…”�”}”(hjÅh²hh³Nh´Nubj³)�”}”(hŒ``pid``”h]”hŒpid”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KihjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjpubj­)�”}”(hŒthe domain creator's ``uid``”h]”j)�”}”(hjèh]”(hŒthe domain creator’s ”…”�”}”(hjêh²hh³Nh´Nubj³)�”}”(hŒ``uid``”h]”hŒuid”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Kjhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjpubj­)�”}”(hŒ.the domain creator's executable path (``exe``)”h]”j)�”}”(hj h]”(hŒ(the domain creator’s executable path (”…”�”}”(hjh²hh³Nh´Nubj³)�”}”(hŒ``exe``”h]”hŒexe”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjubhŒ)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Kkhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjpubj­)�”}”(hŒ-the domain creator's command line (``comm``) ”h]”j)�”}”(hŒ,the domain creator's command line (``comm``)”h]”(hŒ%the domain creator’s command line (”…”�”}”(hj8h²hh³Nh´Nubj³)�”}”(hŒ``comm``”h]”hŒcomm”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj8ubhŒ)”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Klhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjpubeh}”(h]”h ]”h"]”h$]”h&]”jmjnuh1j§h³hÇh´Kghj÷ubj)�”}”(hŒ Example::”h]”hŒExample:”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Knhj÷ubjP)�”}”(hŒedomain=195ba459b status=allocated mode=enforcing pid=300 uid=0 exe="/root/sandboxer" comm="sandboxer"”h]”hŒedomain=195ba459b status=allocated mode=enforcing pid=300 uid=0 exe="/root/sandboxer" comm="sandboxer"”…”�”}”hjrsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jOh³hÇh´Kphj÷ubj)�”}”(hXÒThe ``deallocated`` status is an event on its own and it identifies a Landlock domain release. After such event, it is guarantee that the related domain ID will never be reused during the lifetime of the system. The ``domain`` field indicates the ID of the domain which is released, and the ``denials`` field indicates the total number of denied access request, which might not have been logged according to the audit rules and sys_landlock_restrict_self()'s flags.”h]”(hŒThe ”…”�”}”(hj€h²hh³Nh´Nubj³)�”}”(hŒ``deallocated``”h]”hŒ deallocated”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj€ubhŒÆ status is an event on its own and it identifies a Landlock domain release. After such event, it is guarantee that the related domain ID will never be reused during the lifetime of the system. The ”…”�”}”(hj€h²hh³Nh´Nubj³)�”}”(hŒ ``domain``”h]”hŒdomain”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj€ubhŒA field indicates the ID of the domain which is released, and the ”…”�”}”(hj€h²hh³Nh´Nubj³)�”}”(hŒ ``denials``”h]”hŒdenials”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj€ubhŒ¥ field indicates the total number of denied access request, which might not have been logged according to the audit rules and sys_landlock_restrict_self()’s flags.”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Krhj÷ubj)�”}”(hŒ Example::”h]”hŒExample:”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Kzhj÷ubjP)�”}”(hŒ-domain=195ba459b status=deallocated denials=3”h]”hŒ-domain=195ba459b status=deallocated denials=3”…”�”}”hjÒsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jOh³hÇh´K|hj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jôh³hÇh´K}hjñh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞh²hh³hÇh´Nubeh}”(h]”Œ record-types”ah ]”h"]”Œ record types”ah$]”h&]”uh1hähj…h²hh³hÇh´Kubhå)�”}”(hhh]”(hê)�”}”(hŒ Event samples”h]”hŒ Event samples”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhjúh²hh³hÇh´K€ubj)�”}”(hŒ9Here are two examples of log events (see serial numbers).”h]”hŒ9Here are two examples of log events (see serial numbers).”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K‚hjúh²hubj)�”}”(hŒ¨In this example a sandboxed program (``kill``) tries to send a signal to the init process, which is denied because of the signal scoping restriction (``LL_SCOPED=s``)::”h]”(hŒ%In this example a sandboxed program (”…”�”}”(hj h²hh³Nh´Nubj³)�”}”(hŒ``kill``”h]”hŒkill”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj ubhŒi) tries to send a signal to the init process, which is denied because of the signal scoping restriction (”…”�”}”(hj h²hh³Nh´Nubj³)�”}”(hŒ``LL_SCOPED=s``”h]”hŒ LL_SCOPED=s”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj ubhŒ):”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K„hjúh²hubjP)�”}”(hŒE$ LL_FS_RO=/ LL_FS_RW=/ LL_SCOPED=s LL_FORCE_LOG=1 ./sandboxer kill 1”h]”hŒE$ LL_FS_RO=/ LL_FS_RW=/ LL_SCOPED=s LL_FORCE_LOG=1 ./sandboxer kill 1”…”�”}”hjK sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jOh³hÇh´Kˆhjúh²hubj)�”}”(hXÓThis command generates two events, each identified with a unique serial number following a timestamp (``msg=audit(1729738800.268:30)``). The first event (serial ``30``) contains 4 records. The first record (``type=LANDLOCK_ACCESS``) shows an access denied by the domain `1a6fdc66f`. The cause of this denial is signal scoping restriction (``blockers=scope.signal``). The process that would have receive this signal is the init process (``opid=1 ocomm="systemd"``).”h]”(hŒfThis command generates two events, each identified with a unique serial number following a timestamp (”…”�”}”(hjY h²hh³Nh´Nubj³)�”}”(hŒ ``msg=audit(1729738800.268:30)``”h]”hŒmsg=audit(1729738800.268:30)”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjY ubhŒ). The first event (serial ”…”�”}”(hjY h²hh³Nh´Nubj³)�”}”(hŒ``30``”h]”hŒ30”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjY ubhŒ)) contains 4 records. The first record (”…”�”}”(hjY h²hh³Nh´Nubj³)�”}”(hŒ``type=LANDLOCK_ACCESS``”h]”hŒtype=LANDLOCK_ACCESS”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjY ubhŒ') shows an access denied by the domain ”…”�”}”(hjY h²hh³Nh´NubjŸ)�”}”(hŒ `1a6fdc66f`”h]”hŒ 1a6fdc66f”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhjY ubhŒ:. The cause of this denial is signal scoping restriction (”…”�”}”(hjY h²hh³Nh´Nubj³)�”}”(hŒ``blockers=scope.signal``”h]”hŒblockers=scope.signal”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjY ubhŒI). The process that would have receive this signal is the init process (”…”�”}”(hjY h²hh³Nh´Nubj³)�”}”(hŒ``opid=1 ocomm="systemd"``”h]”hŒopid=1 ocomm="systemd"”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjY ubhŒ).”…”�”}”(hjY h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KŠhjúh²hubj)�”}”(hŒÒThe second record (``type=LANDLOCK_DOMAIN``) describes (``status=allocated``) domain `1a6fdc66f`. This domain was created by process ``286`` executing the ``/root/sandboxer`` program launched by the root user.”h]”(hŒThe second record (”…”�”}”(hjÓ h²hh³Nh´Nubj³)�”}”(hŒ``type=LANDLOCK_DOMAIN``”h]”hŒtype=LANDLOCK_DOMAIN”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÓ ubhŒ ) describes (”…”�”}”(hjÓ h²hh³Nh´Nubj³)�”}”(hŒ``status=allocated``”h]”hŒstatus=allocated”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÓ ubhŒ ) domain ”…”�”}”(hjÓ h²hh³Nh´NubjŸ)�”}”(hŒ `1a6fdc66f`”h]”hŒ 1a6fdc66f”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhjÓ ubhŒ&. This domain was created by process ”…”�”}”(hjÓ h²hh³Nh´Nubj³)�”}”(hŒ``286``”h]”hŒ286”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÓ ubhŒ executing the ”…”�”}”(hjÓ h²hh³Nh´Nubj³)�”}”(hŒ``/root/sandboxer``”h]”hŒ/root/sandboxer”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÓ ubhŒ# program launched by the root user.”…”�”}”(hjÓ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K’hjúh²hubj)�”}”(hŒ—The third record (``type=SYSCALL``) describes the syscall, its provided arguments, its result (``success=no exit=-1``), and the process that called it.”h]”(hŒThe third record (”…”�”}”(hj; h²hh³Nh´Nubj³)�”}”(hŒ``type=SYSCALL``”h]”hŒ type=SYSCALL”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj; ubhŒ=) describes the syscall, its provided arguments, its result (”…”�”}”(hj; h²hh³Nh´Nubj³)�”}”(hŒ``success=no exit=-1``”h]”hŒsuccess=no exit=-1”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj; ubhŒ"), and the process that called it.”…”�”}”(hj; h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K–hjúh²hubj)�”}”(hŒ«The fourth record (``type=PROCTITLE``) shows the command's name as an hexadecimal value. This can be translated with ``python -c 'print(bytes.fromhex("6B696C6C0031"))'``.”h]”(hŒThe fourth record (”…”�”}”(hjm h²hh³Nh´Nubj³)�”}”(hŒ``type=PROCTITLE``”h]”hŒtype=PROCTITLE”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjm ubhŒS) shows the command’s name as an hexadecimal value. This can be translated with ”…”�”}”(hjm h²hh³Nh´Nubj³)�”}”(hŒ4``python -c 'print(bytes.fromhex("6B696C6C0031"))'``”h]”hŒ0python -c 'print(bytes.fromhex("6B696C6C0031"))'”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjm ubhŒ.”…”�”}”(hjm h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K™hjúh²hubj)�”}”(hXÚFinally, the last record (``type=LANDLOCK_DOMAIN``) is also the only one from the second event (serial ``31``). It is not tied to a direct user space action but an asynchronous one to free resources tied to a Landlock domain (``status=deallocated``). This can be useful to know that the following logs will not concern the domain ``1a6fdc66f`` anymore. This record also summarize the number of requests this domain denied (``denials=1``), whether they were logged or not.”h]”(hŒFinally, the last record (”…”�”}”(hjŸ h²hh³Nh´Nubj³)�”}”(hŒ``type=LANDLOCK_DOMAIN``”h]”hŒtype=LANDLOCK_DOMAIN”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjŸ ubhŒ5) is also the only one from the second event (serial ”…”�”}”(hjŸ h²hh³Nh´Nubj³)�”}”(hŒ``31``”h]”hŒ31”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjŸ ubhŒv). It is not tied to a direct user space action but an asynchronous one to free resources tied to a Landlock domain (”…”�”}”(hjŸ h²hh³Nh´Nubj³)�”}”(hŒ``status=deallocated``”h]”hŒstatus=deallocated”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjŸ ubhŒS). This can be useful to know that the following logs will not concern the domain ”…”�”}”(hjŸ h²hh³Nh´Nubj³)�”}”(hŒ ``1a6fdc66f``”h]”hŒ 1a6fdc66f”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjŸ ubhŒQ anymore. This record also summarize the number of requests this domain denied (”…”�”}”(hjŸ h²hh³Nh´Nubj³)�”}”(hŒ ``denials=1``”h]”hŒ denials=1”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjŸ ubhŒ#), whether they were logged or not.”…”�”}”(hjŸ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K�hjúh²hubjP)�”}”(hXFtype=LANDLOCK_ACCESS msg=audit(1729738800.268:30): domain=1a6fdc66f blockers=scope.signal opid=1 ocomm="systemd" type=LANDLOCK_DOMAIN msg=audit(1729738800.268:30): domain=1a6fdc66f status=allocated mode=enforcing pid=286 uid=0 exe="/root/sandboxer" comm="sandboxer" type=SYSCALL msg=audit(1729738800.268:30): arch=c000003e syscall=62 success=no exit=-1 [..] ppid=272 pid=286 auid=0 uid=0 gid=0 [...] comm="kill" [...] type=PROCTITLE msg=audit(1729738800.268:30): proctitle=6B696C6C0031 type=LANDLOCK_DOMAIN msg=audit(1729738800.324:31): domain=1a6fdc66f status=deallocated denials=1”h]”hXFtype=LANDLOCK_ACCESS msg=audit(1729738800.268:30): domain=1a6fdc66f blockers=scope.signal opid=1 ocomm="systemd" type=LANDLOCK_DOMAIN msg=audit(1729738800.268:30): domain=1a6fdc66f status=allocated mode=enforcing pid=286 uid=0 exe="/root/sandboxer" comm="sandboxer" type=SYSCALL msg=audit(1729738800.268:30): arch=c000003e syscall=62 success=no exit=-1 [..] ppid=272 pid=286 auid=0 uid=0 gid=0 [...] comm="kill" [...] type=PROCTITLE msg=audit(1729738800.268:30): proctitle=6B696C6C0031 type=LANDLOCK_DOMAIN msg=audit(1729738800.324:31): domain=1a6fdc66f status=deallocated denials=1”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œnone”Œhighlight_args”}”uh1jOh³hÇh´K¥hjúh²hubj)�”}”(hŒ>Here is another example showcasing filesystem access control::”h]”hŒ=Here is another example showcasing filesystem access control:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K­hjúh²hubjP)�”}”(hŒP$ LL_FS_RO=/ LL_FS_RW=/tmp LL_FORCE_LOG=1 ./sandboxer sh -c "echo > /etc/passwd"”h]”hŒP$ LL_FS_RO=/ LL_FS_RW=/tmp LL_FORCE_LOG=1 ./sandboxer sh -c "echo > /etc/passwd"”…”�”}”hj( sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jOh³hÇh´K¯hjúh²hubj)�”}”(hŒ‚The related audit logs contains 8 records from 3 different events (serials 33, 34 and 35) created by the same domain `1a6fdc679`::”h]”(hŒuThe related audit logs contains 8 records from 3 different events (serials 33, 34 and 35) created by the same domain ”…”�”}”(hj6 h²hh³Nh´NubjŸ)�”}”(hŒ `1a6fdc679`”h]”hŒ 1a6fdc679”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jžhj6 ubhŒ:”…”�”}”(hj6 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K±hjúh²hubjP)�”}”(hXÿtype=LANDLOCK_ACCESS msg=audit(1729738800.221:33): domain=1a6fdc679 blockers=fs.write_file path="/dev/tty" dev="devtmpfs" ino=9 type=LANDLOCK_DOMAIN msg=audit(1729738800.221:33): domain=1a6fdc679 status=allocated mode=enforcing pid=289 uid=0 exe="/root/sandboxer" comm="sandboxer" type=SYSCALL msg=audit(1729738800.221:33): arch=c000003e syscall=257 success=no exit=-13 [...] ppid=272 pid=289 auid=0 uid=0 gid=0 [...] comm="sh" [...] type=PROCTITLE msg=audit(1729738800.221:33): proctitle=7368002D63006563686F203E202F6574632F706173737764 type=LANDLOCK_ACCESS msg=audit(1729738800.221:34): domain=1a6fdc679 blockers=fs.write_file path="/etc/passwd" dev="vda2" ino=143821 type=SYSCALL msg=audit(1729738800.221:34): arch=c000003e syscall=257 success=no exit=-13 [...] ppid=272 pid=289 auid=0 uid=0 gid=0 [...] comm="sh" [...] type=PROCTITLE msg=audit(1729738800.221:34): proctitle=7368002D63006563686F203E202F6574632F706173737764 type=LANDLOCK_DOMAIN msg=audit(1729738800.261:35): domain=1a6fdc679 status=deallocated denials=2”h]”hXÿtype=LANDLOCK_ACCESS msg=audit(1729738800.221:33): domain=1a6fdc679 blockers=fs.write_file path="/dev/tty" dev="devtmpfs" ino=9 type=LANDLOCK_DOMAIN msg=audit(1729738800.221:33): domain=1a6fdc679 status=allocated mode=enforcing pid=289 uid=0 exe="/root/sandboxer" comm="sandboxer" type=SYSCALL msg=audit(1729738800.221:33): arch=c000003e syscall=257 success=no exit=-13 [...] ppid=272 pid=289 auid=0 uid=0 gid=0 [...] comm="sh" [...] type=PROCTITLE msg=audit(1729738800.221:33): proctitle=7368002D63006563686F203E202F6574632F706173737764 type=LANDLOCK_ACCESS msg=audit(1729738800.221:34): domain=1a6fdc679 blockers=fs.write_file path="/etc/passwd" dev="vda2" ino=143821 type=SYSCALL msg=audit(1729738800.221:34): arch=c000003e syscall=257 success=no exit=-13 [...] ppid=272 pid=289 auid=0 uid=0 gid=0 [...] comm="sh" [...] type=PROCTITLE msg=audit(1729738800.221:34): proctitle=7368002D63006563686F203E202F6574632F706173737764 type=LANDLOCK_DOMAIN msg=audit(1729738800.261:35): domain=1a6fdc679 status=deallocated denials=2”…”�”}”hjV sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jOh³hÇh´K´hjúh²hubeh}”(h]”Œ event-samples”ah ]”h"]”Œ event samples”ah$]”h&]”uh1hähj…h²hh³hÇh´K€ubhå)�”}”(hhh]”(hê)�”}”(hŒEvent filtering”h]”hŒEvent filtering”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhjl h²hh³hÇh´K¿ubj)�”}”(hŒÇIf you get spammed with audit logs related to Landlock, this is either an attack attempt or a bug in the security policy. We can put in place some filters to limit noise with two complementary ways:”h]”hŒÇIf you get spammed with audit logs related to Landlock, this is either an attack attempt or a bug in the security policy. We can put in place some filters to limit noise with two complementary ways:”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÁhjl h²hubj¨)�”}”(hhh]”(j­)�”}”(hŒ¸with sys_landlock_restrict_self()'s flags, ``LANDLOCK_ADD_RULE_QUIET`` (ABI 10+), or the permission rules' per-member ``quiet_*`` fields (ABI 12+) if we can fix the sandboxed programs,”h]”j)�”}”(hŒ¸with sys_landlock_restrict_self()'s flags, ``LANDLOCK_ADD_RULE_QUIET`` (ABI 10+), or the permission rules' per-member ``quiet_*`` fields (ABI 12+) if we can fix the sandboxed programs,”h]”(hŒ-with sys_landlock_restrict_self()’s flags, ”…”�”}”(hj’ h²hh³Nh´Nubj³)�”}”(hŒ``LANDLOCK_ADD_RULE_QUIET``”h]”hŒLANDLOCK_ADD_RULE_QUIET”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj’ ubhŒ2 (ABI 10+), or the permission rules’ per-member ”…”�”}”(hj’ h²hh³Nh´Nubj³)�”}”(hŒ ``quiet_*``”h]”hŒquiet_*”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj’ ubhŒ7 fields (ABI 12+) if we can fix the sandboxed programs,”…”�”}”(hj’ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÅhjŽ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj‹ h²hh³hÇh´Nubj­)�”}”(hŒ2or with audit rules (see :manpage:`auditctl(8)`). ”h]”j)�”}”(hŒ1or with audit rules (see :manpage:`auditctl(8)`).”h]”(hŒor with audit rules (see ”…”�”}”(hjÎ h²hh³Nh´Nubjª)�”}”(hŒ:manpage:`auditctl(8)`”h]”hŒ auditctl(8)”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”j©ah"]”h$]”h&]”hÅhÆj¹Œ auditctl(8)”j»Œauditctl”j½Œ8”uh1j©hjÎ ubhŒ).”…”�”}”(hjÎ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÉhjÊ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj‹ h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jmjnuh1j§h³hÇh´KÅhjl h²hubeh}”(h]”Œevent-filtering”ah ]”h"]”Œevent filtering”ah$]”h&]”uh1hähj…h²hh³hÇh´K¿ubeh}”(h]”Œaudit”ah ]”h"]”Œaudit”ah$]”h&]”uh1hähhæh²hh³hÇh´Kubhå)�”}”(hhh]”(hê)�”}”(hŒ Tracepoints”h]”hŒ Tracepoints”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhj h²hh³hÇh´KÌubj)�”}”(hX8Landlock also provides tracepoints as an alternative to audit for debugging and observability. Tracepoints fire unconditionally, independent of audit configuration, ``audit_enabled``, and domain log flags. This makes them suitable for always-on monitoring with eBPF or for ad-hoc debugging with ``trace-pipe``.”h]”(hŒ¦Landlock also provides tracepoints as an alternative to audit for debugging and observability. Tracepoints fire unconditionally, independent of audit configuration, ”…”�”}”(hj h²hh³Nh´Nubj³)�”}”(hŒ``audit_enabled``”h]”hŒ audit_enabled”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj ubhŒr, and domain log flags. This makes them suitable for always-on monitoring with eBPF or for ad-hoc debugging with ”…”�”}”(hj h²hh³Nh´Nubj³)�”}”(hŒ``trace-pipe``”h]”hŒ trace-pipe”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÎhj h²hubj)�”}”(hXSee Documentation/trace/events-landlock.rst for the complete event reference: the full event list, how to enable events and read their output, the field formats, the ``check_rule`` interpretation guide, worked event samples, ftrace filtering, and eBPF access.”h]”(hŒ¦See Documentation/trace/events-landlock.rst for the complete event reference: the full event list, how to enable events and read their output, the field formats, the ”…”�”}”(hjP h²hh³Nh´Nubj³)�”}”(hŒ``check_rule``”h]”hŒ check_rule”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjP ubhŒO interpretation guide, worked event samples, ftrace filtering, and eBPF access.”…”�”}”(hjP h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÔhj h²hubhŒtarget”“”)�”}”(hŒ.. _landlock_observability:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œlandlock-observability”uh1jp h´KÙhj h²hh³hÇubhå)�”}”(hhh]”(hê)�”}”(hŒWhen to use tracing vs audit”h]”hŒWhen to use tracing vs audit”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhj~ h²hh³hÇh´KÜubj)�”}”(hŒ/status`` uses ``PTRACE_MODE_NOAUDIT``, and :manpage:`listxattr(2)` probes ``CAP_SYS_ADMIN`` with ``CAP_OPT_NOAUDIT`` to decide whether to list ``trusted.*`` extended attributes). When NOAUDIT is set, neither audit records nor trace events are emitted, and the denial is not counted in ``denials``. The denial is still enforced. This avoids performance overhead and noise from speculative probes that test permissions without performing an actual access. ”h]”j)�”}”(hX:**NOAUDIT hooks**: Some LSM hooks suppress logging for speculative permission probes (e.g., reading ``/proc//status`` uses ``PTRACE_MODE_NOAUDIT``, and :manpage:`listxattr(2)` probes ``CAP_SYS_ADMIN`` with ``CAP_OPT_NOAUDIT`` to decide whether to list ``trusted.*`` extended attributes). When NOAUDIT is set, neither audit records nor trace events are emitted, and the denial is not counted in ``denials``. The denial is still enforced. This avoids performance overhead and noise from speculative probes that test permissions without performing an actual access.”h]”(j‹)�”}”(hŒ**NOAUDIT hooks**”h]”hŒ NOAUDIT hooks”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjv ubhŒS: Some LSM hooks suppress logging for speculative permission probes (e.g., reading ”…”�”}”(hjv h²hh³Nh´Nubj³)�”}”(hŒ``/proc//status``”h]”hŒ/proc//status”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjv ubhŒ uses ”…”�”}”(hjv h²hh³Nh´Nubj³)�”}”(hŒ``PTRACE_MODE_NOAUDIT``”h]”hŒPTRACE_MODE_NOAUDIT”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjv ubhŒ, and ”…”�”}”(hjv h²hh³Nh´Nubjª)�”}”(hŒ:manpage:`listxattr(2)`”h]”hŒ listxattr(2)”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”j©ah"]”h$]”h&]”hÅhÆj¹Œ listxattr(2)”j»Œ listxattr”j½j¾uh1j©hjv ubhŒ probes ”…”�”}”(hjv h²hh³Nh´Nubj³)�”}”(hŒ``CAP_SYS_ADMIN``”h]”hŒ CAP_SYS_ADMIN”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjv ubhŒ with ”…”�”}”(hjv h²hh³Nh´Nubj³)�”}”(hŒ``CAP_OPT_NOAUDIT``”h]”hŒCAP_OPT_NOAUDIT”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjv ubhŒ to decide whether to list ”…”�”}”(hjv h²hh³Nh´Nubj³)�”}”(hŒ ``trusted.*``”h]”hŒ trusted.*”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjv ubhŒ‚ extended attributes). When NOAUDIT is set, neither audit records nor trace events are emitted, and the denial is not counted in ”…”�”}”(hjv h²hh³Nh´Nubj³)�”}”(hŒ ``denials``”h]”hŒdenials”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjv ubhŒŸ. The denial is still enforced. This avoids performance overhead and noise from speculative probes that test permissions without performing an actual access.”…”�”}”(hjv h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Mhjr ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj h²hh³hÇh´Nubj­)�”}”(hŒ‰**Audit rate limiting**: The audit subsystem may silently drop records when the audit queue is full. Trace events are not rate-limited. ”h]”j)�”}”(hŒˆ**Audit rate limiting**: The audit subsystem may silently drop records when the audit queue is full. Trace events are not rate-limited.”h]”(j‹)�”}”(hŒ**Audit rate limiting**”h]”hŒAudit rate limiting”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjubhŒq: The audit subsystem may silently drop records when the audit queue is full. Trace events are not rate-limited.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj h²hh³hÇh´Nubj­)�”}”(hŒ{**Tracepoint disabled**: When a trace event is disabled (the default state), the tracepoint is a no-op with zero overhead. ”h]”j)�”}”(hŒz**Tracepoint disabled**: When a trace event is disabled (the default state), the tracepoint is a no-op with zero overhead.”h]”(j‹)�”}”(hŒ**Tracepoint disabled**”h]”hŒTracepoint disabled”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjBubhŒc: When a trace event is disabled (the default state), the tracepoint is a no-op with zero overhead.”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Mhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hj h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jmjnuh1j§h³hÇh´Mhjô h²hubj)�”}”(hX³When both audit and tracing are active, every denial emits a trace event, and a denial that the domain's log policy selects additionally produces an audit record (subject to the Landlock log flags). The ``denials`` count in ``free_domain`` events is incremented for every denial regardless of the log flags, so it can exceed the number of audit records (which the log flags and audit-side rate-limiting or exclude rules may suppress).”h]”(hŒÎWhen both audit and tracing are active, every denial emits a trace event, and a denial that the domain’s log policy selects additionally produces an audit record (subject to the Landlock log flags). The ”…”�”}”(hjjh²hh³Nh´Nubj³)�”}”(hŒ ``denials``”h]”hŒdenials”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjjubhŒ count in ”…”�”}”(hjjh²hh³Nh´Nubj³)�”}”(hŒ``free_domain``”h]”hŒ free_domain”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjjubhŒÃ events is incremented for every denial regardless of the log flags, so it can exceed the number of audit records (which the log flags and audit-side rate-limiting or exclude rules may suppress).”…”�”}”(hjjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Mhjô h²hubjq )�”}”(hŒ$.. _landlock_observability_security:”h]”h}”(h]”h ]”h"]”h$]”h&]”j| Œlandlock-observability-security”uh1jp h´Mhjô h²hh³hÇubeh}”(h]”Œ(observability-guarantees-and-limitations”ah ]”h"]”Œ(observability guarantees and limitations”ah$]”h&]”uh1hähj h²hh³hÇh´Kûubhå)�”}”(hhh]”(hê)�”}”(hŒ%Observability security considerations”h]”hŒ%Observability security considerations”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhj¯h²hh³hÇh´Mubj)�”}”(hXÍBoth audit records and trace events expose information about all Landlock-sandboxed processes on the system, including filesystem paths being accessed, network ports, capability numbers, namespace types and IDs, and process identities. System administrators must ensure that access to audit logs (controlled by the audit subsystem configuration) and to trace events (requiring ``CAP_SYS_ADMIN`` or ``CAP_BPF`` + ``CAP_PERFMON``) is restricted to trusted users.”h]”(hXzBoth audit records and trace events expose information about all Landlock-sandboxed processes on the system, including filesystem paths being accessed, network ports, capability numbers, namespace types and IDs, and process identities. System administrators must ensure that access to audit logs (controlled by the audit subsystem configuration) and to trace events (requiring ”…”�”}”(hjÀh²hh³Nh´Nubj³)�”}”(hŒ``CAP_SYS_ADMIN``”h]”hŒ CAP_SYS_ADMIN”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÀubhŒ or ”…”�”}”(hjÀh²hh³Nh´Nubj³)�”}”(hŒ ``CAP_BPF``”h]”hŒCAP_BPF”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÀubhŒ + ”…”�”}”(hjÀh²hh³Nh´Nubj³)�”}”(hŒ``CAP_PERFMON``”h]”hŒ CAP_PERFMON”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÀubhŒ!) is restricted to trusted users.”…”�”}”(hjÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M!hj¯h²hubj)�”}”(hXeBPF programs attached to Landlock trace events have access to the full kernel context of each event (ruleset rules, domain hierarchy, process credentials) via BTF, exposing sensitive state about every sandboxed process. Restrict this access to trusted users, as for the audit logs.”h]”hXeBPF programs attached to Landlock trace events have access to the full kernel context of each event (ruleset rules, domain hierarchy, process credentials) via BTF, exposing sensitive state about every sandboxed process. Restrict this access to trusted users, as for the audit logs.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M*hj¯h²hubj)�”}”(hŒ’Audit logs and kernel trace events require elevated privileges and are system-wide; they are not designed for per-sandbox unprivileged monitoring.”h]”hŒ’Audit logs and kernel trace events require elevated privileges and are system-wide; they are not designed for per-sandbox unprivileged monitoring.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M/hj¯h²hubeh}”(h]”(Œ%observability-security-considerations”j¦eh ]”h"]”(Œ%observability security considerations”Œlandlock_observability_security”eh$]”h&]”uh1hähj h²hh³hÇh´Mjð }”j&jœsjò }”j¦jœsubeh}”(h]”Œ tracepoints”ah ]”h"]”Œ tracepoints”ah$]”h&]”uh1hähhæh²hh³hÇh´KÌubhå)�”}”(hhh]”(hê)�”}”(hŒAdditional documentation”h]”hŒAdditional documentation”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhj3h²hh³hÇh´M4ubj¨)�”}”(hhh]”(j­)�”}”(hŒ`Linux Audit Documentation`_”h]”j)�”}”(hjIh]”hŒ reference”“”)�”}”(hjIh]”hŒLinux Audit Documentation”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒLinux Audit Documentation”Œrefuri”Œ7https://github.com/linux-audit/audit-documentation/wiki”uh1jNhjKŒresolved”Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M6hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjDh²hh³hÇh´Nubj­)�”}”(hŒ(Documentation/userspace-api/landlock.rst”h]”j)�”}”(hjph]”hŒ(Documentation/userspace-api/landlock.rst”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M7hjnuba•h}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjDh²hh³hÇh´Nubj­)�”}”(hŒ'Documentation/trace/events-landlock.rst”h]”j)�”}”(hj‡h]”hŒ'Documentation/trace/events-landlock.rst”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M8hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjDh²hh³hÇh´Nubj­)�”}”(hŒ#Documentation/security/landlock.rst”h]”j)�”}”(hjžh]”hŒ#Documentation/security/landlock.rst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M9hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjDh²hh³hÇh´Nubj­)�”}”(hŒhttps://landlock.io ”h]”j)�”}”(hŒhttps://landlock.io”h]”jO)�”}”(hj¹h]”hŒhttps://landlock.io”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j¹uh1jNhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M:hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¬hjDh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jmŒ*”uh1j§h³hÇh´M6hj3h²hubh¶)�”}”(hŒLinks”h]”hŒLinks”…”�”}”hjÜsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhj3h²hh³hÇh´M<ubjq )�”}”(hŒY.. _Linux Audit Documentation: https://github.com/linux-audit/audit-documentation/wiki”h]”h}”(h]”Œlinux-audit-documentation”ah ]”h"]”Œlinux audit documentation”ah$]”h&]”j_j`uh1jp h´M=hj3h²hh³hÇŒ referenced”Kubeh}”(h]”Œadditional-documentation”ah ]”h"]”Œadditional documentation”ah$]”h&]”uh1hähhæh²hh³hÇh´M4ubeh}”(h]”Œlandlock-system-wide-management”ah ]”h"]”Œ landlock: system-wide management”ah$]”h&]”uh1hähhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(héNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j*Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œlinux audit documentation”]”jPasŒrefids”}”(j} ]”jr aj¦]”jœauŒnameids”}”(jjj j j÷jôji jf j jÿ j0j-jí j} jì jé j¬j©j&j¦j%j"jüjùjójðuŒ nametypes”}”(j‰j ‰j÷‰ji ‰j ‰j0‰jí ˆjì ‰j¬‰j&ˆj%‰jü‰jóˆuh}”(jhæj j…jôjÞjf jújÿ jl j-j j} j~ jé j~ j©jô j¦j¯j"j¯jùj3jðjêuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”(hŒsystem_message”“”)�”}”(hhh]”j)�”}”(hhh]”hŒ