Well, I finally did get BeServed acting about as it should, but it was trickier to set up than it should have been.
Configuration files must go in /etc, instead the more typical of /usr/local/etc on FreeBSD. There is no console based configuration tool for the users that can be run on FreeBSD, so the administration needs to happen on BeOS, which is cumbersome. Finally, the installer doesn’t create the correct directories to store users in by default. This means that their GUI configuration tool doesn’t even work without some fiddling.
They helpfully did tell me this over e-mail though:
DomainManager, as you know, can be used to create user accounts. Each account is represented by a single configuration file. Unfortunately, sometimes during installation, the directories that store these user account files do not get created properly. On FreeBSD, they should be:
mkdir /etc/domains mkdir /etc/domains/default mkdir /etc/domains/default/groups mkdir /etc/domains/default/groups/everyone mkdir /etc/domains/default/servers mkdir /etc/domains/default/users
and on BeOS they should be:
mkdir /boot/home/config/domains mkdir /boot/home/config/domains/default mkdir /boot/home/config/domains/default/groups mkdir /boot/home/config/domains/default/groups/everyone mkdir /boot/home/config/domains/default/servers mkdir /boot/home/config/domains/default/users
You can create these manually if necessary to ensure that the files can be properly created. That should prevent the user accounts you create from disappearing. You can create the files manually on FreeBSD, although MD5 encoding of the password will be an issue without a tool for doing it. The easiest approach is to create the files using DomainManager and then move them to your FreeBSD machine. When adding a user to a group, you simply create a directory for the group name, such as “salespeople”, as in /etc/domains/default/groups/salespeople. Then within that directory you create symbolic links to each of the user files that should belong to that group. Removing a user from a group is then done by removing the symbolic link.
So after making the directories and creating my user, I copied over the domain tree to /etc on my FreeBSD box, copied besure_server to /usr/local/sbin (it’s not installed by their script), then fixed their lackluster init script to start besure_server. Their script is no better than putting it in rc.local, so I might redo it later on, but it works for now. I haven’t been disappointed by the file transferring part of the software, but the fact that I had to do these things to get the user authentication to work with the almost nonexistant documantation is really unacceptable. On the other hand, they only charge $5 for the FreeBSD license and $15 for the BeOS one, so it’s not as bad of a deal as it might seem. I guess you do get what you pay for though.