Commit Graph

220 Commits (9a0dcf64708730345794b049c8fc42a34b1dff9f)
 

Author SHA1 Message Date
Alexander Larsson 9a0dcf6470 Add copies of new glib APIs that we use 2015-02-08 17:08:11 +01:00
Alexander Larsson 3ef9c13598 Set PR_SET_NO_NEW_PRIVS
This means no process in the app can gain any kind of extra
privs during exec() (for instance setuid of file caps).
2015-02-08 11:32:17 +01:00
Alexander Larsson 79b12777bf Add all (unused) args to prctl call 2015-02-08 11:32:17 +01:00
Matthias Clasen a2f9562989 Teach completion about --runtime 2015-02-08 11:32:17 +01:00
Alexander Larsson 4fad768593 Merge pull request #48 from matthiasclasen/prefix-ostree-errors
Prefix many ostree error messages
2015-02-08 01:15:59 +01:00
Alexander Larsson 6a7b43a3c5 Merge pull request #49 from matthiasclasen/quote-args
Quote commandline arguments
2015-02-08 01:14:59 +01:00
Alexander Larsson b2ec77fb2f Don't run xdg-app-helper as root
Instead of running as root we setuid to the real user, after
having assured that we have the minimum amount of capabilities
required (which we then drop at the end).

This means we create all files as the actual user, and we never
risk somehow reading a file that otherwise only root could read.
2015-02-08 01:09:44 +01:00
Matthias Clasen f412d38458 Quote commandline arguments
We don't expect branch or arch names to contain spaces. But if
they do, we should not fall over needlessly.
2015-02-07 18:38:29 +01:00
Matthias Clasen 41ea4e4ebc Prefix many ostree error messages
Some of the ostree error messages don't contain sufficient detail
to be useful, so use g_prefix_error to add some context.
2015-02-07 18:02:04 +01:00
Alexander Larsson f8e4343ff5 Merge pull request #43 from matthiasclasen/remote-title
Add a --title option to add-remote
2015-02-07 15:10:30 +01:00
Alexander Larsson ab91bbf925 Merge pull request #46 from matthiasclasen/run-env
Add a --forbid option to run
2015-02-07 13:26:13 +01:00
Matthias Clasen 2a1246d136 Add a prefix to the config key
This seems to be the common practice for git addons.
Colin recommends that we do the same for ostree config keys.
2015-02-07 12:01:48 +01:00
Matthias Clasen 763b378590 Add some debug spew
Show the access we allow.
2015-02-06 17:43:53 +01:00
Matthias Clasen c313cafbae Add a --forbid option to run
This allows to restrict the access that the app gets out of
the sandbox. We allow an access if the app requests it (in its
metadata) and the user doesn't forbid it (with this option).
2015-02-06 17:39:20 +01:00
Alexander Larsson 0abf45b01b Merge pull request #44 from matthiasclasen/run-runtime
run-runtinme
2015-02-06 16:15:55 +01:00
Matthias Clasen e5ee197b81 Add a --runtime option to run
The --runtime option lets us completely override the runtime that
is specified in the application metadata. This is useful for testing
compatibility of an application with runtimes.
2015-02-06 12:11:26 +01:00
Alexander Larsson 287a93742f Put system installed apps/runtimes in localstatedir (/var) 2015-02-06 11:59:38 +01:00
Alexander Larsson 3afe98d614 Try /tmp for .xdg-app-root if /run/user not available 2015-02-06 11:58:57 +01:00
Alexander Larsson 61ababa60e Make /proc/sysrq-trigger /proc/irq, /proc/bus read-only
We should normally not have any rights to write here, but if
we do that is pretty bad, so might as well cover them read-only
like e.g. docker does.
2015-02-06 11:21:01 +01:00
Matthias Clasen 06608ba7d5 Add a --title option to add-remote
This stores a string in the remote configuration which can
be used in UIs when talking about the remote.
2015-02-06 11:11:10 +01:00
Alexander Larsson 4903fe100d Remove unused removed dirs after install/uninstall 2015-02-05 22:50:38 +01:00
Alexander Larsson 6ea2391583 During undeploy, keep files around if they are in use
We check for a lock on the .ref file to detect if anything
is using a partilular checkout before we remove it.
2015-02-05 22:47:48 +01:00
Alexander Larsson f1091127c5 Add locking of .ref files while a runtime/app is in use 2015-02-05 18:42:36 +01:00
Alexander Larsson 7c8fb83f20 Create files/.ref when deploying
This will be used later to avoid deleting active mounts.
They have to be created during deploy, because we are
then guaranteed to be able to write to the directory,
and we don't want the resulting file to be hardlinked
to any other deployment (as then locks could be shared).
2015-02-05 18:34:02 +01:00
Alexander Larsson c4324ab630 Use a pid namespace
For the fully sandboxed case we *need* a pid sandbox, so we might as
well always use one to get the same setup always. There should really
be no need for a normal "app" to see host processes.

The other nice thing about this is that we get somewhere to run code
when the app stops, which means we can do things like delay uninstall
while apps are running.

The unfortunate drawback of this is that we get 2 extra processes per
app, one is the pid1 in the sandbox, and the other is the monitor
process to return the exit code to the spawner of xdg-appp-helper.
2015-02-05 17:36:43 +01:00
Alexander Larsson 6f023b4ee3 Clean up namespace initialization
Rather than do the fork workaround we make / rslave, which means
we will still get new mounts/unmounts propagated to us from the root,
but will not leak any mounts to the host.

We also use a single directory in the users run dir as the mountpoint
for the tmpfs.
2015-02-05 11:34:43 +01:00
Alexander Larsson 55a3f413c2 build-finish: Don't error out on exports
gs_shutil_cp_a dies if the target exists, so only create the
parent dir before copying.
2015-02-03 10:53:02 +01:00
Alexander Larsson bc460da1c5 Don't make dconf runtime dir readonly
This breaks dconf
2015-02-03 10:52:34 +01:00
Alexander Larsson f66c232edf Mount /run/user/$uid/dconf if the app has access to $HOME
This is needed because while the dconf database is stored in
the home dir, the run dir is used to trigger re-mapping of the
database files.
2015-02-03 09:29:51 +01:00
Alexander Larsson ab3709aa83 Fix warning 2015-02-02 11:02:41 +01:00
Alexander Larsson db2019a8ff Merge pull request #41 from matthiasclasen/repo-update-manpage
Add repo-update man page to the build
2015-01-30 09:52:58 +01:00
Alexander Larsson 6c362273c3 Merge pull request #42 from matthiasclasen/kill-dotref
Don't create a useless .ref file
2015-01-30 09:51:13 +01:00
Matthias Clasen b01a6e3523 Don't create a useless .ref file
This serves no purpose.
2015-01-29 21:16:34 -05:00
Matthias Clasen 33e31213bd Add repo-update man page to the build 2015-01-29 14:42:31 -05:00
Matthias Clasen e28eaf1c1d Merge remote-tracking branch 'upstream/master' 2015-01-29 14:40:46 -05:00
Matthias Clasen 6417994d37 Revert "Fix a copy-paste error"
This reverts commit 1e36721951.
2015-01-29 14:39:26 -05:00
Alexander Larsson c83e3a7f83 Properly handle the session daemon not running 2015-01-29 15:11:51 +01:00
Alexander Larsson 2c50ebad51 Remove duplicated manpage 2015-01-29 11:23:20 +01:00
Alexander Larsson 57254de73a If the monitor dir is available, set the TZ env into it
This means we'll pull in changes from the timezone on the
host system.
2015-01-28 20:03:13 +01:00
Alexander Larsson a36122edc9 Make the /etc handling optional
The gnome-sdk-image build need to actually write to /etc, so
we need to keep supporting it being a link to usr/etc.
2015-01-28 20:03:13 +01:00
Alexander Larsson 3a56d3f465 Call out to the session helper and get the monitor dir 2015-01-28 20:03:13 +01:00
Alexander Larsson fca4a16209 Add xdg-app-session-helper
This is a small app that makes copies of various system files to a directory
in /run so that the app sandbox can receive updates to these. This solves
the issue that we can't generally bind-mount say /etc/resolv.conf, because
it will be replaced with rename-over.
2015-01-28 20:03:13 +01:00
Alexander Larsson 8fdc60ed7a xdg-app-helper: Make /etc a real directory
This makes /etc a real directory, with required files like passwd and
symlinks to all the other files in usr/etc.

This is required because we need to make /etc/localtime an actual
symlink whose value depends on the host state.
2015-01-28 20:03:13 +01:00
Matthias Clasen 1e36721951 Fix a copy-paste error
Build the repo-update man page, not the repo-contents man page twice.
2015-01-28 09:00:27 -05:00
Alexander Larsson 654ab3405e Merge pull request #38 from matthiasclasen/repo-update
Separate out repo-updating command
2015-01-26 13:16:17 +01:00
Alexander Larsson 6cf3a9ecfe Merge pull request #39 from matthiasclasen/run-error
Don't leak an error
2015-01-26 13:15:34 +01:00
Matthias Clasen 45aabf06d9 Don't leak an ignored error
Runtime metadata is optional, so don't leak an error we get
when the file is not found. Properly ignore it by passing NULL
as the error.
2015-01-25 11:07:03 -05:00
Matthias Clasen a4a25a4a64 Add some debug output to the run command
Show where the used applications and runtimes are located.
2015-01-24 22:20:22 -05:00
Matthias Clasen 6c2f2fafa1 Add completion for repo-update 2015-01-24 22:01:57 -05:00
Matthias Clasen 29151659ae Document repo-update 2015-01-24 21:54:55 -05:00