It's 2013.
[usmb.git] / README
blob04bb0609bd86d05b84c008622832d5c812a5eac5
1 usmb - Unprivileged mounting of SMB/CIFS shares via FUSE
2 ========================================================
4 Acknowledgements
5 ----------------
7 Jonathan Schultz (Email <firstname> at imatix.com) provided a patch
8 to fix the display of file modification times.
10 Stijn Hoop (Email <firstname> at sandcat.nl) provided a patch to fix
11 a compilation problem on 64-bit platforms.
13 Nigel Smith (Email me at <firstname>.<surname>.name) contributed the
14 port to Samba 3.2.
16 Michal Suchanek (Email hramrach at centrum dot cz) contributed the
17 Debian packaging and the initial implementation of ~-expansion.
20 Introduction
21 ------------
23 usmb lets you mount SMB/CIFS shares via FUSE, in the vein of the Map Network
24 Drive functionality in Windows.
26 The two existing FUSE filesystems that I know of (SMB for FUSE and fusesmb)
27 mimic Windows' Network Neighbourhood by letting you browse hosts and shares.
28 This means that you must run a NetBIOS name server and can't see hosts that
29 aren't advertised via NetBIOS.
31 You can build [u]mount.cifs in the Samba distribution and install them
32 setuid root, but that has its own set of security implications. In any
33 case there's no need for network filesystem code to be in the kernel:
34 bugs could lead to remotely exploitable kernel vulnerabilities. Running
35 the SMB client code in user space as an unprivileged user limits the
36 potential damage due to bugs.
38 A user space implementation will be slower than a kernel filesystem since
39 the data must be copied in and out of the fuse process' context as well as
40 in/out of the user process' context. Mitigating factors are:
42 1. Increased security.
43 2. Containment of bugs.
44 3. Throughput is more likely to be limited by network bandwidth rather than
45    local memory copying.
46 4. The client filesystem code can be upgraded/fixed without kernel changes.
49 Pre-Requisites and Installation
50 -------------------------------
52 Please see INSTALL.
55 Configuration
56 -------------
58 You need an XML configuration file - ${HOME}/.usmb.conf by default. There's an
59 example in usmb.conf.
61 There are two main elements: credentials and mounts.
63 Credentials:
65   <credentials id="some_id">
66     <domain>mydomain</domain>
67     <username>username</username>
68     <password>password</password>
69   </credentials>
71 Each credentials element gives authentication details. You can have multiple
72 credentials elements; each must have a distinct id attribute. If you omit
73 the <password> element then usmb will prompt you for a password.
75 A mount element describes an SMB share:
77   <mount id="mount_id" credentials="some_id">
78     <server>1.2.3.4</server>
79     <share>sharename</share>
80     <mountpoint>/tmp/share</mountpoint>
81   </mount>
83 The credentials attribute identifies the id of the credentials element that
84 provides authentication details for the share. The server, share and
85 mountpoint should be self-explanatory. The id is given on the usmb command
86 line to identify the SMB share to mount.
88 You can specify multiple mount elements; each must have a distinct id
89 (though credentials and mount IDs can be the same).
91 The whole file is wrapped in a <usmbconfig> element.
94 Usage
95 -----
97 $ usmb [options] mount_ID
99 Use usmb --help for a list of options.
100 Mount IDs are defined in the configuration file.