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

« back to all changes in this revision

Viewing changes to .pc/0005-fix-sshd-template.patch/templates/lxc-sshd.in

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2012-04-26 15:18:35 UTC
  • mfrom: (3.1.41 sid)
  • Revision ID: package-import@ubuntu.com-20120426151835-3vz6kb4m90gb26js
Tags: 0.8.0~rc1-4ubuntu1
* Merge from unstable.  Remaining changes:
  - control:
    - update maintainer
    - Build-Depends: add dh-apparmor and libapparmor-dev
    - lxc Depends: add bridge-utils, dnsmasq-base, iptables, rsync
    - lxc Recommends: add cgroup-lite | cgroup-bin, openssl
    - lxc Suggests: add btrfs-tools, lvm2, qemu-user-static
    - lxc Conflicts: remove (cgroup-bin)
  - Add lxc-start-ephemeral and lxc-wait to debian/local
  - apparmor:
    - add lxc.apparmor, lxc-containers.apparmor,
      lxc-default.apparmor, and new lxc.apparmor.in
  - add debian/lxc.conf (default container creation config file)
  - debian/lxc.install.in:
    * add lxc-start-ephemeral
    * add debian/lxc.conf
    * skip lxc-debconf*
    * skip lxc-ls (Use upstream's)
  - debian/lxc*.install.in: use '*', not @DEB_HOST_MULTIARCH@
  - Use our own completely different lxc.postinst and lxc.postrm
  - remove lxc.templates
  - debian/rules:
    * add DEB_DH_INSTALLINIT_ARGS = --upstart-only
    * don't do debconf stuff
    * add debian/*.apparmor.in to files processed under
      override_dh_auto_clean
    * don't comment out ubuntu or busybox templates
    * do apparmor stuff and install our own lxc-wait under override_dh_install
    * install our upstart scripts in override_dh_installinit
  - add lxc.default, lxc.lxc-net.upstart, lxc.upstart under
    debian/

* patches kept:
  - 0013-lxc-create-use-default-config.patch (needed manual rebase)
  - 0030-ubuntu-template-fail.patch
  - 0031-ubuntu-template-resolvconf.patch
  - 0044-lxc-destroy-rm-autos
  - debian/patches/0045-fix-other-templates
  - debian/patches/0046-lxc-clone-change-hwaddr
  - debian/patches/0047-bindhome-check-shell
  - debian/patches/0049-ubuntu-template-sudo-and-cleanup
  - debian/patches/0050-clone-lvm-sizes
  - debian/patches/0052-ubuntu-bind-user-conflict
  - debian/patches/0053-lxc-start-pin-rootfs
  - debian/patches/0054-ubuntu-debug
  - debian/patches/0055-ubuntu-handle-badgrp
  - debian/patches/0056-dont-watch-utmp
  - debian/patches/0057-update-manpages
  - debian/patches/0058-fixup-ubuntu-cloud
  - debian/patches/0059-reenable-daily-cloudimg
  - debian/patches/0060-lxc-shutdown
  - debian/patches/0061-lxc-start-apparmor
  - debian/patches/0062-templates-relative-paths
  - debian/patches/0063-check-apparmor-enabled
  - debian/patches/0064-apparmor-mount-proc
  - debian/patches/0065-fix-bindhome-relpath
  - debian/patches/0066-confile-typo
  - debian/patches/0067-templates-lxc-profile
  - debian/patches/0068-fix-lxc-config-layout 
  - debian/patches/0069-ubuntu-cloud-fix
  - debian/patches/0070-templates-rmdir-dev-shm
  - debian/patches/0071-ubuntu-cloud-fix-image-extraction
  - debian/patches/0072-lxc-shutdown-help
  - debian/patches/0073-lxc-destroy-waits-before-destroy
  - mark all patches which have been forwarded as such, refresh all
* 0074-lxc-execute-find-init: lxc-init had moved.  Introduce a function in
  lxc-execute to go find it.  Otherwise lxc-execute for any older releases
  will fail.
* 0075-lxc-ls-bash: lxc-ls needs bash, not sh
* add debian/lxc.apparmor.in so DEB_HOST_MULTIARCH can be expanded
* 0076-fix-sprintfs:  - check return values for all sprintfs and snprintfs
  which could overflow (LP: #988918)
* 0077-execute-without-rootfs: let lxc-execute succeed with no rootfs
  (LP: #981955)

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
 
install_sshd()
24
 
{
25
 
    rootfs=$1
26
 
 
27
 
    tree="\
28
 
$rootfs/var/run/sshd \
29
 
$rootfs/var/empty/sshd \
30
 
$rootfs/var/lib/empty/sshd \
31
 
$rootfs/etc/ssh \
32
 
$rootfs/dev/shm \
33
 
$rootfs/proc \
34
 
$rootfs/bin \
35
 
$rootfs/sbin \
36
 
$rootfs/usr \
37
 
$rootfs/tmp \
38
 
$rootfs/home \
39
 
$rootfs/root \
40
 
$rootfs/lib \
41
 
$rootfs/lib64"
42
 
 
43
 
    mkdir -p $tree
44
 
    if [ $? -ne 0 ]; then
45
 
        return 1
46
 
    fi
47
 
 
48
 
    return 0
49
 
}
50
 
 
51
 
configure_sshd()
52
 
{
53
 
    rootfs=$1
54
 
 
55
 
    cat <<EOF > $rootfs/etc/passwd
56
 
root:x:0:0:root:/root:/bin/bash
57
 
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
58
 
EOF
59
 
 
60
 
    cat <<EOF > $rootfs/etc/group
61
 
root:x:0:root
62
 
sshd:x:74:
63
 
EOF
64
 
 
65
 
ssh-keygen -t rsa -f $rootfs/etc/ssh/ssh_host_rsa_key
66
 
ssh-keygen -t dsa -f $rootfs/etc/ssh/ssh_host_dsa_key
67
 
 
68
 
    # by default setup root password with no password
69
 
    cat <<EOF > $rootfs/etc/ssh/sshd_config
70
 
Port 22
71
 
Protocol 2
72
 
HostKey /etc/ssh/ssh_host_rsa_key
73
 
HostKey /etc/ssh/ssh_host_dsa_key
74
 
UsePrivilegeSeparation yes
75
 
KeyRegenerationInterval 3600
76
 
ServerKeyBits 768
77
 
SyslogFacility AUTH
78
 
LogLevel INFO
79
 
LoginGraceTime 120
80
 
PermitRootLogin yes
81
 
StrictModes yes
82
 
RSAAuthentication yes
83
 
PubkeyAuthentication yes
84
 
IgnoreRhosts yes
85
 
RhostsRSAAuthentication no
86
 
HostbasedAuthentication no
87
 
PermitEmptyPasswords yes
88
 
ChallengeResponseAuthentication no
89
 
EOF
90
 
    return 0
91
 
}
92
 
 
93
 
copy_configuration()
94
 
{
95
 
    path=$1
96
 
    rootfs=$2
97
 
    name=$3
98
 
 
99
 
cat <<EOF >> $path/config
100
 
lxc.utsname = $name
101
 
lxc.pts = 1024
102
 
lxc.rootfs = $rootfs
103
 
lxc.mount.entry=/dev $rootfs/dev none ro,bind 0 0
104
 
lxc.mount.entry=/lib $rootfs/lib none ro,bind 0 0
105
 
lxc.mount.entry=/bin $rootfs/bin none ro,bind 0 0
106
 
lxc.mount.entry=/usr /$rootfs/usr none ro,bind 0 0
107
 
lxc.mount.entry=/sbin $rootfs/sbin none ro,bind 0 0
108
 
lxc.mount.entry=tmpfs $rootfs/var/run/sshd tmpfs mode=0644 0 0
109
 
lxc.mount.entry=@LXCTEMPLATEDIR@/lxc-sshd $rootfs/sbin/init none bind 0 0
110
 
EOF
111
 
 
112
 
if [ "$(uname -m)" = "x86_64" ]; then
113
 
    cat <<EOF >> $path/config
114
 
lxc.mount.entry=/lib64 $rootfs/lib64 none ro,bind 0 0
115
 
EOF
116
 
fi
117
 
}
118
 
 
119
 
usage()
120
 
{
121
 
    cat <<EOF
122
 
$1 -h|--help -p|--path=<path>
123
 
EOF
124
 
    return 0
125
 
}
126
 
 
127
 
options=$(getopt -o hp:n: -l help,path:,name: -- "$@")
128
 
if [ $? -ne 0 ]; then
129
 
        usage $(basename $0)
130
 
        exit 1
131
 
fi
132
 
eval set -- "$options"
133
 
 
134
 
while true
135
 
do
136
 
    case "$1" in
137
 
        -h|--help)      usage $0 && exit 0;;
138
 
        -p|--path)      path=$2; shift 2;;
139
 
        -n|--name)      name=$2; shift 2;;
140
 
        --)             shift 1; break ;;
141
 
        *)              break ;;
142
 
    esac
143
 
done
144
 
 
145
 
if [ "$(id -u)" != "0" ]; then
146
 
    echo "This script should be run as 'root'"
147
 
    exit 1
148
 
fi
149
 
 
150
 
if [ $0 == "/sbin/init" ]; then
151
 
 
152
 
    type @LXCINITDIR@/lxc-init
153
 
    if [ $? -ne 0 ]; then
154
 
        echo "'lxc-init is not accessible on the system"
155
 
        exit 1
156
 
    fi
157
 
 
158
 
    type sshd
159
 
    if [ $? -ne 0 ]; then
160
 
        echo "'sshd' is not accessible on the system "
161
 
        exit 1
162
 
    fi
163
 
 
164
 
    exec @LXCINITDIR@/lxc-init -- /usr/sbin/sshd
165
 
    exit 1
166
 
fi
167
 
 
168
 
if [ -z "$path" ]; then
169
 
    echo "'path' parameter is required"
170
 
    exit 1
171
 
fi
172
 
 
173
 
rootfs=$path/rootfs
174
 
 
175
 
install_sshd $rootfs
176
 
if [ $? -ne 0 ]; then
177
 
    echo "failed to install sshd's rootfs"
178
 
    exit 1
179
 
fi
180
 
 
181
 
configure_sshd $rootfs
182
 
if [ $? -ne 0 ]; then
183
 
    echo "failed to configure sshd template"
184
 
    exit 1
185
 
fi
186
 
 
187
 
copy_configuration $path $rootfs $name
188
 
if [ $? -ne 0 ]; then
189
 
    echo "failed to write configuration file"
190
 
    exit 1
191
 
fi