Updates for running dosemu as user
This commit is contained in:
parent
832c92fdf8
commit
dedb313970
@ -17,7 +17,77 @@
|
|||||||
<div align='right'><h5>Last update 09-Aug-2004</h5></div>
|
<div align='right'><h5>Last update 09-Aug-2004</h5></div>
|
||||||
<div align='center'><H1>MBSE BBS - Running DOS doors.</H1></div>
|
<div align='center'><H1>MBSE BBS - Running DOS doors.</H1></div>
|
||||||
|
|
||||||
|
<h3>Introduction</h3>
|
||||||
|
<p>
|
||||||
|
Running DOS doors is possible on systems that can run
|
||||||
|
<a href="http://www.dosemu.org">dosemu</a>. The latest versions of dosemu don't
|
||||||
|
need to be started suid root or started using sudo, it can run as the user that
|
||||||
|
is logged in the bbs. Since that is possible, a new location for the virtual C:
|
||||||
|
drive is now being used withing the $MBSE_ROOT file structure. This virtual C:
|
||||||
|
drive is owned by the group bbs. The basic ideas how doors should be run written
|
||||||
|
by Redy Rodriguez are still valid, but some scripts are changed and some dosemu
|
||||||
|
files must be copied into the mbse directory tree.
|
||||||
|
<p> <p>
|
||||||
|
|
||||||
|
<h3>Installing dosemu</h3>
|
||||||
|
<p>
|
||||||
|
Some distributions have good dosemu packages, others don't. You need a dosemu
|
||||||
|
that can be used in a systemwide multiuser setup. The bad packages want to have
|
||||||
|
the dos drive in each users home directory, this is not what we want for doors.
|
||||||
|
If you don't have a good dosemu you have to compile your own. This is not too
|
||||||
|
complicated. First download the source from <a
|
||||||
|
href="http://www.dosemu.org">dosemu</a>. You don't need the freedos-bin source
|
||||||
|
if you are going to use ms-dos or pc-dos.
|
||||||
|
Unpack the source in some directory of your choice and compile the sources:<br>
|
||||||
|
<pre>
|
||||||
|
mbse@seaport$ tar xfvz dosemu-1.2.2.tgz
|
||||||
|
mbse@seaport$ cd dosemu-1.2.2
|
||||||
|
mbse@seaport:~/dosemu-1.2.2$ ./configure --prefix=/usr --sysconfdir=/etc/dosemu --with-x
|
||||||
|
mbse@seaport:~/dosemu-1.2.2$ make
|
||||||
|
</pre>
|
||||||
|
Note that the <code>--with-x</code> is not needed for running doors, but it
|
||||||
|
might be handy that you can use dosemu as user mbse in X to do maintenance on
|
||||||
|
your doors.<br>
|
||||||
|
Then as root do:<br>
|
||||||
|
<pre>
|
||||||
|
root@seaport:~/dosemu-1.2.2# make install
|
||||||
|
</pre>
|
||||||
|
<p> <p>
|
||||||
|
|
||||||
|
<h3>Setup dosemu in mbse</h3>
|
||||||
|
<p>
|
||||||
|
First copy <code>/etc/dosemu/dosemu.conf</code> into <code>~/etc/dosmeu</code>.
|
||||||
|
Then edit <code>~/etc/dosemu/dosemu.conf</code> so that we have a version for
|
||||||
|
mbse users. Set the following settings in that file:<br>
|
||||||
|
<pre>
|
||||||
|
$_hdimage = "/opt/mbse/var/dosemu/c"
|
||||||
|
$_floppy_a = ""
|
||||||
|
$_xms = (1024)
|
||||||
|
$_ems = (2048)
|
||||||
|
$_dpmi = (0x1000)
|
||||||
|
$_layout = "us"
|
||||||
|
</pre>
|
||||||
|
Next we need to setup the C: drive. Do this as user mbse. First type <code>umask
|
||||||
|
007</code>, this sets the create mode for directories to 0770 and files to 0660
|
||||||
|
so that we create all files and directories read/write for all bbs users. This
|
||||||
|
is very important! Type the following commands:
|
||||||
|
<pre>
|
||||||
|
mbse@seaport:~$ umask 007
|
||||||
|
mbse@seaport:~$ cd var/dosemu/c
|
||||||
|
mbse@seaport:~/var/dosemu/c$ mkdir dos dosemu temp util
|
||||||
|
</pre>
|
||||||
|
To be continued....
|
||||||
|
<p> </P>
|
||||||
|
|
||||||
|
<h3>What if I don't upgrade</h3>
|
||||||
|
<p>
|
||||||
|
That's your choice, but for a while the old method starting dosemu via sudo is
|
||||||
|
still supported. The file <code>~/bin/bbsdoor.sh</code> is still there, but the
|
||||||
|
file <code>~/bin/rundoor.sh</code> is renamed to
|
||||||
|
<code>~/bin/runvirtual.sh</code>. So you should change all symlinks of your door
|
||||||
|
names in <code>~/bin</code> (or copies) to <code>~/bin/runvirtual.sh</code>. You
|
||||||
|
should not need to change anything else.
|
||||||
|
<p>
|
||||||
|
|
||||||
<A HREF="index.htm"><IMG SRC="images/b_arrow.png" ALT="Back" Border="0">Go Back</A>
|
<A HREF="index.htm"><IMG SRC="images/b_arrow.png" ALT="Back" Border="0">Go Back</A>
|
||||||
</BLOCKQUOTE>
|
</BLOCKQUOTE>
|
||||||
|
@ -2,23 +2,55 @@
|
|||||||
#
|
#
|
||||||
# $Id$
|
# $Id$
|
||||||
#
|
#
|
||||||
# rundoor.sh - Never call this script directly, create a symlink
|
# Never call this script directly, create a symlink to this file with the
|
||||||
# to this file with the name of the door. For example
|
# name of the door. For example to run the door ilord do:
|
||||||
# to run the door ilord do:
|
|
||||||
# cd /opt/mbse/bin
|
# cd /opt/mbse/bin
|
||||||
# ln -s rundoor.sh ilord
|
# ln -s rundoor.sh ilord
|
||||||
# In the menu use the following line for Optional Data:
|
|
||||||
# /opt/mbse/bin/ilord /N
|
|
||||||
#
|
#
|
||||||
# This version DOES NOT have virtual COMport support, see runvirtual.sh
|
# In the bbs menu use the following line for Opt. Data:
|
||||||
|
# /opt/mbse/bin/ilord /N [novirtual]
|
||||||
|
#
|
||||||
|
# The optional "novirtual" second paramter disables the use of the virtual
|
||||||
|
# comport in dosemu, this is for dos programs that are not doors.
|
||||||
|
#
|
||||||
|
# This is for dosemu 1.2.0 and later and runs the door as user.
|
||||||
#
|
#
|
||||||
# by Redy Rodriguez and Michiel Broek.
|
# by Redy Rodriguez and Michiel Broek.
|
||||||
#
|
|
||||||
DOOR=`basename $0`
|
DOOR=`basename $0`
|
||||||
COMMANDO="\"doors $DOOR $*\r\""
|
COMMANDO="\"doors $DOOR $*\r\""
|
||||||
|
DOSDRIVE=${MBSE_ROOT}/var/dosemu/c
|
||||||
|
|
||||||
/opt/mbse/bin/bbsdoor.sh $DOOR $1
|
# Prepare users home directory and node directory
|
||||||
/usr/bin/sudo /usr/bin/dosemu.bin -f /opt/mbse/etc/dosemu/dosemu.conf -I "`echo -e keystroke $COMMANDO`"
|
if [ "$1" != "" ]; then
|
||||||
|
mkdir -p $DOSDRIVE/doors/node$1 >/dev/null 2>&1
|
||||||
|
# Copy door*.sys to dos partition
|
||||||
|
cat ~/door.sys >$DOSDRIVE/doors/node$1/door.sys
|
||||||
|
cat ~/door32.sys >$DOSDRIVE/doors/node$1/door32.sys
|
||||||
|
# Create .dosemu directory for the user.
|
||||||
|
if [ ! -d $HOME/.dosemu ]; then
|
||||||
|
mkdir $HOME/.dosemu
|
||||||
|
fi
|
||||||
|
# Looks cheap, see above, but this does an upgrade too
|
||||||
|
if [ ! -d $HOME/.dosemu/drives ]; then
|
||||||
|
mkdir $HOME/.dosemu/drives
|
||||||
|
fi
|
||||||
|
# Create .dosemu/disclaimer in user home to avoid warning
|
||||||
|
if [ ! -f $HOME/.dosemu/disclaimer ]; then
|
||||||
|
touch $HOME/.dosemu/disclaimer
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# run the dos emulator with the door.
|
||||||
|
if [ "$2" == "novirtual" ]; then
|
||||||
|
/usr/bin/dosemu.bin -f ${MBSE_ROOT}/etc/dosemu/dosemu.conf -I "`echo -e keystroke $COMMANDO`"
|
||||||
|
else
|
||||||
|
/usr/bin/dosemu.bin -f ${MBSE_ROOT}/etc/dosemu/dosemu.conf -I "`echo -e serial { com 1 virtual }"\n" keystroke $COMMANDO`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# reset the users terminal, just in case.
|
||||||
reset
|
reset
|
||||||
tput reset
|
tput reset
|
||||||
stty sane
|
stty sane
|
||||||
|
Reference in New Issue
Block a user