Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
annotate sbin/ftjail @ 247:5dd38cb3fecf
Remove now unneeded comment
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sun, 11 Sep 2022 10:18:15 +0200 |
| parents | bdee72ff7dbd |
| children | 0b5dbf394aa2 |
| rev | line source |
|---|---|
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
1 #!/bin/sh |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
2 # -*- indent-tabs-mode: nil; -*- |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
3 : 'A very minimal BSD Thin Jail management tool. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
4 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
5 :Author: Franz Glasner |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
6 :Copyright: (c) 2022 Franz Glasner. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
7 All rights reserved. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
8 :License: BSD 3-Clause "New" or "Revised" License. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
9 See LICENSE for details. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
10 If you cannot find LICENSE see |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
11 <https://opensource.org/licenses/BSD-3-Clause> |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
12 :ID: @(#)@@PKGORIGIN@@ $HGid$ |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
13 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
14 ' |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
15 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
16 set -eu |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
17 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
18 VERSION="@@VERSION@@" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
19 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
20 USAGE=' |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
21 USAGE: ftjail [ OPTIONS ] COMMAND [ COMMAND OPTIONS ] [ ARG ... ] |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
22 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
23 OPTIONS: |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
24 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
25 -V Print the program name and version number to stdout and exit |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
26 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
27 -h Print this help message to stdout and exit |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
28 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
29 COMMANDS: |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
30 |
|
235
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
31 datasets-tmpl [OPTIONS] PARENT-BASE PARENT-SKELETON NAME |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
32 |
|
235
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
33 Create the ZFS template datasets, i.e. the ro base and the rw |
|
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
34 skeleton to be used within thin jails jails |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
35 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
36 PARENT-BASE and PARENT-SKELETON must exist already and NAME must |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
37 not exist. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
38 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
39 The datasets will not be mounted. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
40 |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
41 mount-tmpl [ OPTIONS ] BASE-RO SKELETON-RW MOUNTPOINT |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
42 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
43 Canonically mount the RO base and the RW skeleton into MOUNTPOINT and |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
44 MOUNTPOINT/skeleton |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
45 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
46 -n Do not really mount but show what would be mounted where |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
47 -u Alias of -n |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
48 |
| 243 | 49 umount-tmpl BASE-RO SKELETON-RW |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
50 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
51 Unmount mounted datasets BASE-RO and SKELETON-RW |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
52 |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
53 interlink-tmpl MOUNTPOINT |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
54 |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
55 Create symbolic links between the RO base and the RW skeleton. |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
56 Base and skeleton must be canonically mounted already. |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
57 |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
58 populate MOUNTPOINT BASETXZ |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
59 |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
60 Populate the directory in MOUNTPOINT with the base system in BASETXZ |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
61 |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
62 ENVIRONMENT: |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
63 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
64 All environment variables that affect "zfs" are effective also. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
65 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
66 DESCRIPTION: |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
67 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
68 All commands with the exception of "populate" require ZFS as |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
69 filesystem. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
70 ' |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
71 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
72 # Reset to standard umask |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
73 umask 0022 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
74 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
75 |
|
245
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
76 # |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
77 # Ensure that no options are given |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
78 # |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
79 _ensure_no_options() { |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
80 local _opt |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
81 |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
82 while getopts ":" _opt ; do |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
83 [ "${_opt}" = '?' ] && { echo "ERROR: no option allowed" 1>&2; exit 2; } |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
84 done |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
85 } |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
86 |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
87 |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
88 _get_dataset_for_mountpoint() { |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
89 : 'Use `mount -t zfs -p` to determine the ZFS dataset for a given mountpoint. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
90 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
91 ' |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
92 local _mountpoint |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
93 |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
94 local _ds _mount _rest |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
95 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
96 _mountpoint="$1" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
97 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
98 mount -t zfs -p \ |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
99 | { |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
100 while IFS=' '$'\t' read -r _ds _mount _rest ; do |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
101 if [ "$_mount" = "$_mountpoint" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
102 echo "${_ds}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
103 return 0 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
104 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
105 done |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
106 return 1 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
107 } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
108 } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
109 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
110 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
111 # |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
112 # PARENT-BASE NAME DRY-RUN |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
113 # |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
114 command_datasets_tmpl_base() { |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
115 local _p_base _name |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
116 |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
117 local _opt_dry_run |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
118 |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
119 local _ds_base _opt |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
120 |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
121 _opt_dry_run="" |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
122 while getopts "nu" _opt ; do |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
123 case ${_opt} in |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
124 n|u) |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
125 _opt_dry_run="yes" |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
126 ;; |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
127 \?|:) |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
128 return 2; |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
129 ;; |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
130 esac |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
131 done |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
132 shift $((OPTIND-1)) |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
133 OPTIND=1 |
|
245
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
134 |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
135 _p_base="${1-}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
136 _name="${2-}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
137 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
138 if [ -z "${_p_base}" ]; then |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
139 echo "ERROR: no parent dataset for base given" >&2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
140 return 2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
141 fi |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
142 if [ -z "${_name}" ]; then |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
143 echo "ERROR: no name given" >&2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
144 return 2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
145 fi |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
146 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
147 if ! zfs list -H -o mountpoint -t filesystem "${_p_base}" >/dev/null 2>/dev/null; then |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
148 echo "ERROR: parent dataset \`${_p_base}' does not exist" >&2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
149 return 1 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
150 fi |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
151 _ds_base="${_p_base}/${_name}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
152 if zfs list -H -o mountpoint -t filesystem "${_ds_base}" >/dev/null 2>/dev/null; then |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
153 echo "ERROR: dataset \`${_ds_base}' does already exist" >&2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
154 return 1 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
155 fi |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
156 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
157 |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
158 [ "${_opt_dry_run}" = "yes" ] && return 0 |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
159 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
160 echo "Creating RO base datasets in:" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
161 printf "\\t%s\\n" "${_ds_base}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
162 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
163 zfs create -u -o canmount=noauto "${_ds_base}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
164 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
165 } |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
166 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
167 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
168 # |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
169 # SKELETON NAME DRY-RUN |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
170 # |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
171 command_datasets_tmpl_skel() { |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
172 local _p_base _name |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
173 |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
174 local _opt_dry_run |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
175 |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
176 local _ds_skel _child _child_zfsopts _opt |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
177 |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
178 _opt_dry_run="" |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
179 while getopts "nu" _opt ; do |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
180 case ${_opt} in |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
181 n|u) |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
182 _opt_dry_run="yes" |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
183 ;; |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
184 \?|:) |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
185 return 2; |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
186 ;; |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
187 esac |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
188 done |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
189 shift $((OPTIND-1)) |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
190 OPTIND=1 |
|
245
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
191 |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
192 _p_skel="${1-}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
193 _name="${2-}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
194 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
195 if [ -z "${_p_skel}" ]; then |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
196 echo "ERROR: no parent dataset for skeleton given" >&2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
197 return 2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
198 fi |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
199 if [ -z "${_name}" ]; then |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
200 echo "ERROR: no name given" >&2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
201 return 2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
202 fi |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
203 |
|
238
9b0d83703a28
FIX: Bogus keyword shortcut error: wrong copy-paste text in script
Franz Glasner <fzglas.hg@dom66.de>
parents:
237
diff
changeset
|
204 if ! zfs list -H -o mountpoint -t filesystem "${_p_skel}" >/dev/null 2>/dev/null; then |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
205 echo "ERROR: parent dataset \`${_p_skel}' does not exist" >&2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
206 return 1 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
207 fi |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
208 _ds_skel="${_p_skel}/${_name}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
209 if zfs list -H -o mountpoint -t filesystem "${_ds_skel}" >/dev/null 2>/dev/null; then |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
210 echo "ERROR: dataset \`${_ds_skel}' does already exist" >&2 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
211 return 1 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
212 fi |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
213 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
214 |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
215 [ "${_opt_dry_run}" = "yes" ] && return 0 |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
216 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
217 echo "Creating RW skeleton datasets in:" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
218 printf "\\t%s\\n" "${_ds_skel}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
219 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
220 zfs create -u -o canmount=noauto "${_ds_skel}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
221 zfs create -u -o canmount=off "${_ds_skel}/usr" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
222 # |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
223 # XXX FIXME: What about usr/ports/distfiles |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
224 # We typically want to use binary packages. |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
225 # And if we use ports they are not in usr/ports typically. |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
226 # |
|
239
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
227 #zfs create -u -o canmount=off "${_ds_skel}/usr/ports" |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
228 # |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
229 # XXX FIXME: What about home |
|
237
a38906739422
Drop a note about /home in skel-rw
Franz Glasner <hg@dom66.de>
parents:
236
diff
changeset
|
230 # |
|
239
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
231 for _child in etc home root tmp usr/local var ; do |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
232 case "${_child}" in |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
233 "tmp"|"var/tmp") |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
234 _child_zfsopts="-o sync=disabled -o setuid=off" |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
235 ;; |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
236 "home") |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
237 _child_zfsopts="-o setuid=off" |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
238 ;; |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
239 "usr/ports/distfiles") |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
240 _child_zfsopts="-o exec=off -o setuid=off -o compression=off -o primarycache=metadata" |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
241 ;; |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
242 "var/mail") |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
243 _child_zfsopts="-o atime=on -o exec=off -o setuid=off" |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
244 ;; |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
245 *) |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
246 _child_zfsopts="" |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
247 ;; |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
248 esac |
|
23f37702a502
Creating datasets for base and skeleton
Franz Glasner <fzglas.hg@dom66.de>
parents:
238
diff
changeset
|
249 zfs create -u -o canmount=noauto ${_child_zfsopts} "${_ds_skel}/${_child}" |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
250 done |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
251 } |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
252 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
253 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
254 # |
|
235
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
255 # "datasets-tmpl" -- create the ZFS dataset tree |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
256 # |
|
234
8682cfa74f6a
Minimum work on creating datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
233
diff
changeset
|
257 # PARENT-BASE PARENT-SKELETON NAME |
|
8682cfa74f6a
Minimum work on creating datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
233
diff
changeset
|
258 # |
|
235
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
259 command_datasets_tmpl() { |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
260 # parent ZFS dataset -- child ZFS dataset name |
|
234
8682cfa74f6a
Minimum work on creating datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
233
diff
changeset
|
261 local _p_base _p_skel _name |
|
8682cfa74f6a
Minimum work on creating datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
233
diff
changeset
|
262 local _zfsopts |
|
235
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
263 local _ds_base _ds_skel |
|
234
8682cfa74f6a
Minimum work on creating datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
233
diff
changeset
|
264 |
|
245
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
265 _ensure_no_options "$@" |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
266 |
|
235
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
267 _zfsopts="-u -o canmount=noauto" |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
268 |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
269 _p_base="${1-}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
270 _p_skel="${2-}" |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
271 _name="${3-}" |
|
234
8682cfa74f6a
Minimum work on creating datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
233
diff
changeset
|
272 |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
273 # Check preconditions |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
274 command_datasets_tmpl_base -n "${_p_base}" "${_name}" || return |
|
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
275 command_datasets_tmpl_skel -n "${_p_skel}" "${_name}" || return |
|
236
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
276 |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
277 # Really do it |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
278 command_datasets_tmpl_base "${_p_base}" "${_name}" || return |
|
661e35a9d6e5
Some work on ftjail: creating the very basic ZFS datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
235
diff
changeset
|
279 command_datasets_tmpl_skel "${_p_skel}" "${_name}" || return |
|
235
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
280 return 0 |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
281 } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
282 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
283 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
284 # |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
285 # "populate-tmpl" -- populate the datasets with content from a FreeBSD base.txz |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
286 # |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
287 # command_populate_tmpl mountpoint basetxz |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
288 # |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
289 command_populate_tmpl() { |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
290 # MOUNTPOINT -- base.txz |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
291 local _mp _basetxz |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
292 |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
293 local _dir |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
294 |
|
245
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
295 _ensure_no_options "$@" |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
296 |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
297 _mp="${1-}" |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
298 _basetxz="${2-}" |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
299 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
300 if [ -z "${_mp}" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
301 echo "ERROR: no mountpoint given" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
302 return 2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
303 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
304 if [ -z "${_basetxz}" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
305 echo "ERROR: no base.txz given" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
306 return 2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
307 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
308 if [ ! -d "${_mp}" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
309 echo "ERROR: mountpoint \`${_mp}' does not exist" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
310 return 1 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
311 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
312 if [ ! -r "${_basetxz}" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
313 echo "ERROR: file \`${_basetxz}' is not readable" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
314 return 1 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
315 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
316 |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
317 echo "Extracting RO base ..." |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
318 tar -C "${_mp}" --exclude=./etc --exclude=./root --exclude=./tmp --exclude=./usr/local --exclude=./var --no-safe-writes -xJp -f "${_basetxz}" || return |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
319 # "home" is not part of base |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
320 for _dir in etc root tmp usr/local var ; do |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
321 echo "Extracting RW skeleton: ${_dir} ..." |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
322 tar -C "${_mp}/skeleton" --include="./${_dir}" --exclude=./root/.cshrc --exclude=./root/.profile -xJp -f "${_basetxz}" || return |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
323 done |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
324 # In the original archive they are archived as hardlinks: make symlinks here |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
325 (cd "${_mp}/skeleton/root" && ln -s ../../.profile .profile) || return |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
326 (cd "${_mp}/skeleton/root" && ln -s ../../.cshrc .cshrc) || return |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
327 |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
328 find "${_mp}/boot" -type f -delete || true |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
329 } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
330 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
331 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
332 # |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
333 # _do_mount dataset mountpoint dry-run mount-natural |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
334 # |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
335 _do_mount() { |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
336 local _dsname _mountpoint _dry_run _mount_natural |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
337 |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
338 local _name _mp _canmount _mounted |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
339 local _rootds_mountpoint _relative_mp _real_mp |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
340 |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
341 _dsname="${1}" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
342 _mountpoint="${2}" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
343 _dry_run="${3}" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
344 _mount_natural="${4}" |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
345 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
346 if [ -z "${_dsname}" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
347 echo "ERROR: no dataset given" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
348 return 2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
349 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
350 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
351 _rootds_mountpoint="$(zfs list -H -o mountpoint -t filesystem "${_dsname}")" || \ |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
352 { echo "ERROR: root dataset \`${_dsname}' does not exist" >&2; return 1; } |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
353 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
354 if [ -z "${_mountpoint}" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
355 if [ "${_mount_natural}" = "yes" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
356 _mountpoint="${_rootds_mountpoint}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
357 else |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
358 echo "ERROR: no mountpoint given" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
359 return 2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
360 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
361 else |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
362 if [ "${_mount_natural}" = "yes" ]; then |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
363 echo "ERROR: Cannot have a custom mountpoint when mount-natural is activated" >&2 |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
364 return 2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
365 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
366 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
367 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
368 # Eventually remove a trailing slash |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
369 _mountpoint="${_mountpoint%/}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
370 if [ -z "${_mountpoint}" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
371 echo "ERROR: would mount over the root filesystem" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
372 return 1 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
373 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
374 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
375 zfs list -H -o name,mountpoint,canmount,mounted -s mountpoint -t filesystem -r "${_dsname}" \ |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
376 | { |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
377 while IFS=$'\t' read -r _name _mp _canmount _mounted ; do |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
378 # Skip filesystems that are already mounted |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
379 [ "${_mounted}" = "yes" ] && continue |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
380 # Skip filesystems that must not be mounted |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
381 [ "${_canmount}" = "off" ] && continue |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
382 case "${_mp}" in |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
383 "none"|"legacy") |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
384 # Do nothing for filesystem with unset or legacy mountpoints |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
385 ;; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
386 "${_rootds_mountpoint}"|"${_rootds_mountpoint}/"*) |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
387 # |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
388 # Handle only mountpoints that have a mountpoint below |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
389 # the parent datasets mountpoint |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
390 # |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
391 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
392 # Determine the mountpoint relative to the parent mountpoint |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
393 _relative_mp="${_mp#${_rootds_mountpoint}}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
394 # Eventually remove a trailing slash |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
395 _relative_mp="${_relative_mp%/}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
396 # The real effective full mountpoint |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
397 _real_mp="${_mountpoint}${_relative_mp}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
398 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
399 # |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
400 # Consistency and sanity check: computed real mountpoint must |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
401 # be equal to the configured mountpoint when no custom mountpoint |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
402 # is given. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
403 # |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
404 if [ "${_mount_natural}" = "yes" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
405 if [ "${_real_mp}" != "${_mp}" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
406 echo "ERROR: mountpoint mismatch" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
407 return 1 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
408 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
409 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
410 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
411 if [ "${_dry_run}" = "yes" ]; then |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
412 echo "Would mount ${_name} on ${_real_mp}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
413 else |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
414 mkdir -p "${_real_mp}" 1> /dev/null 2> /dev/null || \ |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
415 { echo "ERROR: cannot create mountpoint ${_real_mp}" >&2; return 1; } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
416 echo "Mounting ${_name} on ${_real_mp}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
417 mount -t zfs "${_name}" "${_real_mp}" || return 1 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
418 fi |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
419 ;; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
420 *) |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
421 echo "Skipping ${_name} because its configured ZFS mountpoint is not relative to given root dataset" 2>&1 |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
422 ;; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
423 esac |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
424 done |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
425 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
426 return 0 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
427 } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
428 } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
429 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
430 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
431 # |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
432 # "mount-tmpl" -- recursively mount a base and skeleton datasets including subordinate datasets |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
433 # |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
434 # command_mount_tmpl base-ro skeleton-rw mountpoint |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
435 # |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
436 command_mount_tmpl() { |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
437 local _ds_base _ds_skel _mountpoint |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
438 local _opt_dry_run |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
439 |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
440 local _opt |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
441 |
|
244
6e632f459818
Rename "_dry_run" to the more proper "_opt_dry_run"
Franz Glasner <fzglas.hg@dom66.de>
parents:
243
diff
changeset
|
442 _opt_dry_run="" |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
443 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
444 while getopts "nu" _opt ; do |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
445 case ${_opt} in |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
446 n|u) |
|
244
6e632f459818
Rename "_dry_run" to the more proper "_opt_dry_run"
Franz Glasner <fzglas.hg@dom66.de>
parents:
243
diff
changeset
|
447 _opt_dry_run="yes" |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
448 ;; |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
449 \?|:) |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
450 return 2; |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
451 ;; |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
452 esac |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
453 done |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
454 shift $((OPTIND-1)) |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
455 OPTIND=1 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
456 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
457 _ds_base="${1-}" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
458 _ds_skel="${2-}" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
459 _mountpoint="${3-}" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
460 |
|
244
6e632f459818
Rename "_dry_run" to the more proper "_opt_dry_run"
Franz Glasner <fzglas.hg@dom66.de>
parents:
243
diff
changeset
|
461 _do_mount "${_ds_base}" "${_mountpoint}" "${_opt_dry_run}" "" || return |
|
6e632f459818
Rename "_dry_run" to the more proper "_opt_dry_run"
Franz Glasner <fzglas.hg@dom66.de>
parents:
243
diff
changeset
|
462 if [ "${_opt_dry_run}" != "yes" ]; then |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
463 if [ ! -d "${_mountpoint}/skeleton" ]; then |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
464 mkdir "${_mountpoint}/skeleton" || return |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
465 fi |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
466 fi |
|
244
6e632f459818
Rename "_dry_run" to the more proper "_opt_dry_run"
Franz Glasner <fzglas.hg@dom66.de>
parents:
243
diff
changeset
|
467 _do_mount "${_ds_skel}" "${_mountpoint}/skeleton" "${_opt_dry_run}" "" || return |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
468 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
469 return 0 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
470 } |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
471 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
472 |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
473 # |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
474 # _do_umount dataset |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
475 # |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
476 _do_umount() { |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
477 local _dsname |
|
246
bdee72ff7dbd
Some subcommands now support options properly
Franz Glasner <fzglas.hg@dom66.de>
parents:
245
diff
changeset
|
478 |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
479 local _name _mp _rest |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
480 local _rootds_mountpoint |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
481 |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
482 _dsname="${1}" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
483 [ -z "${_dsname}" ] && { echo "ERROR: no dataset given" >&2; return 2; } |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
484 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
485 # Just determine whether the given dataset name exists |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
486 _rootds_mountpoint="$(zfs list -H -o mountpoint -t filesystem "${_dsname}")" || \ |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
487 { echo "ERROR: dataset not found" >&2; return 1; } |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
488 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
489 mount -t zfs -p \ |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
490 | grep -E "^${_dsname}(/|\s)" \ |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
491 | sort -n -r \ |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
492 | { |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
493 while IFS=' '$'\t' read -r _name _mp _rest ; do |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
494 echo "Umounting ${_name} on ${_mp}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
495 umount "${_mp}" || return 1 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
496 done |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
497 return 0 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
498 } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
499 } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
500 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
501 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
502 # |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
503 # "umount-tmpl" -- umount skeleton and base datasets |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
504 # |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
505 # command_umount_tmpl ds-base ds-skeleton |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
506 # |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
507 command_umount_tmpl() { |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
508 local _ds_base _ds_skel |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
509 |
|
245
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
510 _ensure_no_options "$@" |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
511 |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
512 _ds_base="${1-}" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
513 _ds_skel="${2-}" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
514 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
515 [ -z "${_ds_base}" ] && { echo "ERROR: no RO base dataset given" >&2; return 2; } |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
516 [ -z "${_ds_skel}" ] && { echo "ERROR: no RW skeleton dataset given" >&2; return 2; } |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
517 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
518 _do_umount "${_ds_skel}" || return |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
519 _do_umount "${_ds_base}" || return |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
520 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
521 return 0 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
522 } |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
523 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
524 |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
525 # |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
526 # "interlink-tmpl" -- create links from base to skeleton |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
527 # |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
528 # command_interlink_tmpl mountpint |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
529 # |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
530 command_interlink_tmpl() { |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
531 local _mountpoint |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
532 |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
533 local _dir _dirpart _basepart |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
534 |
|
245
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
535 _ensure_no_options "$@" |
|
61861d36758c
Ensure that no options are really given when no options are allowed
Franz Glasner <fzglas.hg@dom66.de>
parents:
244
diff
changeset
|
536 |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
537 _mountpoint="${1-}" |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
538 |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
539 [ -z "${_mountpoint}" ] && { echo "ERROR: no mountpoint given" 2>&1; return 2; } |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
540 [ -d "${_mountpoint}" ] || { echo "ERROR: mountpoint \`${_mountpoint}' does not exist" 2>&1; return 1; } |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
541 [ -d "${_mountpoint}/skeleton" ] || { echo "WARNING: skeleton is not mounted at \`${_mountpoint}/skeleton'" 2>&1; } |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
542 |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
543 for _dir in etc home root tmp usr/local var ; do |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
544 case "${_dir}" in |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
545 "usr/local") |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
546 _dirpart="$(dirname "${_dir}")" |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
547 _basepart="$(basename "${_dir}")" |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
548 [ -d "${_mountpoint}/${_dirpart}" ] || mkdir "${_mountpoint}/${_dirpart}" || return |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
549 ( cd "${_mountpoint}/${_dirpart}" && ln -s "../skeleton/${_dir}" "${_basepart}" ) || return |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
550 ;; |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
551 *) |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
552 ( cd "${_mountpoint}" && ln -s "skeleton/${_dir}" "${_dir}" ) || return |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
553 ;; |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
554 esac |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
555 done |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
556 return 0 |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
557 } |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
558 |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
559 |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
560 # |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
561 # Global option handling |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
562 # |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
563 while getopts "Vh" _opt ; do |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
564 case ${_opt} in |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
565 V) |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
566 printf 'ftjail v%s (rv:%s)\n' "${VERSION}" '@@HGREVISION@@' |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
567 exit 0 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
568 ;; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
569 h) |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
570 echo "${USAGE}" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
571 exit 0 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
572 ;; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
573 \?) |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
574 exit 2; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
575 ;; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
576 *) |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
577 echo "ERROR: option handling failed" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
578 exit 2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
579 ;; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
580 esac |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
581 done |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
582 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
583 # |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
584 # Reset the Shell's option handling system to prepare for handling |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
585 # command-local options. |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
586 # |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
587 shift $((OPTIND-1)) |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
588 OPTIND=1 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
589 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
590 test $# -gt 0 || { echo "ERROR: no command given" >&2; exit 2; } |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
591 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
592 command="$1" |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
593 shift |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
594 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
595 case "${command}" in |
|
235
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
596 datasets-tmpl) |
|
85aea8ca1ab8
Some work on datasets-tmpl
Franz Glasner <fzglas.hg@dom66.de>
parents:
234
diff
changeset
|
597 command_datasets_tmpl "$@" |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
598 ;; |
|
241
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
599 mount-tmpl) |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
600 command_mount_tmpl "$@" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
601 ;; |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
602 umount-tmpl|unmount-tmpl) |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
603 command_umount_tmpl "$@" |
|
acf16a85900f
Mount and unmount template datasets
Franz Glasner <fzglas.hg@dom66.de>
parents:
240
diff
changeset
|
604 ;; |
|
242
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
605 interlink-tmpl) |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
606 command_interlink_tmpl "$@" |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
607 ;; |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
608 populate-tmpl) |
|
59e933b81dcf
First attemt to populate base and skeleton using the "skeleton" subdir and symliks from base to RW skeleton subdirs
Franz Glasner <fzglas.hg@dom66.de>
parents:
241
diff
changeset
|
609 command_populate_tmpl "$@" |
|
233
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
610 ;; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
611 *) |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
612 echo "ERROR: unknown command \`${command}'" >&2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
613 exit 2 |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
614 ;; |
|
f745d3a216a6
Erste Basis für "ftjail": Management von Thin Jails
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
615 esac |
