diff options
-rwxr-xr-x | ezjail-admin | 70 |
1 files changed, 46 insertions, 24 deletions
diff --git a/ezjail-admin b/ezjail-admin index 0eec9e7..d0a79ec 100755 --- a/ezjail-admin +++ b/ezjail-admin | |||
@@ -48,6 +48,34 @@ ezjail_usage_list="Usage: ${ezjail_admin} list" | |||
48 | # define our bail out shortcut | 48 | # define our bail out shortcut |
49 | exerr () { echo -e "$*" >&2 ; exit 1; } | 49 | exerr () { echo -e "$*" >&2 ; exit 1; } |
50 | 50 | ||
51 | # generic attach routine for image jails | ||
52 | attach_images () { | ||
53 | # Create a memory disc from jail image | ||
54 | ezjail_imagedevice=`mdconfig -a -t vnode -f ${ezjail_image}` || exerr "Error: Could not attach memory disc." | ||
55 | |||
56 | # If this is a crypto jail, try to mount it, remind user, which jail | ||
57 | # this is. In this case, the device to mount is | ||
58 | case ${ezjail_imagetype} in | ||
59 | crypto|bde) | ||
60 | echo "Attaching bde device for image jail ${ezjail}..." | ||
61 | echo gbde attach /dev/${ezjail_imagedevice} ${ezjail_attachparams} | /bin/sh | ||
62 | [ $? -eq 0 ] || detach_images keep || exerr "Error: Attaching bde device failed." | ||
63 | # Device to mount is not md anymore | ||
64 | ezjail_device=${ezjail_imagedevice}.bde | ||
65 | ;; | ||
66 | eli) | ||
67 | echo "Attaching eli device for image jail ${ezjail}..." | ||
68 | echo geli attach ${ezjail_attachparams} /dev/${ezjail_imagedevice} | /bin/sh | ||
69 | [ $? -eq 0 ] || detach_images keep || exerr "Error: Attaching eli device failed." | ||
70 | # Device to mount is not md anymore | ||
71 | ezjail_device=${ezjail_imagedevice}.eli | ||
72 | ;; | ||
73 | simple) | ||
74 | ezjail_device=${ezjail_imagedevice} | ||
75 | ;; | ||
76 | esac | ||
77 | } | ||
78 | |||
51 | # define detach strategy for image jails | 79 | # define detach strategy for image jails |
52 | detach_images () { | 80 | detach_images () { |
53 | # unmount and detach memory disc | 81 | # unmount and detach memory disc |
@@ -735,30 +763,8 @@ config) | |||
735 | [ -n "${ezjail_attached}" ] && exerr "Error: Jail image file ${ezjail_image} already attached as ${ezjail_device}." | 763 | [ -n "${ezjail_attached}" ] && exerr "Error: Jail image file ${ezjail_image} already attached as ${ezjail_device}." |
736 | rm -f ${ezjail_rootdir}.device | 764 | rm -f ${ezjail_rootdir}.device |
737 | 765 | ||
738 | # Create a memory disc from jail image | 766 | # Attach images by type |
739 | ezjail_imagedevice=`mdconfig -a -t vnode -f ${ezjail_image}` || exerr "Error: Could not attach memory disc." | 767 | attach_images |
740 | |||
741 | # If this is a crypto jail, try to mount it, remind user, which jail | ||
742 | # this is. In this case, the device to mount is | ||
743 | case ${ezjail_imagetype} in | ||
744 | crypto|bde) | ||
745 | echo "Attaching bde device for image jail ${ezjail}..." | ||
746 | echo gbde attach /dev/${ezjail_imagedevice} ${ezjail_attachparams} | /bin/sh | ||
747 | [ $? -eq 0 ] || detach_images keep || exerr "Error: Attaching bde device failed." | ||
748 | # Device to mount is not md anymore | ||
749 | ezjail_device=${ezjail_imagedevice}.bde | ||
750 | ;; | ||
751 | eli) | ||
752 | echo "Attaching eli device for image jail ${ezjail}..." | ||
753 | echo geli attach ${ezjail_attachparams} /dev/${ezjail_imagedevice} | /bin/sh | ||
754 | [ $? -eq 0 ] || detach_images keep || exerr "Error: Attaching eli device failed." | ||
755 | # Device to mount is not md anymore | ||
756 | ezjail_device=${ezjail_imagedevice}.eli | ||
757 | ;; | ||
758 | simple) | ||
759 | ezjail_device=${ezjail_imagedevice} | ||
760 | ;; | ||
761 | esac | ||
762 | 768 | ||
763 | mount /dev/${ezjail_device} ${ezjail_rootdir} || detach_images keep || exerr "Error: Could not mount /dev/${ezjail_device} to ${ezjail_rootdir}." | 769 | mount /dev/${ezjail_device} ${ezjail_rootdir} || detach_images keep || exerr "Error: Could not mount /dev/${ezjail_device} to ${ezjail_rootdir}." |
764 | # relink image device | 770 | # relink image device |
@@ -784,6 +790,22 @@ config) | |||
784 | # Remove soft link (which acts as a lock) | 790 | # Remove soft link (which acts as a lock) |
785 | [ -e /dev/${ezjail_imagedevice} ] || rm -f ${ezjail_rootdir}.device | 791 | [ -e /dev/${ezjail_imagedevice} ] || rm -f ${ezjail_rootdir}.device |
786 | ;; | 792 | ;; |
793 | fsck) | ||
794 | # Check, if image already attached | ||
795 | [ -n "${ezjail_attached}" ] && exerr "Error: Jail image file ${ezjail_image} already attached as ${ezjail_device}." | ||
796 | rm -f ${ezjail_rootdir}.device | ||
797 | |||
798 | # Attach images by type | ||
799 | attach_images | ||
800 | |||
801 | fsck_ufs /dev/${ezjail_device} | ||
802 | |||
803 | # Detach images by type | ||
804 | detach_images keep | ||
805 | |||
806 | # Remove soft link (which acts as a lock) | ||
807 | [ -e /dev/${ezjail_imagedevice} ] || rm -f ${ezjail_rootdir}.device | ||
808 | ;; | ||
787 | esac | 809 | esac |
788 | ;; | 810 | ;; |
789 | 811 | ||