Directory listing in libsmbclient.so

Simo Sorce simo.sorce at polimi.it
Fri Dec 29 02:38:50 GMT 2000


On Thu, 28 Dec 2000, Steve Langasek wrote:

> On Wed, 27 Dec 2000, Christopher R. Hertel wrote:
>
> > > > Also, jcifs uses the following syntax to specify a resource as a URL:
> > > > smb://domain\user:password@host:port/share/dir/file
>
> > If possible, it would be nice to get rid of the backslash. ('\')  I would
> > like to see a nominal standard come out of this discussion.
>
> In this case, the Microsoft obsession with the backslash has proved rather
> fortuitous.  Putting aside the necessity of escaping the character at the
> commandline, the domain\user syntax is quite easy to incorporate into URIs of
> other types.  For instance, we have an NT ftp server which authenticates
> against a Samba-controlled domain.  When logging in, users have to specify the
> domain name as part of the username to log in.  Domain\user can be specified
> as part of an ftp url without any problems, whereas using another separator
> character could have caused problems (e.g. @, :, %, or /).
>
> > > Effectively, 'domain\user' is the username you're using for authentication.
> > > What if a user wishes to browse workgroup2, using his credentials from
> > > domain1?  This should be allowed, and with inter-domain trust relationships it
> > > may even be necessary.
>
> > An ntdomain is simply an extension of a workgroup.  The ntdomain provides
> > the additional functionality of:
> > - Cross-subnet browsing (via the DMB, but this is not significant to this
> >   discussion)
> > - A single sign-on.
>
> > This latter is the critical point, but it can be hidden from the user.
> > The syntax of the URI does not need to be different and the user should
> > *not* need to care if the name represents a workgroup or an ntdomain.
>
> Yes, the specification of the username can be hidden from the user.  But if
> we're not going to support a full URL syntax, including allowing the
> specification of the username within the URL, why bother trying to make it
> look like a URL?  I think it's perfectly reasonable to think that someone may
> occasionally want to browse the network using credentials other than the
> default, and that a domain name will need to be specified as part of these
> credentials.
>
> Is there functionality we lose if a workgroup and a domain can't be specified
> at the same time?  Not to my knowledge, because authentication info isn't used
> when retrieving browse lists.  Still, a user that has manually specified
> credentials will probably want those credentials to be preserved while
> browsing, which means encoding them in the URL that calls up the browse list.
> The client lib /could/ hide the credentials and simply cache them internally,
> but again, if we're going to start hiding information from the user or forcing
> her to use a GUI to make changes, why bother with URLs at all?
>
> Of course now that I've made this argument, I also see that if we're going
> to cache authentication information in the URL that has no bearing on
> browsing, it's just as useful to cache browse list information in a URL that's
> used for direct access to a resource for which the workgroup membership of the
> server is irrelevant.

agree, and say that many sysadmin and users really need a way to specify a
username/password.
About caching I will cache only the password removing it from the URL but
I will not remove the username.

>
> > Right, they are not heirarchical, but then neither are NetBIOS names.
> > Still, if there are multiple workgroups/ntdomains available on the local
> > wire, then the user should be able to access then all.  To do so, you
> > need to be able to specify the workgroup.  I see no reason to lock this
> > down in a config file.
>
> I agree completely.  I just don't want the workgroup to be specified in such a
> way that it causes confusion between workgroups and servers, which I think
> will happen if the workgroup ends up where other URL schemes place the
> hostname.
>
> > A browse list can be thought of as a directory.  It's not much
> > different.  The hierarchy would be:
>
> > workgroup/ntdomain
> >      \----> Server
> >               \----> service
> >                         \----> directory
>
> >
> smb://workgroup/[user[:password]@]host[.domain][:port]/[directory/[subdir/]][file]
> >   smb://
>
> >   smb://workgroup/
>
> I think it's to our advantage if a URL such as smb://<server>/<share>/ works
> just as it does for ftp or http urls.  I think the above scheme is close to
> what is needed, but I'd like to avoid seeing smb:///<server>/<share>/, which
> is what's required here to disambiguate between a workgroup name and a server
> name.  One possibility that would be consistent with RFC 1738 is
>
>   smb:/[workgroup]/[user[:password]@]host[.domain][:port]/[share][/...]
>
> Then
>
>   smb://
>
> gives a browse list of hosts in your default workgroup,
>
>   smb:/
>
> gives a list of available workgroups on the network, and
>
>   smb:/workgroup/
>
> lists hosts in the specified workgroup.  I have mixed feelings about putting
> anything between those first two slashes, which have come to be nearly
> universal, but this scheme does have two advantages that I see.  First,
> smb://server/ works as expected, so the principle of least surprises holds;
> and second, the workgroup name can be encoded in a manner suggesting heirarchy
> but not attempting to enforce it.  This scheme is one that people already
> familiar with URLs and SMB filesharing could start using with no learning
> curve, and a good interface could familiarize them with the new workgroup
> syntax without much trouble.
>

I think the following is better:

smb://[[domain/]user[:password]@][workgroup#]server[/share/../..]

smb://
will give a list of workgroups
smb://workgroup
will give a list of servers in the workgroup
smb://server
will give a list of shares in the server

the last 2 should work without trouble as workgroups and servers can't
have the same name!

-- 
Simo Sorce - Integrazione Sistemi Unix/Windows - Politecnico di Milano
E-mail: simo.sorce at polimi.it
Tel.int: 02 2399 2425 - Fax.int. 02 2399 2451
-----------------------------------------------------------------
Be happy, use Linux!





More information about the samba-technical mailing list