Commit Graph

50 Commits

Author SHA1 Message Date
Ryan Gonzalez
f687f6b2eb run: Add --instance-id-fd 2020-06-09 13:51:02 +02:00
Matthew Leeds
a994cdb30e tree-wide: Replace usages of whitelist/blacklist
The terms whitelist and blacklist are hurtful to some people, and per
our code of conduct Flatpak is an inclusive community. Replace them with
allowlist and blocklist which are also more clear. This terminology
change is being implemented more broadly in the software industry; see
e.g. https://go-review.googlesource.com/c/go/+/236857/
2020-06-09 09:24:48 +02:00
Simon McVittie
fe2536b844 exports: Add host-etc and host-os keywords
These are subsets of the host keyword, which provide access to operating
system files but not to users' personal files.

In particular, the experimental support for namespace-based sandboxes
in the Steam Runtime[1] uses the graphics stack from the host system,
which requires access to the host /usr/libQUAL, /libQUAL (even if the
host OS has undergone the /usr merge, the canonical paths of ELF
interpreters start with /lib), /etc/ld.so.cache, and for some libraries
on Debian-based systems, /etc/alternatives. It will not be possible to
do similar things in Flatpak without either allowing full host
filesystem access (which exposes personal files, and in any case cannot
be done by the Steam app because it is incompatible with --persist=.),
or adding the ability to expose /usr and related directories without
including the rest of the host filesystem.

To the best of my knowledge, host-etc is not necessary for anything;
I've mainly provided it for symmetry, since it's the other significant
thing that we mount in /run/host and cannot get via --filesystem=/path.

Some notes on the security/privacy implications of the new keywords:

- Neither new keyword allows anything that was not already allowed
  by "host".
- Neither new keyword can allow anything that was not already allowed
  to the user outside the sandbox.
- "host-os" allows enumeration of the installed packages on the host
  system, and often their version numbers too. A malicious app could
  use this to look for exploitable security vulnerabilities on the
  host system. An app could also use this for fingerprinting, although
  this is not a regression, because the systemd/D-Bus machine ID,
  MAC addresses, hostname, kernel boot UUID, DMI product ID and many
  other unique or relatively unique properties are already available
  inside the sandbox.
- "host-os" allows read access, and possibly write access (if the user
  has it outside the sandbox, for example members of group 'staff' in
  older Debian installations), to /usr/local.
- "host-etc" allows reading configuration files whose contents might
  be considered sensitive, such as /etc/passwd.

[1] https://steamcommunity.com/app/221410/discussions/0/1638675549018366706/

Signed-off-by: Simon McVittie <smcv@collabora.com>
2020-02-14 15:41:59 +01:00
Simon McVittie
851a34b355 doc: Point to flatpak-metadata(5) for the meanings of filesystem keywords
Signed-off-by: Simon McVittie <smcv@collabora.com>
2020-01-23 18:40:01 +00:00
Alexander Larsson
39903eab40 Add --device=shm permission
This new permission exposes the host /dev, which is normally not visible
even with --device=all, as it is not really a device node but rather
a bunch of shared memory blocks available on the host.

This access is needed by jack, as explained at:
https://github.com/flatpak/flatpak/issues/1509

Long term I think a better solution for pro audio (like pipewire) is
a better solution, but for now we should at least allow jack apps to work.
2020-01-17 11:47:04 +01:00
Jan Grulich
a61f61870e Add support for CUPS socket 2019-12-13 17:56:22 +01:00
Matthias Clasen
cb2cadb3ad run: Improve help output for --parent-pid
Show a placeholder to indicate that this option
takes an argument. Update docs to match.
2019-12-01 16:12:36 -05:00
Alexander Larsson
e6ae979cc4 run: Document new --parent-pid and --parent-expose-pid args 2019-11-27 14:21:25 +01:00
Alexander Larsson
c486cc461e run: Document the sandbox related swtiches 2019-11-26 09:52:07 +01:00
Philip Withnall
ab5c0968e6 flatpak-run: Add parental controls support for filtering apps
Prevent the user from running a flatpak app if that app is filtered by
the parental controls applied to the user.

If flatpak is running as a system user (UID < 1000), ignore failure to
load the app filter. This could happen if a flatpak is run in the
gnome-initial-setup session, before the user’s account is created.

Includes contributions by André Magalhães.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://github.com/flatpak/flatpak/pull/2797
2019-10-03 10:42:04 +02:00
Matthew Leeds
d8853f424c doc: Improve docs for --arch options
It's not obvious what values are valid, so add a hint.

Closes: #2930
Approved by: matthiasclasen
2019-05-30 12:12:12 +00:00
Valentin David
8ce289b4c3 Add support for PCSC socket
Closes: #2778
Approved by: alexlarsson
2019-04-12 06:37:44 +00:00
Matthias Clasen
44c540a1c4 Allow overriding bus names to none
flatpak override could set a bus name policy to
talk or own, but not to none. Fix this oversight.

Closes: https://github.com/flatpak/flatpak/issues/2722

Closes: #2818
Approved by: alexlarsson
2019-04-12 06:31:05 +00:00
Matthew Leeds
d3b7bfa92d doc: Fix capitalization of gedit
It's gedit not GEdit[1][2].

[1] https://wiki.gnome.org/Apps/Gedit
[2] https://flathub.org/apps/details/org.gnome.gedit

Closes: #2788
Approved by: matthiasclasen
2019-03-30 13:02:10 +00:00
Matthias Clasen
497b784d21 doc: Add a missing comma
Fix a pervasively copied typo.

Closes: #2553
Approved by: matthiasclasen
2019-01-09 18:45:38 +00:00
Matthias Clasen
f453544aaa Document the --cwd option
Closes: #2443
Approved by: alexlarsson
2018-12-20 15:35:23 +00:00
Matthias Clasen
1bab520197 Document FLATPAK_ID
Mention this environment variable in flatpak-run(1).

Closes: #2447
Approved by: alexlarsson
2018-12-19 14:35:39 +00:00
Matthias Clasen
07a0fd2811 Document the new env vars
Closes: #2440
Approved by: alexlarsson
2018-12-17 08:14:43 +00:00
Matthew Leeds
aa19b18ee0 fixup! doc: Mention xdg vars 2018-12-11 21:32:00 -08:00
Matthias Clasen
f3748affc4 doc: Mention xdg vars
When I made the list of overridden environment variables,
I forgot the 3 most important ones, XDG_{DATA,CACHE,CONFIG}_HOME.
2018-12-11 23:36:19 -05:00
Matthias Clasen
bf7af547aa Small fixes to many man pages
Make synopses more concise in various place, improve
consistency of formatting, and fix some small mistakes
and oversights.

Closes: #2307
Approved by: matthiasclasen
2018-11-12 14:28:41 +00:00
Matthias Clasen
dd7a163a28 run: Document new options
Document --user, --system nd --installation.

Closes: #2158
Approved by: alexlarsson
2018-10-01 13:05:12 +00:00
Matthias Clasen
d83adbc71a docs: Document environment variable handling
Mention how flatpak run handles environment variables,
and include the blacklist of variables we always override.

Closes: #2141
Approved by: alexlarsson
2018-09-27 07:29:18 +00:00
Alexander Larsson
2d3f493f27 run: Add --die-with-parent to run
This is similare to the already existing arg in flatpak build.

Closes: #1946
Approved by: alexlarsson
2018-08-08 12:09:14 +00:00
Matthew Leeds
d5606cd43a doc: Fix documentation of shared options
The --verbose and --ostree-verbose options are global to all
subcommands, but --version can only be used with the main "flatpak"
command, so fix the man pages to reflect that.
2018-06-26 00:10:55 -07:00
Joonas Sarajärvi
59ecad0f29 Add ssh-auth socket support
SSH authentication sockets can be placed in a number of places, so it
is difficult for applications to just mount a fixed directory or
directories, hoping that SSH_AUTH_SOCK points somewhere inside the
mounted content.

Closes: #1764
Approved by: alexlarsson
2018-06-19 07:11:36 +00:00
Alexander Larsson
7739209a74 context: Add --allow=bluetooth
This gives access to AF_BLUETOOTH sockets in the seccomp rules. You additionally
need to give network access for the sockets to really work, because the
kernel doesn't (yet) namespace bluetooth sockets.

Closes: #1721
Approved by: alexlarsson
2018-05-28 13:06:50 +00:00
Alexander Larsson
f33fac310c Add fallback-x11 socket permission
This means use x11 if no alternative is present, and should be used
for applications that support both X11 and wayland, but want to be
sandboxed when running under a wayland compositor (but still want to
run under an X server).

Closes: #1416
Approved by: alexlarsson
2018-02-14 09:19:56 +00:00
Alexander Larsson
f228577377 run: Handle forwarding uris better
We need to know if we're forwarding uris or files, because
if we're doing uris we need to pass on non-file uris as-is.
So, we enclose uris with "@@u @@" instead.

This also properly (un)escapes the file uris
2017-05-03 13:53:39 +02:00
Matthias Clasen
00e166250f Document the --file-forwarding option
This commit also documents the handling of rest arguments.
Previously, there was no information about what happens to ARG...
2017-05-03 13:27:52 +02:00
Matthew Leeds
66f0efda41 doc: Add docs for undocumented options
A few options aren't documented in the manpages. This commit adds
documentation for them based on the --help output and relevant commit
messages. Some of it could probably use more elaboration.
2017-03-07 21:19:02 +01:00
Matthew Leeds
2d07f7d455 doc: Make manpages consistent with --help output
For a few commands the options aren't fully documented. This commit
makes the manpage documentation (almost) match the options shown
when you run "<command> --help" on the command line.
2017-03-07 21:19:02 +01:00
Matthew Leeds
6d0f86d868 doc: Mention that flatpak-run can be used with runtimes
The ability to use flatpak-run to enter into a shell in a runtime was
added in flatpak 0.6.13 but the docs weren't updated to reflect that.
This commit updates the flatpak-run documentation to explain the
functionality.
2017-02-27 15:04:37 -06:00
Matthew Leeds
9067c8322d doc: Fix a typo 2017-02-14 10:22:39 +01:00
Alexander Larsson
a07a146827 Allow filesystem options for xdg-[config,cache,data] for the regular xdg dirs
This means you can give access to e.g. ~/.config/dconf as --xdg-config/dconf
which then also respects XDG_CONFIG_DIR settings.
2016-11-14 18:58:44 +01:00
Adrian Perez de Castro
6cbf3b6c01 Support mixed (multilib/multiarch) binaries in Flatpaks
This adds a new "multiarch" feature which allows bundling e.g. 32-bit
binaries to be run in a x86_64 environment. By default, the seccomp
filter is configured to allow only the native architecture. When the
"multiarch" feature is enabled, the filter will be configured to allow
running binaries of additional architectures supported. For x86_64, this
allows x86 32-bit binaries; and for Aarch64, allows 32-bit ARM binaries.

Application bundles can use the feature e.g. in order to ship 32-bit
binaries alongside with a mostly-64-bit application. This is particularly
interesting when for applications that might launch themselves prebuilt
programs for which 64-bit versions do not exist. For example, the Steam
application is available as a 64-bit executable, but some of the games
available are 32-bit only. A Flatpak bundle for the Steam application
with "multiarch" enabled is able launch the 32-bit games -- without the
feature enabled, the seccomp filter would prevent them from running.

Multiple-architecture support is enabled by adding the "multiarch" value
for the "features" key in the metadata file for a Flatpak:

  [Context]
  features=multiarch;

The corresponding "--allow=multiarch" command line option is supported
in "flatpak build-finish" as well.
2016-10-03 09:54:05 +02:00
Alexander Larsson
c9c35133c3 Add support for --device=kvm
Solves: https://github.com/flatpak/flatpak/issues/332
2016-09-30 16:46:51 +02:00
Alexander Larsson
b53b78b2a2 run: Drop/Hide --no-desktop option
This is no longer needed, as we don't hard-require systemd --user.
We keep the opion there, but hidden in order to be backwards compatible
with old code that used this.
2016-09-08 11:40:49 +02:00
Alexander Larsson
aafc0f3b66 run/metadata: Add support for --allow=devel
This enables support for ptrace and perf for the app, similar
to what run -d manually gave you before. This is nice to be
able to package an app like gnome-software.
2016-09-05 21:41:14 +02:00
Alexander Larsson
003ef9ee2e Revert "Set up logging to the journal" 2016-07-29 00:24:43 +02:00
Matthias Clasen
6e0d8e394e Document the new option 2016-07-25 10:36:00 -04:00
Mario Sanchez Prada
8c8b91609c flatpak-run: Add a new --no-desktop option to prevent creation of cgroups
This is not intented for normal use, but it can be useful in cases where
we don't have a running session and sandboxing is not strictly required.
2016-07-01 22:12:04 +01:00
Alexander Larsson
7070dbf96c Make journal always available in the sandbox
I don't think it makes sense to have to enable this for everything.
It should be safe in the sense that you can't ever do more than
the user can do anyway, and there is no way to use this to communicate
with the rest of the system because you can't read from it.
The worst this could ever cause is to overload the system, but the
sandbox doesn't protect against that in any other way anyway.
2016-06-28 15:05:01 +02:00
Alexander Larsson
43dbf96f7c Merge pull request #148 from matthiasclasen/journal
make journal logging work in the sandbox
2016-06-27 11:14:11 +02:00
Matthias Clasen
f6af5702db Document new socket option 2016-06-24 02:01:05 -04:00
Matthias Clasen
c195c4197d Expand the flatpak run --devel docs
Mention that --devel also affects the seccomp profile.
Took me a while to find that out.
2016-06-23 14:31:40 -04:00
Alexander Larsson
a84f725211 Support --device=all
This gives the application full access to the host /dev. Obviously
this is not great in terms of sandboxing, but its nice for applications
that use flatpak mostly as a way to do distribution of the app.

Also, its not like the app has full access to anything, its still
limited to the access right of the user.
2016-06-14 22:33:14 +02:00
Matthias Clasen
79365a7407 flatpak run docs: Fix formatting of references
These need to be comma-separated.
2016-06-09 22:52:06 -04:00
Simon McVittie
a4641280a7 Fix various spelling mistakes
Mostly detected by Debian's Lintian tool.

Signed-off-by: Simon McVittie <smcv@debian.org>
2016-05-17 11:43:32 +01:00
Alexander Larsson
8abbc0186e Rename everything but the on-disk location to flatpak 2016-05-09 11:11:55 +02:00