Merge tag 'landlock-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mic/linux
Pull landlock updates from Mickaël Salaün: "This brings ioctl control to Landlock, contributed by Günther Noack. This also adds him as a Landlock reviewer, and fixes an issue in the sample" * tag 'landlock-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mic/linux: MAINTAINERS: Add Günther Noack as Landlock reviewer fs/ioctl: Add a comment to keep the logic in sync with LSM policies MAINTAINERS: Notify Landlock maintainers about changes to fs/ioctl.c landlock: Document IOCTL support samples/landlock: Add support for LANDLOCK_ACCESS_FS_IOCTL_DEV selftests/landlock: Exhaustive test for the IOCTL allow-list selftests/landlock: Check IOCTL restrictions for named UNIX domain sockets selftests/landlock: Test IOCTLs on named pipes selftests/landlock: Test ioctl(2) and ftruncate(2) with open(O_PATH) selftests/landlock: Test IOCTL with memfds selftests/landlock: Test IOCTL support landlock: Add IOCTL access right for character and block devices samples/landlock: Fix incorrect free in populate_ruleset_net
This commit is contained in:
@@ -128,7 +128,7 @@ struct landlock_net_port_attr {
|
||||
* files and directories. Files or directories opened before the sandboxing
|
||||
* are not subject to these restrictions.
|
||||
*
|
||||
* A file can only receive these access rights:
|
||||
* The following access rights apply only to files:
|
||||
*
|
||||
* - %LANDLOCK_ACCESS_FS_EXECUTE: Execute a file.
|
||||
* - %LANDLOCK_ACCESS_FS_WRITE_FILE: Open a file with write access. Note that
|
||||
@@ -138,12 +138,13 @@ struct landlock_net_port_attr {
|
||||
* - %LANDLOCK_ACCESS_FS_READ_FILE: Open a file with read access.
|
||||
* - %LANDLOCK_ACCESS_FS_TRUNCATE: Truncate a file with :manpage:`truncate(2)`,
|
||||
* :manpage:`ftruncate(2)`, :manpage:`creat(2)`, or :manpage:`open(2)` with
|
||||
* ``O_TRUNC``. Whether an opened file can be truncated with
|
||||
* :manpage:`ftruncate(2)` is determined during :manpage:`open(2)`, in the
|
||||
* same way as read and write permissions are checked during
|
||||
* :manpage:`open(2)` using %LANDLOCK_ACCESS_FS_READ_FILE and
|
||||
* %LANDLOCK_ACCESS_FS_WRITE_FILE. This access right is available since the
|
||||
* third version of the Landlock ABI.
|
||||
* ``O_TRUNC``. This access right is available since the third version of the
|
||||
* Landlock ABI.
|
||||
*
|
||||
* Whether an opened file can be truncated with :manpage:`ftruncate(2)` or used
|
||||
* with `ioctl(2)` is determined during :manpage:`open(2)`, in the same way as
|
||||
* read and write permissions are checked during :manpage:`open(2)` using
|
||||
* %LANDLOCK_ACCESS_FS_READ_FILE and %LANDLOCK_ACCESS_FS_WRITE_FILE.
|
||||
*
|
||||
* A directory can receive access rights related to files or directories. The
|
||||
* following access right is applied to the directory itself, and the
|
||||
@@ -198,13 +199,33 @@ struct landlock_net_port_attr {
|
||||
* If multiple requirements are not met, the ``EACCES`` error code takes
|
||||
* precedence over ``EXDEV``.
|
||||
*
|
||||
* The following access right applies both to files and directories:
|
||||
*
|
||||
* - %LANDLOCK_ACCESS_FS_IOCTL_DEV: Invoke :manpage:`ioctl(2)` commands on an opened
|
||||
* character or block device.
|
||||
*
|
||||
* This access right applies to all `ioctl(2)` commands implemented by device
|
||||
* drivers. However, the following common IOCTL commands continue to be
|
||||
* invokable independent of the %LANDLOCK_ACCESS_FS_IOCTL_DEV right:
|
||||
*
|
||||
* * IOCTL commands targeting file descriptors (``FIOCLEX``, ``FIONCLEX``),
|
||||
* * IOCTL commands targeting file descriptions (``FIONBIO``, ``FIOASYNC``),
|
||||
* * IOCTL commands targeting file systems (``FIFREEZE``, ``FITHAW``,
|
||||
* ``FIGETBSZ``, ``FS_IOC_GETFSUUID``, ``FS_IOC_GETFSSYSFSPATH``)
|
||||
* * Some IOCTL commands which do not make sense when used with devices, but
|
||||
* whose implementations are safe and return the right error codes
|
||||
* (``FS_IOC_FIEMAP``, ``FICLONE``, ``FICLONERANGE``, ``FIDEDUPERANGE``)
|
||||
*
|
||||
* This access right is available since the fifth version of the Landlock
|
||||
* ABI.
|
||||
*
|
||||
* .. warning::
|
||||
*
|
||||
* It is currently not possible to restrict some file-related actions
|
||||
* accessible through these syscall families: :manpage:`chdir(2)`,
|
||||
* :manpage:`stat(2)`, :manpage:`flock(2)`, :manpage:`chmod(2)`,
|
||||
* :manpage:`chown(2)`, :manpage:`setxattr(2)`, :manpage:`utime(2)`,
|
||||
* :manpage:`ioctl(2)`, :manpage:`fcntl(2)`, :manpage:`access(2)`.
|
||||
* :manpage:`fcntl(2)`, :manpage:`access(2)`.
|
||||
* Future Landlock evolutions will enable to restrict them.
|
||||
*/
|
||||
/* clang-format off */
|
||||
@@ -223,6 +244,7 @@ struct landlock_net_port_attr {
|
||||
#define LANDLOCK_ACCESS_FS_MAKE_SYM (1ULL << 12)
|
||||
#define LANDLOCK_ACCESS_FS_REFER (1ULL << 13)
|
||||
#define LANDLOCK_ACCESS_FS_TRUNCATE (1ULL << 14)
|
||||
#define LANDLOCK_ACCESS_FS_IOCTL_DEV (1ULL << 15)
|
||||
/* clang-format on */
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user