aquarela – CIFS server

aquarela [ –np ] [ –d debug ] [ –u N ] [ –w workgroup ]

Aquarela provides CIFS (once known as SMB) access to Plan 9 file servers. It announces and subsequently listens on tcp!*!445 for connections to the file hierarchies called `shares' by CIFS. Users are authenticated with their APOP secret (see auth(8)). Each session is managed by a process running as the authenticated user. Two persistent processes handle listening, session setup, and housekeeping.

An aquarela CIFS share corresponds to a directory under /n. A client request for a specific share, say, share, causes aquarela to attempt a 9fs (in srv(4)) connection to the file server share. If connection succeeds, a file hierarchy rooted at /n/share is presented to the client. The client request fails otherwise. Requests for the protocol equivalent of / are satisfied with a directory containing only the default share, local.

The options are:
n    Enable limited NETBIOS service. Aquarela will register with the `master browser' for workgroup and listen on tcp!*!139 and udp!*!13[7–9] for NETBIOS name resolution and session requests. This works in tandem with a complete NETBIOS master name server, like that provided by Unix nmbd(8). NETBIOS is
not required for CIFS file service.
u N   Send Unicode. For N, 1 enables, 0 disables Unicoding of file names and metadata. There is no code page support, so aquarela emits UTF if N is 0.
w workgroup
Set workgroup (or `primary domain') of server. Default PLAN9.

To start CIFS service on system plan9:
% aquarela –u 1 &

To then make the dump filesystem available as drive Y: on a Windows machine:
C:\>net use Y: \\\dump

/n/local           Default CIFS share
/sys/log/aquarela   Log file


auth(8), srv(4), utf(6)

Log messages are appended to /sys/log/aquarela if it exists. The –p option prints them on standard output as well. The –d option adds verbose output about debug to the log messages, where debug is one of:
allcmds        All CIFS requests and responses.
tids          Connections and disconnections per–share.
sids          Creation and deletion of search ids.
fids          Creation and deletion of file ids.
rap2          RAP calls.
find          Transaction2 find commands.
query          Transaction2 query commands.
sharedfiles    All files opened.
poolparanoia   Draconian error checking in memory allocator.
sessions       Connections and disconnections on server.
rep           Regular expression conversions.
locks          Locking activity.
any–smb–name    Debug only SMB_ requests or transaction2 sub–requests (e.g., SMB_COM_SESSION_SETUP_ANDX or SMB_TRANS2_FIND_FIRST2) matching symbolic name any–smb–name.
0xnn          Debug only messages with hexadecimal id 0xnn.

The first connection attempt to a share sometimes fails erroneously – try again. The share disk space reported by some clients is inaccurate. Some clients can't rename directories. Write attempts without sufficient permissions fail (correctly), but appear on client to temporarily succeed.

This program should probably be named cifsserver.

Copyright © 2024 Alcatel-Lucent. All rights reserved.