UNIX is a multi user operating system ... so I want to have multiple terminals and multipe user accounts.

DZ11: 8 serial ports

I have a DZ11 with 8 serial lines installed.

To simulate it in SimH,

set dz enabled
set dz lines=8
set dz 8b
set dz vector=300
attach -am dz 4000

This attaches 8 serial lines to the single telnet port 4000. The first telnet session gets connected to line #0, the next connection connectsy to line #1, and so on.

The single DZ11 board sits at address 160100, vector 300. Check ”/etc/dtab” for correct address/vector/bus request level settings. For DZ11 at SimHs standard settings, the line should read

dz      ? 160100 300    5       dzrint  dzdma   # dz11 terminal mux

DZ11 gets kernel support by this line in the kernel configuration file “/sys/SYSTEM”:

NDZ   1    # DZ11; NDZ is in units of boards (8 each)

And you have to “

cd /dev ; ./MAKEDEV dz0”, 

to generate tty00 .. tty07 device nodes.

But default terminal nodes are configured for modem control, they need the DCD carrier signal to be correct. For direct connected terminals, set the “soft carrier bit” by adding 128 to the minor device number:

cd /dev
rm tty0[0-7]
mknod tty00 c 2 128
mknod tty01 c 2 129
mknod tty02 c 2 130
mknod tty03 c 2 131
mknod tty04 c 2 132
mknod tty05 c 2 133
mknod tty06 c 2 134
mknod tty07 c 2 135
sync

To enable the tty lines for multi user login, edit “/etc/ttys” to contain these lines:

tty00   "/usr/libexec/getty std.9600"   vt100           on secure                 
tty01  "/usr/libexec/getty std.9600"  vt100          on secure
tty02  "/usr/libexec/getty std.9600"  vt100          on secure
tty03  "/usr/libexec/getty std.9600"  vt100          on secure
tty04  "/usr/libexec/getty std.9600"  vt100          on secure
tty05  "/usr/libexec/getty std.9600"  vt100          on secure
tty06  "/usr/libexec/getty std.9600"  vt100          on secure
tty07  "/usr/libexec/getty std.300"   dw4          on secure      # decwriter iv

And reboot!

User setup

User setup under 2.11BSD is not just editing “/etc/passwd”. 2.11BSD does use the plain /etc/passwd file, and another file “master.passwd” and a passwd database and some tools. “/etc/passwd” is used to get the user id and to provide input to the “mkpasswd” and “chpass” tools.

I put all regular user accounts into group “staff” = 10.user ID’s are > 100. One account is generated by

1) add a line like this into “/etc/master.passwd”:

joerg::101:40::::A regular user:/usr/joerg:/bin/sh

Then execute

# cp master.passwd passwd
# mkpasswd /etc/passwd

(so passwd.dir and passwd.pag are generated)

Check the entries with

# chpass joerg

! This resets /etc/passwd to old style format!

2) User home directory:

chmod a+r /usr # (only first time, all user must be able to read their “..”)                 
mkdir /usr/joerg
chgrp staff /usr/joerg
chown joerg  /usr/joerg

3) Execute

# chpass joerg 

and clear out the “Password:” entry. The user has now empty password, can login and can change its password by executing “$ passwd”

Accounts without password can not be accessed by ftp!

User rights

2.11BSD blocks users from most services. Without modification, they can not even edit, because “Vi” uses “/tmp”, wich is not free.

So at first:

# chmod a+rw /tmp

Then add user to groups in “/etc/group”.

wheel: access to /tmp, allow “su”
bin : access to binaery libraries in /lib, necessary for “cc”.
ftp: need for ftp daemon later.

wheel:*:0:root,joerg
daemon:*:1:daemon
kmem:*:2:
sys:*:3:
tty:*:4:
operator:*:5:
staff:*:10:
bin:*:20:joerg,jens,manfred,cordula,kai,hachti,ulrich,andreas
guest:*:31:
unify:*:40:
ingres:*:74:
ftp:*:50:

Test the user

Simply try to login as the new user:

# ^D
 
2.11 BSD UNIX (pdp1153) (console)
login: joerg
2.11 BSD UNIX #2: Sun Jul 13 08:11:13 PDT 2014
$ pwd
/usr/joerg
$ cc
$