public inbox for linux-man@vger.kernel.org
 help / color / mirror / Atom feed
  • * [PATCH man 1/3] landlock.7: Update description of Landlock rules
           [not found] <20250124154445.162841-1-gnoack@google.com>
           [not found] ` <20250124154445.162841-2-gnoack@google.com>
    @ 2025-01-24 16:37 ` Günther Noack
      2025-01-24 16:37 ` [PATCH man 2/3] landlock.7: Move over documentation for ABI version 6 Günther Noack
                       ` (2 subsequent siblings)
      4 siblings, 0 replies; 20+ messages in thread
    From: Günther Noack @ 2025-01-24 16:37 UTC (permalink / raw)
      To: Alejandro Colomar
      Cc: linux-man, linux-security-module, Günther Noack,
    	Mickaël Salaün, Tahera Fahimi, Tanya Agarwal
    
    This brings it up to date with the wording in the kernel documentation.
    
    Cc: Mickaël Salaün <mic@digikod.net>
    Cc: Tahera Fahimi <fahimitahera@gmail.com>
    Cc: Tanya Agarwal <tanyaagarwal25699@gmail.com>
    Signed-off-by: Günther Noack <gnoack@google.com>
    ---
     man/man7/landlock.7 | 20 ++++++++++++++++----
     1 file changed, 16 insertions(+), 4 deletions(-)
    
    diff --git a/man/man7/landlock.7 b/man/man7/landlock.7
    index c6b7272ea..11f76b072 100644
    --- a/man/man7/landlock.7
    +++ b/man/man7/landlock.7
    @@ -39,13 +39,25 @@ the running kernel must support Landlock and
     it must be enabled at boot time.
     .\"
     .SS Landlock rules
    -A Landlock rule describes an action on an object.
    -An object is currently a file hierarchy,
    -and the related filesystem actions are defined with access rights (see
    -.BR landlock_add_rule (2)).
    +A Landlock rule describes an action on an object
    +which the process intends to perform.
     A set of rules is aggregated in a ruleset,
     which can then restrict the thread enforcing it,
     and its future children.
    +.P
    +The two existing types of rules are:
    +.P
    +.TP
    +.B Filesystem rules
    +For these rules, the object is a file hierarchy,
    +and the related filesystem actions are defined with
    +.IR "filesystem access rights" .
    +.TP
    +.B Network rules (since ABI v4)
    +For these rules, the object is a TCP port,
    +and the related actions are defined with
    +.IR "network access rights" .
    +.BR landlock_add_rule (2)).
     .\"
     .SS Filesystem actions
     These flags enable to restrict a sandboxed process to a
    -- 
    2.48.1.262.g85cc9f2d1e-goog
    
    
    ^ permalink raw reply related	[flat|nested] 20+ messages in thread
  • * [PATCH man 2/3] landlock.7: Move over documentation for ABI version 6
           [not found] <20250124154445.162841-1-gnoack@google.com>
           [not found] ` <20250124154445.162841-2-gnoack@google.com>
      2025-01-24 16:37 ` [PATCH man 1/3] landlock.7: Update description of Landlock rules Günther Noack
    @ 2025-01-24 16:37 ` Günther Noack
      2025-01-24 16:37 ` [PATCH man 3/3] landlock.7: Update wording in line with kernel side proposal Günther Noack
      2025-02-11 15:17 ` [PATCH 1/2] landlock: Minor typo and grammar fixes in IPC scoping documentation Mickaël Salaün
      4 siblings, 0 replies; 20+ messages in thread
    From: Günther Noack @ 2025-01-24 16:37 UTC (permalink / raw)
      To: Alejandro Colomar
      Cc: linux-man, linux-security-module, Günther Noack,
    	Mickaël Salaün, Tahera Fahimi, Tanya Agarwal
    
    With this ABI version, Landlock can restrict outgoing interactions with
    higher-privileged Landlock domains through Abstract Unix Domain sockets and
    signals.
    
    Cc: Mickaël Salaün <mic@digikod.net>
    Cc: Tahera Fahimi <fahimitahera@gmail.com>
    Cc: Tanya Agarwal <tanyaagarwal25699@gmail.com>
    Signed-off-by: Günther Noack <gnoack@google.com>
    ---
     man/man7/landlock.7 | 69 ++++++++++++++++++++++++++++++++++++++++++++-
     1 file changed, 68 insertions(+), 1 deletion(-)
    
    diff --git a/man/man7/landlock.7 b/man/man7/landlock.7
    index 11f76b072..30dbac73d 100644
    --- a/man/man7/landlock.7
    +++ b/man/man7/landlock.7
    @@ -248,7 +248,8 @@ This access right is available since the fifth version of the Landlock ABI.
     .SS Network flags
     These flags enable to restrict a sandboxed process
     to a set of network actions.
    -This is supported since the Landlock ABI version 4.
    +.P
    +This is supported since Landlock ABI version 4.
     .P
     The following access rights apply to TCP port numbers:
     .TP
    @@ -258,6 +259,24 @@ Bind a TCP socket to a local port.
     .B LANDLOCK_ACCESS_NET_CONNECT_TCP
     Connect an active TCP socket to a remote port.
     .\"
    +.SS Scope flags
    +These flags enable to isolate a sandboxed process from a set of IPC actions.
    +Setting a flag for a ruleset will isolate the Landlock domain
    +to forbid connections to resources outside the domain.
    +.P
    +This is supported since Landlock ABI version 6.
    +.P
    +The following scopes exist:
    +.TP
    +.B LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET
    +Restrict a sandboxed process from connecting to an abstract UNIX socket
    +created by a process outside the related Landlock domain
    +(e.g., a parent domain or a non-sandboxed process).
    +.TP
    +.B LANDLOCK_SCOPE_SIGNAL
    +Restrict a sandboxed process from sending a signal
    +to another process outside the domain.
    +.\"
     .SS Layers of file path access rights
     Each time a thread enforces a ruleset on itself,
     it updates its Landlock domain with a new layer of policy.
    @@ -334,6 +353,51 @@ and related syscalls on a target process,
     a sandboxed process should have a subset of the target process rules,
     which means the tracee must be in a sub-domain of the tracer.
     .\"
    +.SS IPC scoping
    +Similar to the implicit
    +.BR "Ptrace restrictions" ,
    +we may want to further restrict interactions between sandboxes.
    +Each Landlock domain can be explicitly scoped for a set of actions
    +by specifying it on a ruleset.
    +For example, if a sandboxed process should not be able to
    +.BR connect (2)
    +to a non-sandboxed process through abstract
    +.BR unix (7)
    +sockets,
    +we can specify such a restriction with
    +.BR LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET .
    +Moreover, if a sandboxed process should not be able
    +to send a signal to a non-sandboxed process,
    +we can specify this restriction with
    +.BR LANDLOCK_SCOPE_SIGNAL .
    +.P
    +A sandboxed process can connect to a non-sandboxed process
    +when its domain is not scoped.
    +If a process's domain is scoped,
    +it can only connect to sockets created by processes in the same scope.
    +Moreover,
    +If a process is scoped to send signal to a non-scoped process,
    +it can only send signals to processes in the same scope.
    +.P
    +A connected datagram socket behaves like a stream socket
    +when its domain is scoped,
    +meaning if the domain is scoped after the socket is connected,
    +it can still
    +.BR send (2)
    +data just like a stream socket.
    +However, in the same scenario,
    +a non-connected datagram socket cannot send data (with
    +.BR sendto (2))
    +outside its scope.
    +.P
    +A process with a scoped domain can inherit a socket
    +created by a non-scoped process.
    +The process cannot connect to this socket since it has a scoped domain.
    +.P
    +IPC scoping does not support exceptions, so if a domain is scoped,
    +no rules can be added to allow access to resources or processes
    +outside of the scope.
    +.\"
     .SS Truncating files
     The operations covered by
     .B LANDLOCK_ACCESS_FS_WRITE_FILE
    @@ -413,6 +477,9 @@ _	_	_
     \^	\^	LANDLOCK_ACCESS_NET_CONNECT_TCP
     _	_	_
     5	6.10	LANDLOCK_ACCESS_FS_IOCTL_DEV
    +_	_	_
    +6	6.12	LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET
    +\^	\^	LANDLOCK_SCOPE_SIGNAL
     .TE
     .P
     Users should use the Landlock ABI version rather than the kernel version
    -- 
    2.48.1.262.g85cc9f2d1e-goog
    
    
    ^ permalink raw reply related	[flat|nested] 20+ messages in thread
  • * [PATCH man 3/3] landlock.7: Update wording in line with kernel side proposal
           [not found] <20250124154445.162841-1-gnoack@google.com>
                       ` (2 preceding siblings ...)
      2025-01-24 16:37 ` [PATCH man 2/3] landlock.7: Move over documentation for ABI version 6 Günther Noack
    @ 2025-01-24 16:37 ` Günther Noack
      2025-02-11 15:17 ` [PATCH 1/2] landlock: Minor typo and grammar fixes in IPC scoping documentation Mickaël Salaün
      4 siblings, 0 replies; 20+ messages in thread
    From: Günther Noack @ 2025-01-24 16:37 UTC (permalink / raw)
      To: Alejandro Colomar
      Cc: linux-man, linux-security-module, Günther Noack,
    	Mickaël Salaün, Tahera Fahimi, Tanya Agarwal
    
    Cc: Mickaël Salaün <mic@digikod.net>
    Cc: Tahera Fahimi <fahimitahera@gmail.com>
    Cc: Tanya Agarwal <tanyaagarwal25699@gmail.com>
    Link: https://lore.kernel.org/linux-security-module/20250124154445.162841-2-gnoack@google.com/
    Signed-off-by: Günther Noack <gnoack@google.com>
    ---
     man/man7/landlock.7 | 75 ++++++++++++++++++++++-----------------------
     1 file changed, 37 insertions(+), 38 deletions(-)
    
    diff --git a/man/man7/landlock.7 b/man/man7/landlock.7
    index 30dbac73d..749b4a3fa 100644
    --- a/man/man7/landlock.7
    +++ b/man/man7/landlock.7
    @@ -357,46 +357,45 @@ which means the tracee must be in a sub-domain of the tracer.
     Similar to the implicit
     .BR "Ptrace restrictions" ,
     we may want to further restrict interactions between sandboxes.
    -Each Landlock domain can be explicitly scoped for a set of actions
    -by specifying it on a ruleset.
    -For example, if a sandboxed process should not be able to
    -.BR connect (2)
    -to a non-sandboxed process through abstract
    +Therefore, at ruleset creation time,
    +each Landlock domain can restrict the scope for certain operations,
    +so that these operations can only reach out to processes
    +within the same Landlock domain or in a nested Landlock domain (the "scope").
    +.P
    +The operations which can be scoped are:
    +.P
    +.TP
    +.B LANDLOCK_SCOPE_SIGNAL
    +When set,
    +this limits the sending of signals to target processes
    +which run within the same or a nested Landlock domain.
    +.TP
    +.B LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET
    +When set, this limits the set of abstract
     .BR unix (7)
    -sockets,
    -we can specify such a restriction with
    -.BR LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET .
    -Moreover, if a sandboxed process should not be able
    -to send a signal to a non-sandboxed process,
    -we can specify this restriction with
    -.BR LANDLOCK_SCOPE_SIGNAL .
    -.P
    -A sandboxed process can connect to a non-sandboxed process
    -when its domain is not scoped.
    -If a process's domain is scoped,
    -it can only connect to sockets created by processes in the same scope.
    -Moreover,
    -If a process is scoped to send signal to a non-scoped process,
    -it can only send signals to processes in the same scope.
    -.P
    -A connected datagram socket behaves like a stream socket
    -when its domain is scoped,
    -meaning if the domain is scoped after the socket is connected,
    -it can still
    +sockets we can
    +.BR connect (2)
    +to
    +to socket addresses which were created
    +by a process in the same or a nested Landlock domain.
    +.IP
    +A
    +.BR send (2)
    +on a non-connected datagram socket is treated like an implicit
    +.BR connect (2)
    +and will be blocked when the remote end does not stem
    +from the same or a nested Landlock domain.
    +.IP
    +A
     .BR send (2)
    -data just like a stream socket.
    -However, in the same scenario,
    -a non-connected datagram socket cannot send data (with
    -.BR sendto (2))
    -outside its scope.
    -.P
    -A process with a scoped domain can inherit a socket
    -created by a non-scoped process.
    -The process cannot connect to this socket since it has a scoped domain.
    -.P
    -IPC scoping does not support exceptions, so if a domain is scoped,
    -no rules can be added to allow access to resources or processes
    -outside of the scope.
    +on a socket which was previously connected will work.
    +This works for both datagram and stream sockets.
    +.P
    +IPC scoping does not support exceptions via
    +.BR landlock_add_rule (2).
    +If an operation is scoped within a domain,
    +no rules can be added to allow access
    +to resources or processes outside of the scope.
     .\"
     .SS Truncating files
     The operations covered by
    -- 
    2.48.1.262.g85cc9f2d1e-goog
    
    
    ^ permalink raw reply related	[flat|nested] 20+ messages in thread
  • * Re: [PATCH 1/2] landlock: Minor typo and grammar fixes in IPC scoping documentation
           [not found] <20250124154445.162841-1-gnoack@google.com>
                       ` (3 preceding siblings ...)
      2025-01-24 16:37 ` [PATCH man 3/3] landlock.7: Update wording in line with kernel side proposal Günther Noack
    @ 2025-02-11 15:17 ` Mickaël Salaün
      2025-02-11 15:27   ` Alejandro Colomar
      4 siblings, 1 reply; 20+ messages in thread
    From: Mickaël Salaün @ 2025-02-11 15:17 UTC (permalink / raw)
      To: Günther Noack
      Cc: linux-security-module, Tahera Fahimi, Tanya Agarwal,
    	Daniel Burgener, tools, linux-doc, Alejandro Colomar, linux-man
    
    On Fri, Jan 24, 2025 at 03:44:44PM +0000, Günther Noack wrote:
    > * Fix some whitespace, punctuation and minor grammar
    > * Add a missing sentence about the minimum ABI version,
    >   to stay in line with the section next to it
    > 
    > Cc: Mickaël Salaün <mic@digikod.net>
    > Cc: Tahera Fahimi <fahimitahera@gmail.com>
    > Cc: Tanya Agarwal <tanyaagarwal25699@gmail.com>
    > Signed-off-by: Günther Noack <gnoack@google.com>
    
    Looks good, thanks!
    
    I'm going to take this patch in my tree with the changes explained
    below. You can send a v2 with the second patch according to the reviews.
    
    As a side note, applying the patch series from this thread with b4
    doesn't work because they apply to different repositories.
    
    Dealing with duplicated doc in two repositories is not practical and
    adds work to everyone...  Could we move the non-libc syscall man pages
    to the kernel repository?
    
    > ---
    >  Documentation/userspace-api/landlock.rst | 4 ++--
    >  include/uapi/linux/landlock.h            | 6 ++++--
    >  2 files changed, 6 insertions(+), 4 deletions(-)
    > 
    > diff --git a/Documentation/userspace-api/landlock.rst b/Documentation/userspace-api/landlock.rst
    > index d639c61cb472..ca8b325d53e5 100644
    > --- a/Documentation/userspace-api/landlock.rst
    > +++ b/Documentation/userspace-api/landlock.rst
    > @@ -329,11 +329,11 @@ non-sandboxed process, we can specify this restriction with
    >  A sandboxed process can connect to a non-sandboxed process when its domain is
    >  not scoped. If a process's domain is scoped, it can only connect to sockets
    >  created by processes in the same scope.
    > -Moreover, If a process is scoped to send signal to a non-scoped process, it can
    > +Moreover, if a process is scoped to send signal to a non-scoped process, it can
    >  only send signals to processes in the same scope.
    >  
    >  A connected datagram socket behaves like a stream socket when its domain is
    > -scoped, meaning if the domain is scoped after the socket is connected , it can
    > +scoped, meaning if the domain is scoped after the socket is connected, it can
    >  still :manpage:`send(2)` data just like a stream socket.  However, in the same
    >  scenario, a non-connected datagram socket cannot send data (with
    >  :manpage:`sendto(2)`) outside its scope.
    > diff --git a/include/uapi/linux/landlock.h b/include/uapi/linux/landlock.h
    > index 33745642f787..048a2c77c4eb 100644
    > --- a/include/uapi/linux/landlock.h
    > +++ b/include/uapi/linux/landlock.h
    > @@ -268,7 +268,7 @@ struct landlock_net_port_attr {
    >   * ~~~~~~~~~~~~~~~~
    >   *
    >   * These flags enable to restrict a sandboxed process to a set of network
    > - * actions. This is supported since the Landlock ABI version 4.
    > + * actions. This is supported since Landlock ABI version 4.
    
    If that's OK with you, I'll move this sentence to a standalone paragraph
    like the one you added below:
    
    + * actions.
    + *
    + * This is supported since Landlock ABI version 4.
    
    >   *
    >   * The following access rights apply to TCP port numbers:
    >   *
    > @@ -291,11 +291,13 @@ struct landlock_net_port_attr {
    >   * Setting a flag for a ruleset will isolate the Landlock domain to forbid
    >   * connections to resources outside the domain.
    >   *
    > + * This is supported since Landlock ABI version 6.
    > + *
    >   * Scopes:
    >   *
    >   * - %LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET: Restrict a sandboxed process from
    >   *   connecting to an abstract UNIX socket created by a process outside the
    > - *   related Landlock domain (e.g. a parent domain or a non-sandboxed process).
    > + *   related Landlock domain (e.g., a parent domain or a non-sandboxed process).
    >   * - %LANDLOCK_SCOPE_SIGNAL: Restrict a sandboxed process from sending a signal
    >   *   to another process outside the domain.
    >   */
    > -- 
    > 2.48.1.262.g85cc9f2d1e-goog
    > 
    > 
    
    ^ permalink raw reply	[flat|nested] 20+ messages in thread

  • end of thread, other threads:[~2025-02-26 21:51 UTC | newest]
    
    Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <20250124154445.162841-1-gnoack@google.com>
         [not found] ` <20250124154445.162841-2-gnoack@google.com>
    2025-01-24 15:59   ` [PATCH 2/2] landlock: Clarify IPC scoping documentation Günther Noack
    2025-02-02 12:51     ` Alejandro Colomar
    2025-02-26 20:52       ` Günther Noack
    2025-02-26 21:21         ` Alejandro Colomar
    2025-02-11 15:20     ` Mickaël Salaün
    2025-01-24 16:37 ` [PATCH man 1/3] landlock.7: Update description of Landlock rules Günther Noack
    2025-01-24 16:37 ` [PATCH man 2/3] landlock.7: Move over documentation for ABI version 6 Günther Noack
    2025-01-24 16:37 ` [PATCH man 3/3] landlock.7: Update wording in line with kernel side proposal Günther Noack
    2025-02-11 15:17 ` [PATCH 1/2] landlock: Minor typo and grammar fixes in IPC scoping documentation Mickaël Salaün
    2025-02-11 15:27   ` Alejandro Colomar
    2025-02-11 15:53     ` Mickaël Salaün
    2025-02-11 16:13       ` Alejandro Colomar
    2025-02-11 18:08         ` G. Branden Robinson
    2025-02-12 15:15           ` Alejandro Colomar
    2025-02-11 19:24         ` Mickaël Salaün
    2025-02-12 15:06           ` Alejandro Colomar
    2025-02-26 20:24             ` Günther Noack
    2025-02-26 20:57               ` Alejandro Colomar
    2025-02-26 21:38                 ` Günther Noack
    2025-02-26 21:51                   ` Alejandro Colomar
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox