diff options
author | erdgeist <erdgeist@erdgeist.org> | 2006-05-09 00:26:04 +0000 |
---|---|---|
committer | erdgeist <erdgeist@erdgeist.org> | 2006-05-09 00:26:04 +0000 |
commit | 653bd9e9387ca4e207e3a955af042461c88d7d84 (patch) | |
tree | e63a9dc8156e10cb5a1477a0b070ac4316333463 /ezjail.sh | |
parent | 56f79ffcec367af0269b5ac646136f76d1405252 (diff) |
Added attach/detach subsubcommands to config
Added more error checking when attaching image jails
Woke up this morning when the streets where full of cars
Diffstat (limited to 'ezjail.sh')
-rwxr-xr-x | ezjail.sh | 25 |
1 files changed, 22 insertions, 3 deletions
@@ -74,7 +74,9 @@ do_cmd() | |||
74 | [ "${action%crypto}" != "${action}" -a -z "${ezjail_blocking}" ] && continue | 74 | [ "${action%crypto}" != "${action}" -a -z "${ezjail_blocking}" ] && continue |
75 | 75 | ||
76 | # Try to attach (crypto) devices | 76 | # Try to attach (crypto) devices |
77 | [ -n "${ezjail_image}" ] && attach_detach_pre | 77 | if [ -n "${ezjail_image}" ]; then |
78 | attach_detach_pre || continue | ||
79 | fi | ||
78 | 80 | ||
79 | ezjail_pass="${ezjail_pass} ${ezjail}" | 81 | ezjail_pass="${ezjail_pass} ${ezjail}" |
80 | done | 82 | done |
@@ -91,10 +93,16 @@ attach_detach_pre () | |||
91 | if [ "${action%crypto}" = "start" ]; then | 93 | if [ "${action%crypto}" = "start" ]; then |
92 | # If jail is running, do not mount devices, this is the same check as | 94 | # If jail is running, do not mount devices, this is the same check as |
93 | # /etc/rc.d/jail does | 95 | # /etc/rc.d/jail does |
94 | [ -e /var/run/jail_${ezjail}.id ] && return | 96 | [ -e /var/run/jail_${ezjail}.id ] && return 1 |
97 | |||
98 | if [ -L "${ezjail_root}.device" ]; then | ||
99 | # Fetch destination of soft link | ||
100 | ezjail_device=`stat -f "%Y" ${ezjail_root}.device` | ||
101 | [ -b "${ezjail_device}" ] && echo "Warning: Jail image file ${ezjail_name} already attached as ${ezjail_device}." && return 1 | ||
102 | fi | ||
95 | 103 | ||
96 | # Create a memory disc from jail image | 104 | # Create a memory disc from jail image |
97 | ezjail_device=`mdconfig -a -t vnode -f ${ezjail_image}` | 105 | ezjail_device=`mdconfig -a -t vnode -f ${ezjail_image}` || return 1 |
98 | 106 | ||
99 | # If this is a crypto jail, try to mount it, remind user, which jail | 107 | # If this is a crypto jail, try to mount it, remind user, which jail |
100 | # this is. In this case, the device to mount is | 108 | # this is. In this case, the device to mount is |
@@ -102,17 +110,28 @@ attach_detach_pre () | |||
102 | crypto|bde) | 110 | crypto|bde) |
103 | echo "Attaching bde device for image jail ${ezjail}..." | 111 | echo "Attaching bde device for image jail ${ezjail}..." |
104 | echo gbde attach /dev/${ezjail_device} ${ezjail_attachparams} | /bin/sh | 112 | echo gbde attach /dev/${ezjail_device} ${ezjail_attachparams} | /bin/sh |
113 | if [ $? -eq 0 ]; then | ||
114 | mdconfig -d -u ${ezjail_imagedevice} > /dev/null | ||
115 | echo "Error: Attaching bde device failed."; return 1 | ||
116 | fi | ||
105 | # Device to mount is not md anymore | 117 | # Device to mount is not md anymore |
106 | ezjail_device=${ezjail_device}.bde | 118 | ezjail_device=${ezjail_device}.bde |
107 | ;; | 119 | ;; |
108 | eli) | 120 | eli) |
109 | echo "Attaching eli device for image jail ${ezjail}..." | 121 | echo "Attaching eli device for image jail ${ezjail}..." |
110 | echo geli attach ${ezjail_attachparams} /dev/${ezjail_device} | /bin/sh | 122 | echo geli attach ${ezjail_attachparams} /dev/${ezjail_device} | /bin/sh |
123 | if [ $? -eq 0 ]; then | ||
124 | mdconfig -d -u ${ezjail_imagedevice} > /dev/null | ||
125 | echo "Error: Attaching eli device failed."; return 1 | ||
126 | fi | ||
111 | # Device to mount is not md anymore | 127 | # Device to mount is not md anymore |
112 | ezjail_device=${ezjail_device}.eli | 128 | ezjail_device=${ezjail_device}.eli |
113 | ;; | 129 | ;; |
114 | esac | 130 | esac |
115 | 131 | ||
132 | # Clean image | ||
133 | fsck_ufs -F -p ${ezjail_device} | ||
134 | |||
116 | # relink image device | 135 | # relink image device |
117 | rm -f ${ezjail_root}.device | 136 | rm -f ${ezjail_root}.device |
118 | ln -s /dev/${ezjail_device} ${ezjail_root}.device | 137 | ln -s /dev/${ezjail_device} ${ezjail_root}.device |