Commit Graph

2493 Commits

Author SHA1 Message Date
Stéphane Graber
e40bb7f458
travis: Drop workaround introduced last week
Travis has now corrected the bug in their build environment so we no
longer need to force the autogen script through bash.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-12 15:07:11 -05:00
Stéphane Graber
a974fa76e4 lxc-start-ephemeral: Allow unprivileged run
This allows running lxc-start-ephemeral using overlayfs. aufs remains
blocked as it hasn't been looked at and patched to work in the kernel at
this point (not sure if it ever wil).

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-12 15:06:24 -05:00
Serge Hallyn
c8154066e8 check for access to lxcpath
The previous check for access to rootfs->path failed in the case of
overlayfs or loop backign stores.  Instead just check early on for
access to lxcpath.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-12 10:45:20 -05:00
Stéphane Graber
8b605e2305 Fix build failure (broken makefile)
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-11 19:49:56 -05:00
Stéphane Graber
fd2b7320e3 tests: Don't hardcode architecture
If on Ubuntu, then match the host's own architecture, this should allow
for our tests to pass on the armhf CI environment.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-11 19:42:28 -05:00
Stéphane Graber
45794802f1 tests: Add lxc-test-autostart
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-11 19:30:13 -05:00
Serge Hallyn
a7ef8753bc bdev: allow unprivileged overlayfs snapshots
Also make sure to chown the new rootfs path to the container owner.
This is how we make sure that the container root is allowed to write
under delta0.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-11 18:58:42 -05:00
Stéphane Graber
061ba5d071 Add --with-runtime-path to configure
This allows older distros to override /run with whatever their own path
is, mostly useful for old RedHat and possibly Android.

Reported-by: Robert Vogelgesang <vogel@users.sourceforge.net>
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-11 18:57:57 -05:00
Stéphane Graber
be660853e4 conf: Save lxc.network.ipv4 broadcast address
Reported-by: Robert Vogelgesang <vogel@users.sourceforge.net>
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-11 18:57:26 -05:00
Serge Hallyn
8c39f7a479 lxcapi-snapshot: don't snapshot directory-backed containers
Instead force a copy clone.  Else if the user makes a change
to the original container, the snapshot will be affected.
The user should first create a snapshot clone, then use
and snapshot that clone while leaving the original container
untouched.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-10 21:20:12 -05:00
Serge Hallyn
bbd23aa0bb warn about insufficient permissions
With this patch, if an unprivileged user has $HOME 700 or
750 and does

lxc-start -n c1

he'll see an error like:

lxc_container: Permission denied - could not access /home/serge.  Please grant it 'x' access, or add an ACL for t he container root.

(This addresses bug pad.lv/1277466)

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-10 21:20:08 -05:00
TAMUKI Shoichi
ffeb76b460 lxc-plamo: various small changes
- Change redirection of fd 200 to 9 (greater than 9 may conflict with
  fd the shell uses internally)
- Replace numeric line addressing of ed to regular expression to avoid
  correcting the line addressing at each modification of init scripts
- Correct the option order (trivial)

Signed-off-by: TAMUKI Shoichi <tamuki@linet.gr.jp>
Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-10 13:14:09 -06:00
Stéphane Graber
271d94a3da travis: Workaround buggy build environment
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-07 20:35:03 -05:00
Stéphane Graber
e4399ab9ac
Whitespace fix
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-07 19:36:50 -05:00
Stéphane Graber
5f7eba0b1c bionic: Define faccessat if missing
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-07 15:36:06 -05:00
Serge Hallyn
d5aa23e662 add_device_node: act in a chroot
The goal is to avoid an absolute symlink in the guest redirecting
us to the host's /dev.  Thanks to the libvirt team for considering
that possibility!

We want to work on kernels which do not support setns, so we simply
chroot into the container before doing any rm/mknod.  If /dev/vda5
is a symlink to /XXX, or /dev is a symlink to /etc, this is now
correctly resolved locally in the chroot.

We would have preferred to use realpath() to check that the resolved
path is not changed, but realpath across /proc/pid/root does not
work as expected.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-07 14:21:58 -05:00
Stéphane Graber
b8ac275090 lxc_autostart: Update following shutdown() API change
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-07 10:51:45 -05:00
Stéphane Graber
959aee9c00
log: Drop trailing \n from log messages
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-07 10:19:27 -05:00
Stéphane Graber
74f052ddfb
log: Don't crash when name is NULL
This fixes a crash in lxc-autostart following the addition of
lxc_log_init as lxc-autostart doesn't use the name property.

Signed-off-by: Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-07 09:15:39 -05:00
Stéphane Graber
ce79774f59
change version to 1.0.0.beta4 in configure.ac
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-06 19:19:28 -05:00
Dwight Engen
7661303060 cgmanager: only include CFLAGS and LDADD when needed
lxc-cgroup doesn't depend on cgmanager

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-06 17:55:24 -05:00
Stéphane Graber
e6ccd90bb2
tests: Pass http_proxy through sudo environment
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-06 17:35:55 -05:00
Stéphane Graber
ef9512b491
download: Use port-80 pool for gpg over http
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-06 17:34:12 -05:00
Stéphane Graber
207bf0e475 templates: Make sure usual locations are in PATH
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-06 17:14:03 -05:00
Stéphane Graber
4eb706b3ce
download: Fix previous change
The previous change to support http proxies only worked when http_proxy
was set... Instead add some detection code and only use :80 when using
http_proxy.

That's a bit of a workaround, but it's the only way I could find to get
GPG to work with http_proxy.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-06 17:11:51 -05:00
Dwight Engen
ca0abdee03 implement cgmanager nrtasks
This op will be used on older kernels where container shutdown via reboot(2)
is not implemented and we use the utmp watching code.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-06 16:26:30 -05:00
Stéphane Graber
9dc56d325f Add missing include of signal.h
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-06 13:57:31 -05:00
Stéphane Graber
2262880d63
download: Force hkp on port 80 (for http proxies)
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-06 12:24:58 -05:00
Dwight Engen
4fb3cba5bc split cgroup handling into discrete backends
- refactor cgroup into two backends, the classic cgfs driver and the new
  cgmanager. Instead of lxc_handler knowing about the internals of each,
  have it just store an opaque pointer to a struct that is private to
  each backend.

- rename a couple of cgroup functions for consistency: those that are
  considered an API (ie. exported by lxc.h) begin with lxc_ and those that
  are not are just cgroup_*

- made as many backend routines static as possible, only cg*_ops_init is
  exported

- made a nrtasks op which is needed by the utmp code for monitoring
  container shutdown, currently only implemented for the cgfs backend

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-06 10:46:19 -06:00
Dwight Engen
20e2ae994f move cgroup.c to cgfs.c in preparation for backend change
This is just a move without any changes so history will be preserved.
Makefile.am was modified so that lxc will still build and run.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-06 10:10:15 -06:00
KATOH Yasufumi
eb7829c1c6 doc: Add the common options section to lxc-create(1)
Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-06 11:05:33 -05:00
TAMUKI Shoichi
c63c04fcaf templates: improve refusing to run unprivileged
For all templates except lxc-ubuntu-cloud and lxc-download, detect not
only --mapped-uid but also --mapped-gid and error out.  Detecting will
not be done after -- parameter because of non-option parameters.

Also, change the mode of lxc-archlinux.in 100755 to 100644.

Signed-off-by: TAMUKI Shoichi <tamuki@linet.gr.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-06 11:05:20 -05:00
Jonas Eriksson
35f746711b Update license of lsm/selinux.c
Change the license from GPL to LGPL to avoid a tricky license situation
for liblxc.so.

Signed-off-by: Jonas Eriksson <jonas.eriksson@enea.com>
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-06 09:53:02 -06:00
Miquel van Smoorenburg
d1838f3459 lxc.id_map bug when writing directly to /proc/pid/[ug]id_map [PATCH]
lxc.id_map bug when writing directly to /proc/pid/[ug]id_map

There's some code in src/lxc/conf.c that sets up the UID/GID mapping. It
can use the external newuidmap/newgidmap tools, or it can write to
/proc/pid/[ug]id_map directly. The latter case is broken: lines are written
without a newline (\n) at the end. This patch fixes that. Note that
I did not check if the newuidmap/newgidmap case still works. It should,
but I wasn't able to test it.

Signed-off-by: Miquel van Smoorenburg <mikevs@xs4all.net>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-05 23:34:51 -06:00
Stéphane Graber
ee165ff89d python3: Fix trivial error in clone()
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-05 18:55:40 -05:00
Stéphane Graber
6ea518f64a log: Set log_define properly
This sets lxc_log_define to what should be appropriate values for all
existing binaries that call lxc_log_init.

The name is lxc_<bin name>_ui for anything that's user visible and
lxc_<bin name> for anything that's not.

The parent is set to "lxc" for anything using the API and to the
matching C file name for anything that isn't.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-05 17:16:34 -06:00
Dwight Engen
1d84dd35c6 fix build with cgmanager on Fedora
- configure fails to compile the cgmanager test without -lnih -lnih-dbus

- fix include path from cgmanger commit f1d9bd1a

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-05 17:14:01 -06:00
Serge Hallyn
1ccb73b915 cgmanager: update location of include file
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-05 17:08:59 -06:00
gza
cf261d584e gentoo: fix portage rw problem
Signed-off-by: Guillaume Zitta <github.guillaume@zitta.fr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-05 13:44:11 -05:00
Stéphane Graber
6edbfc8650 logging: Add lxc_log_options_no_override function
In current LXC, loglevel and logfile are write-once functions.
That behaviour was appropriate when those two were first introduced
(pre-API) but with current API, one would expect to be able to
set_config_item those multiple times.

So instead, introduce lxc_log_options_no_override which when called
turns those two config keys read-only and have all existing binaries
which use log_init call that function once they're done setting the
value requested by the user.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-02-04 18:01:59 -05:00
Serge Hallyn
2133f58c66 create: pass --mapped-gid to templates next to --mapped-uid
That way templates can fix group ownership alongside uid ownership.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-04 16:31:37 -05:00
Stéphane Graber
8ec981fc8b templates: Refuse to run unprivileged
Only the download and ubuntu-cloud templates work with unprivileged
containers, for all others, detect --mapped-uid and error out as early
as possible, recommending the use of the download template.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-04 14:30:51 -05:00
Harald Dunkel
3a6ef65aa2 support a custom CentOS repository
This change introduces a flag --repo to the lxc-centos template
to allow using a local repository (e.g. a loop mounted installer
iso on your web server).

Signed-off-by: Harald Dunkel <harri@afaics.de>
Acked-by: Michael H. Warfield <mhw@WittsEnd.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-04 07:49:09 -06:00
Serge Hallyn
04cb990db5 cgmanager: have root escape to root cgroup before starting
If a user in cgroup /a/b/c does 'lxc-start -n u1', then u1
should be started under /a/b/c/u1.  However if he does
'sudo lxc-start -n u1', then that cgroup shoudl start under
/lxc/u1.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-03 16:33:08 -05:00
Serge Hallyn
c08a0b7c4e cgmanager: container-base apparmor abstraction: allow mount move
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-02-03 15:17:43 -06:00
Rafal Wojdyla
16e29c912e Fix error message if nodename is too long
Signed-off-by: Rafal Wojdyla <ravwojdyla@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-03 11:48:17 -05:00
KATOH Yasufumi
b4c66de1b2 doc: Update Japanese lxc.container.conf(5) for lxc.rootfs.options
update for commit a17b1e65fa

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-03 11:46:37 -05:00
KATOH Yasufumi
2035b7d919 doc: Update Japanese lxc-info(1) to remove "RUNNING" of -c option
update for commit 5c4734bcfb

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-02-03 11:46:35 -05:00
Stéphane Graber
0464b881e6 shutdown: Rework API and lxc-stop
With this change, shutdown() will no longer call stop() after the
timeout, instead it'll just return false and it's up to the caller to
then call stop() if appropriate.

This also updates the bindings, tests and other scripts.

lxc-stop is then updated to do proper option checking and use shutdown,
stop or reboot as appropriate.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-31 18:08:33 +00:00
Serge Hallyn
509c077284 cgmanager: chmod the container's base directory 775
In order for attach to work, the container owner must be able to
write to the tasks file.  Therefore we make the container's cgroup
owned by the container root group, but the container owner uid.
So for the container root to be allowed to create new cgroups, it
needs group write perms.

With this patch, an unprivileged container with an
lxc.mount.auto = cgroup entry entry can run the cgproxy and pass
all cgmanager tests.

Acls would have been another way to do this, but are not yet being
used/exported by cgmanager.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-31 13:57:46 +00:00