~serge-hallyn/ubuntu/quantal/lxc/lxc-fixapi

« back to all changes in this revision

Viewing changes to src/lxc/lxc-setuid.in

  • Committer: Bazaar Package Importer
  • Author(s): Guido Trotter
  • Date: 2010-08-04 13:23:42 UTC
  • mfrom: (1.1.5 upstream) (3.1.6 sid)
  • Revision ID: james.westby@ubuntu.com-20100804132342-ds4lm3oaroeoxfxx
Tags: 0.7.2-1
* New upstream version
* Convert libcap dependency to versioned (closes: #571527)
* Bump up standards version to 3.9.0
* Fix too-deep /usr/lib/lxc/lxc path (closes: #587847)
* Add init script (closes: #573830)
  Thanks to Przemysław Knycz <pknycz@kolnet.eu> for the base example
* Bump up standards version (3.9.1)

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 setuid execution bit on the lxc tools.
 
25
# When the capabilities are set, a non root user can manage the containers.
 
26
#
 
27
 
 
28
usage()
 
29
{
 
30
    echo "lxc-setuid [-d] : set or remove setuid on the lxc tools"
 
31
}
 
32
 
 
33
setuid()
 
34
{
 
35
    if [ "$1" = "-r" ]; then
 
36
        chmod -s $2
 
37
    else
 
38
        chmod +s $1
 
39
    fi
 
40
}
 
41
 
 
42
lxc_setuid()
 
43
{
 
44
    setuid @BINDIR@/lxc-attach
 
45
    setuid @BINDIR@/lxc-create
 
46
    setuid @BINDIR@/lxc-execute
 
47
    setuid @BINDIR@/lxc-start
 
48
    setuid @BINDIR@/lxc-restart
 
49
    setuid @BINDIR@/lxc-unshare
 
50
    setuid @BINDIR@/lxc-netstat
 
51
    setuid @BINDIR@/lxc-checkpoint
 
52
    setuid @LXCINITDIR@/lxc-init
 
53
 
 
54
    test -e @LXCPATH@ || mkdir -p @LXCPATH@
 
55
    chmod 0777 @LXCPATH@
 
56
}
 
57
 
 
58
lxc_dropuid()
 
59
{
 
60
    setuid -r @BINDIR@/lxc-attach
 
61
    setuid -r @BINDIR@/lxc-create
 
62
    setuid -r @BINDIR@/lxc-execute
 
63
    setuid -r @BINDIR@/lxc-start
 
64
    setuid -r @BINDIR@/lxc-restart
 
65
    setuid -r @BINDIR@/lxc-unshare
 
66
    setuid -r @BINDIR@/lxc-netstat
 
67
    setuid -r @BINDIR@/lxc-checkpoint
 
68
    setuid -r @LXCINITDIR@/lxc-init
 
69
 
 
70
    chmod 0755 @LXCPATH@
 
71
}
 
72
 
 
73
if [ "$(id -u)" != "0" ]; then
 
74
    echo "You have to be root to run this script"
 
75
    exit 1
 
76
fi
 
77
 
 
78
 
 
79
if [ $? != 0 ]; then
 
80
    usage
 
81
    exit 1
 
82
fi
 
83
 
 
84
set -- $(getopt dh $*)
 
85
 
 
86
for i in $*; do
 
87
    case "$1" in
 
88
        -d)
 
89
            LXC_DROP_CAPS="yes"
 
90
            shift
 
91
            ;;
 
92
        -h)
 
93
            usage
 
94
            exit 0
 
95
            ;;
 
96
        --)
 
97
            shift
 
98
            break
 
99
            ;;
 
100
        *)
 
101
            usage
 
102
            exit 1
 
103
            ;;
 
104
    esac
 
105
done;
 
106
 
 
107
if [ -z "$LXC_DROP_CAPS" ]; then
 
108
    lxc_setuid
 
109
else
 
110
    lxc_dropuid
 
111
fi
 
 
b'\\ No newline at end of file'