diff --git a/plist b/plist index 1ca4f98cd..5db3527e3 100644 --- a/plist +++ b/plist @@ -109,6 +109,7 @@ /usr/local/etc/rc.ipfw.postload /usr/local/etc/rc.kill_states /usr/local/etc/rc.linkup +/usr/local/etc/rc.livemode /usr/local/etc/rc.loader /usr/local/etc/rc.loader.d/00-banner /usr/local/etc/rc.loader.d/20-brand diff --git a/src/etc/rc b/src/etc/rc index 33cc5ec36..f86951133 100755 --- a/src/etc/rc +++ b/src/etc/rc @@ -248,5 +248,6 @@ rm /var/run/booting /usr/local/etc/rc.syshook start /usr/local/etc/rc.initial.banner +/usr/local/etc/rc.livemode exit 0 diff --git a/src/etc/rc.bootup b/src/etc/rc.bootup index 02cd5d70c..c3d7523a4 100755 --- a/src/etc/rc.bootup +++ b/src/etc/rc.bootup @@ -140,39 +140,6 @@ if ($ipsec_dynamic_hosts) { ipsec_configure_do(true); } -if (is_install_media()) { - /* - * Installer mode requires setting up an extra user and - * we will protect it with root's password. We can only - * do this if user does not exist, though. - */ - - $root = null; - - if (isset($config['system']['user'])) { - foreach ($config['system']['user'] as $user) { - if ($user['name'] == 'installer') { - $root = null; - break; - } - if ($user['uid'] == 0) { - $root = $user; - } - } - } - - if ($root) { - $root['shell'] = '/usr/local/etc/rc.installer'; - $root['name'] = 'installer'; - local_user_set($root, true); - - echo "\n"; - echo "Welcome! Both `root' and `installer' users are availabe for system\n"; - echo "setup or invoking the installer, respectively. The predefined root\n"; - echo "password works for both accounts. Remote login via SSH is possible.\n\n"; - } -} - system_console_unmute(); exit(0); diff --git a/src/etc/rc.livemode b/src/etc/rc.livemode new file mode 100755 index 000000000..7a3ba1f5c --- /dev/null +++ b/src/etc/rc.livemode @@ -0,0 +1,64 @@ +#!/usr/local/bin/php + + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +require_once('config.inc'); +require_once('auth.inc'); +require_once('util.inc'); + +if (is_install_media()) { + /* + * Installer mode requires setting up an extra user and + * we will protect it with root's password. We can only + * do this if user does not exist, though. + */ + $root = null; + + if (isset($config['system']['user'])) { + foreach ($config['system']['user'] as $user) { + if ($user['name'] == 'installer') { + $root = null; + break; + } + if ($user['uid'] == 0) { + $root = $user; + } + } + } + + if ($root) { + $root['shell'] = '/usr/local/etc/rc.installer'; + $root['name'] = 'installer'; + local_user_set($root, true); + + echo "\n"; + echo "Welcome! Both `root' and `installer' users are availabe for system\n"; + echo "setup or invoking the installer, respectively. The predefined root\n"; + echo "password works for both accounts. Remote login via SSH is possible.\n\n"; + } +}