~ubuntu-branches/ubuntu/quantal/lxc/quantal-201206011617

« back to all changes in this revision

Viewing changes to .pc/06-bash.patch/src/lxc/lxc-setcap.in

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2012-05-07 21:22:26 UTC
  • Revision ID: package-import@ubuntu.com-20120507212226-ukrx93wnbtfcq82w
Tags: 0.8.0~rc1-4ubuntu5
* 0082-umount-old-proc: fix proc auto-mount.  If /proc is already mounted,
  make sure that /proc/self points to 1, since we are container init.
  Otherwise, assume proc is an old one, and umount it and remount our own.
  If we keep the old proc mounted, apparmor transitions will by tried for
  wrong task and fail.  Also move check for whether apparmor is enabled so
  that it is called by lxc-execute.  (LP: #993706)
* update 0074-lxc-execute-find-init to look for lxc-init in
  LXCINITDIR/lxc/lxc-init
* debian/control: add cloud-utils to lxc Recommends, as lxc-ubuntu-cloud
  needs it.  (LP: 995361)
* debian/lxc.upstart: load apparmor profiles before auto-starting containers.
  (LP: #989853)
* pop 06-bash.patch and 0075-lxc-ls-bash.  lxc-clone also has bashims, just
  stick to using bash until upstream is also converted (so we are safe
  against patches).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/bash
2
 
 
3
 
#
4
 
# lxc: linux Container library
5
 
 
6
 
# Authors:
7
 
# Daniel Lezcano <daniel.lezcano@free.fr>
8
 
 
9
 
# This library is free software; you can redistribute it and/or
10
 
# modify it under the terms of the GNU Lesser General Public
11
 
# License as published by the Free Software Foundation; either
12
 
# version 2.1 of the License, or (at your option) any later version.
13
 
 
14
 
# This library is distributed in the hope that it will be useful,
15
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
 
# Lesser General Public License for more details.
18
 
 
19
 
# You should have received a copy of the GNU Lesser General Public
20
 
# License along with this library; if not, write to the Free Software
21
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
 
 
23
 
#
24
 
# This script allows to set or remove the capabilities on the lxc tools.
25
 
# When the capabilities are set, a non root user can manage the containers.
26
 
#
27
 
 
28
 
LXC_ATTACH_CAPS="cap_sys_admin,cap_dac_override"
29
 
LXC_CREATE_CAPS="cap_sys_admin"
30
 
LXC_NETSTAT_CAPS="cap_sys_admin"
31
 
LXC_INIT_CAPS="cap_sys_admin,cap_dac_override"
32
 
LXC_COMMON_CAPS="cap_net_admin,cap_net_raw,cap_sys_admin,cap_dac_override"
33
 
LXC_UNSHARE_CAPS=$LXC_COMMON_CAPS
34
 
LXC_START_CAPS="$LXC_COMMON_CAPS,cap_fowner,cap_sys_chroot,cap_setpcap"
35
 
LXC_EXECUTE_CAPS=$LXC_START_CAPS
36
 
LXC_RESTART_CAPS="$LXC_START_CAPS,cap_mknod"
37
 
LXC_CHECKPOINT_CAPS="$LXC_COMMON_CAPS,cap_sys_ptrace,cap_mknod"
38
 
LXC_DROP_CAPS=""
39
 
 
40
 
usage()
41
 
{
42
 
    echo "lxc-setcap [-d] : set or remove capabilities on the lxc tools"
43
 
}
44
 
 
45
 
lxc_setcaps()
46
 
{
47
 
    setcap $LXC_ATTACH_CAPS=ep @BINDIR@/lxc-attach
48
 
    setcap $LXC_CREATE_CAPS=ep @BINDIR@/lxc-create
49
 
    setcap $LXC_EXECUTE_CAPS=ep @BINDIR@/lxc-execute
50
 
    setcap $LXC_START_CAPS=ep @BINDIR@/lxc-start
51
 
    setcap $LXC_RESTART_CAPS=ep @BINDIR@/lxc-restart
52
 
    setcap $LXC_UNSHARE_CAPS=ep @BINDIR@/lxc-unshare
53
 
    setcap $LXC_NETSTAT_CAPS=ep @BINDIR@/lxc-netstat
54
 
    setcap $LXC_CHECKPOINT_CAPS=ep @BINDIR@/lxc-checkpoint
55
 
    setcap $LXC_INIT_CAPS=ep @LXCINITDIR@/lxc-init
56
 
 
57
 
    test -e @LXCPATH@ || mkdir -p @LXCPATH@
58
 
    chmod 0777 @LXCPATH@
59
 
}
60
 
 
61
 
lxc_dropcaps()
62
 
{
63
 
    setcap -r @BINDIR@/lxc-attach
64
 
    setcap -r @BINDIR@/lxc-create
65
 
    setcap -r @BINDIR@/lxc-execute
66
 
    setcap -r @BINDIR@/lxc-start
67
 
    setcap -r @BINDIR@/lxc-restart
68
 
    setcap -r @BINDIR@/lxc-unshare
69
 
    setcap -r @BINDIR@/lxc-netstat
70
 
    setcap -r @BINDIR@/lxc-checkpoint
71
 
    setcap -r @LXCINITDIR@/lxc-init
72
 
    chmod 0755 @LXCPATH@
73
 
}
74
 
 
75
 
libdir=@LIBDIR@
76
 
localstatedir=@LOCALSTATEDIR@
77
 
 
78
 
if [ "$(id -u)" != "0" ]; then
79
 
    echo "You have to be root to run this script"
80
 
    exit 1
81
 
fi
82
 
 
83
 
if [ $? != 0 ]; then
84
 
    usage
85
 
    exit 1
86
 
fi
87
 
 
88
 
set -- $(getopt dh "$@")
89
 
 
90
 
for i in "$@"; do
91
 
    case "$1" in
92
 
        -d)
93
 
            LXC_DROP_CAPS="yes"
94
 
            shift
95
 
            ;;
96
 
        -h)
97
 
            usage
98
 
            exit 0
99
 
            ;;
100
 
        --)
101
 
            shift
102
 
            break
103
 
            ;;
104
 
        *)
105
 
            usage
106
 
            exit 1
107
 
            ;;
108
 
    esac
109
 
done;
110
 
 
111
 
if [ -z "$LXC_DROP_CAPS" ]; then
112
 
    lxc_setcaps
113
 
else
114
 
    lxc_dropcaps
115
 
fi