| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | The CIFS VFS support for Linux supports many advanced network filesystem | 
| Uwe Kleine-König | 1b3c371 | 2007-02-17 19:23:03 +0100 | [diff] [blame] | 2 | features such as hierarchical dfs like namespace, hardlinks, locking and more. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 3 | It was designed to comply with the SNIA CIFS Technical Reference (which | 
|  | 4 | supersedes the 1992 X/Open SMB Standard) as well as to perform best practice | 
|  | 5 | practical interoperability with Windows 2000, Windows XP, Samba and equivalent | 
| Steve French | 675c467 | 2008-04-17 23:41:01 +0000 | [diff] [blame] | 6 | servers.  This code was developed in participation with the Protocol Freedom | 
|  | 7 | Information Foundation. | 
|  | 8 |  | 
|  | 9 | Please see | 
|  | 10 | http://protocolfreedom.org/ and | 
|  | 11 | http://samba.org/samba/PFIF/ | 
|  | 12 | for more details. | 
|  | 13 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 |  | 
|  | 15 | For questions or bug reports please contact: | 
|  | 16 | sfrench@samba.org (sfrench@us.ibm.com) | 
|  | 17 |  | 
|  | 18 | Build instructions: | 
|  | 19 | ================== | 
|  | 20 | For Linux 2.4: | 
|  | 21 | 1) Get the kernel source (e.g.from http://www.kernel.org) | 
|  | 22 | and download the cifs vfs source (see the project page | 
|  | 23 | at http://us1.samba.org/samba/Linux_CIFS_client.html) | 
|  | 24 | and change directory into the top of the kernel directory | 
|  | 25 | then patch the kernel (e.g. "patch -p1 < cifs_24.patch") | 
|  | 26 | to add the cifs vfs to your kernel configure options if | 
|  | 27 | it has not already been added (e.g. current SuSE and UL | 
|  | 28 | users do not need to apply the cifs_24.patch since the cifs vfs is | 
|  | 29 | already in the kernel configure menu) and then | 
|  | 30 | mkdir linux/fs/cifs and then copy the current cifs vfs files from | 
|  | 31 | the cifs download to your kernel build directory e.g. | 
|  | 32 |  | 
|  | 33 | cp <cifs_download_dir>/fs/cifs/* to <kernel_download_dir>/fs/cifs | 
|  | 34 |  | 
|  | 35 | 2) make menuconfig (or make xconfig) | 
|  | 36 | 3) select cifs from within the network filesystem choices | 
|  | 37 | 4) save and exit | 
|  | 38 | 5) make dep | 
|  | 39 | 6) make modules (or "make" if CIFS VFS not to be built as a module) | 
|  | 40 |  | 
|  | 41 | For Linux 2.6: | 
| Adrian Bunk | dfc1e14 | 2005-05-05 16:15:51 -0700 | [diff] [blame] | 42 | 1) Download the kernel (e.g. from http://www.kernel.org) | 
|  | 43 | and change directory into the top of the kernel directory tree | 
|  | 44 | (e.g. /usr/src/linux-2.5.73) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 45 | 2) make menuconfig (or make xconfig) | 
|  | 46 | 3) select cifs from within the network filesystem choices | 
|  | 47 | 4) save and exit | 
|  | 48 | 5) make | 
|  | 49 |  | 
|  | 50 |  | 
|  | 51 | Installation instructions: | 
|  | 52 | ========================= | 
|  | 53 | If you have built the CIFS vfs as module (successfully) simply | 
|  | 54 | type "make modules_install" (or if you prefer, manually copy the file to | 
|  | 55 | the modules directory e.g. /lib/modules/2.4.10-4GB/kernel/fs/cifs/cifs.o). | 
|  | 56 |  | 
|  | 57 | If you have built the CIFS vfs into the kernel itself, follow the instructions | 
|  | 58 | for your distribution on how to install a new kernel (usually you | 
|  | 59 | would simply type "make install"). | 
|  | 60 |  | 
|  | 61 | If you do not have the utility mount.cifs (in the Samba 3.0 source tree and on | 
|  | 62 | the CIFS VFS web site) copy it to the same directory in which mount.smbfs and | 
|  | 63 | similar files reside (usually /sbin).  Although the helper software is not | 
|  | 64 | required, mount.cifs is recommended.  Eventually the Samba 3.0 utility program | 
|  | 65 | "net" may also be helpful since it may someday provide easier mount syntax for | 
| Steve French | f6d0998 | 2008-01-08 23:18:22 +0000 | [diff] [blame] | 66 | users who are used to Windows e.g. | 
|  | 67 | net use <mount point> <UNC name or cifs URL> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 68 | Note that running the Winbind pam/nss module (logon service) on all of your | 
|  | 69 | Linux clients is useful in mapping Uids and Gids consistently across the | 
|  | 70 | domain to the proper network user.  The mount.cifs mount helper can be | 
|  | 71 | trivially built from Samba 3.0 or later source e.g. by executing: | 
|  | 72 |  | 
|  | 73 | gcc samba/source/client/mount.cifs.c -o mount.cifs | 
|  | 74 |  | 
|  | 75 | If cifs is built as a module, then the size and number of network buffers | 
|  | 76 | and maximum number of simultaneous requests to one server can be configured. | 
|  | 77 | Changing these from their defaults is not recommended. By executing modinfo | 
|  | 78 | modinfo kernel/fs/cifs/cifs.ko | 
|  | 79 | on kernel/fs/cifs/cifs.ko the list of configuration changes that can be made | 
|  | 80 | at module initialization time (by running insmod cifs.ko) can be seen. | 
|  | 81 |  | 
|  | 82 | Allowing User Mounts | 
|  | 83 | ==================== | 
|  | 84 | To permit users to mount and unmount over directories they own is possible | 
|  | 85 | with the cifs vfs.  A way to enable such mounting is to mark the mount.cifs | 
| Steve French | 099a58f | 2005-04-28 22:41:07 -0700 | [diff] [blame] | 86 | utility as suid (e.g. "chmod +s /sbin/mount.cifs). To enable users to | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 87 | umount shares they mount requires | 
|  | 88 | 1) mount.cifs version 1.4 or later | 
|  | 89 | 2) an entry for the share in /etc/fstab indicating that a user may | 
|  | 90 | unmount it e.g. | 
|  | 91 | //server/usersharename  /mnt/username cifs user 0 0 | 
|  | 92 |  | 
|  | 93 | Note that when the mount.cifs utility is run suid (allowing user mounts), | 
|  | 94 | in order to reduce risks, the "nosuid" mount flag is passed in on mount to | 
|  | 95 | disallow execution of an suid program mounted on the remote target. | 
|  | 96 | When mount is executed as root, nosuid is not passed in by default, | 
|  | 97 | and execution of suid programs on the remote target would be enabled | 
|  | 98 | by default. This can be changed, as with nfs and other filesystems, | 
|  | 99 | by simply specifying "nosuid" among the mount options. For user mounts | 
|  | 100 | though to be able to pass the suid flag to mount requires rebuilding | 
|  | 101 | mount.cifs with the following flag: | 
|  | 102 |  | 
|  | 103 | gcc samba/source/client/mount.cifs.c -DCIFS_ALLOW_USR_SUID -o mount.cifs | 
|  | 104 |  | 
|  | 105 | There is a corresponding manual page for cifs mounting in the Samba 3.0 and | 
|  | 106 | later source tree in docs/manpages/mount.cifs.8 | 
|  | 107 |  | 
| Steve French | 099a58f | 2005-04-28 22:41:07 -0700 | [diff] [blame] | 108 | Allowing User Unmounts | 
|  | 109 | ====================== | 
|  | 110 | To permit users to ummount directories that they have user mounted (see above), | 
|  | 111 | the utility umount.cifs may be used.  It may be invoked directly, or if | 
| Steve French | 0cb766a | 2005-04-28 22:41:11 -0700 | [diff] [blame] | 112 | umount.cifs is placed in /sbin, umount can invoke the cifs umount helper | 
| Steve French | 099a58f | 2005-04-28 22:41:07 -0700 | [diff] [blame] | 113 | (at least for most versions of the umount utility) for umount of cifs | 
| Steve French | 0cb766a | 2005-04-28 22:41:11 -0700 | [diff] [blame] | 114 | mounts, unless umount is invoked with -i (which will avoid invoking a umount | 
|  | 115 | helper). As with mount.cifs, to enable user unmounts umount.cifs must be marked | 
|  | 116 | as suid (e.g. "chmod +s /sbin/umount.cifs") or equivalent (some distributions | 
|  | 117 | allow adding entries to a file to the /etc/permissions file to achieve the | 
|  | 118 | equivalent suid effect).  For this utility to succeed the target path | 
|  | 119 | must be a cifs mount, and the uid of the current user must match the uid | 
|  | 120 | of the user who mounted the resource. | 
| Steve French | 099a58f | 2005-04-28 22:41:07 -0700 | [diff] [blame] | 121 |  | 
|  | 122 | Also note that the customary way of allowing user mounts and unmounts is | 
|  | 123 | (instead of using mount.cifs and unmount.cifs as suid) to add a line | 
|  | 124 | to the file /etc/fstab for each //server/share you wish to mount, but | 
|  | 125 | this can become unwieldy when potential mount targets include many | 
|  | 126 | or  unpredictable UNC names. | 
|  | 127 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 128 | Samba Considerations | 
|  | 129 | ==================== | 
|  | 130 | To get the maximum benefit from the CIFS VFS, we recommend using a server that | 
|  | 131 | supports the SNIA CIFS Unix Extensions standard (e.g.  Samba 2.2.5 or later or | 
|  | 132 | Samba 3.0) but the CIFS vfs works fine with a wide variety of CIFS servers. | 
|  | 133 | Note that uid, gid and file permissions will display default values if you do | 
|  | 134 | not have a server that supports the Unix extensions for CIFS (such as Samba | 
|  | 135 | 2.2.5 or later).  To enable the Unix CIFS Extensions in the Samba server, add | 
|  | 136 | the line: | 
|  | 137 |  | 
|  | 138 | unix extensions = yes | 
|  | 139 |  | 
|  | 140 | to your smb.conf file on the server.  Note that the following smb.conf settings | 
|  | 141 | are also useful (on the Samba server) when the majority of clients are Unix or | 
|  | 142 | Linux: | 
|  | 143 |  | 
|  | 144 | case sensitive = yes | 
|  | 145 | delete readonly = yes | 
|  | 146 | ea support = yes | 
|  | 147 |  | 
|  | 148 | Note that server ea support is required for supporting xattrs from the Linux | 
|  | 149 | cifs client, and that EA support is present in later versions of Samba (e.g. | 
|  | 150 | 3.0.6 and later (also EA support works in all versions of Windows, at least to | 
|  | 151 | shares on NTFS filesystems).  Extended Attribute (xattr) support is an optional | 
|  | 152 | feature of most Linux filesystems which may require enabling via | 
|  | 153 | make menuconfig. Client support for extended attributes (user xattr) can be | 
|  | 154 | disabled on a per-mount basis by specifying "nouser_xattr" on mount. | 
|  | 155 |  | 
|  | 156 | The CIFS client can get and set POSIX ACLs (getfacl, setfacl) to Samba servers | 
|  | 157 | version 3.10 and later.  Setting POSIX ACLs requires enabling both XATTR and | 
|  | 158 | then POSIX support in the CIFS configuration options when building the cifs | 
|  | 159 | module.  POSIX ACL support can be disabled on a per mount basic by specifying | 
|  | 160 | "noacl" on mount. | 
|  | 161 |  | 
|  | 162 | Some administrators may want to change Samba's smb.conf "map archive" and | 
|  | 163 | "create mask" parameters from the default.  Unless the create mask is changed | 
|  | 164 | newly created files can end up with an unnecessarily restrictive default mode, | 
|  | 165 | which may not be what you want, although if the CIFS Unix extensions are | 
|  | 166 | enabled on the server and client, subsequent setattr calls (e.g. chmod) can | 
|  | 167 | fix the mode.  Note that creating special devices (mknod) remotely | 
|  | 168 | may require specifying a mkdev function to Samba if you are not using | 
|  | 169 | Samba 3.0.6 or later.  For more information on these see the manual pages | 
|  | 170 | ("man smb.conf") on the Samba server system.  Note that the cifs vfs, | 
|  | 171 | unlike the smbfs vfs, does not read the smb.conf on the client system | 
|  | 172 | (the few optional settings are passed in on mount via -o parameters instead). | 
|  | 173 | Note that Samba 2.2.7 or later includes a fix that allows the CIFS VFS to delete | 
|  | 174 | open files (required for strict POSIX compliance).  Windows Servers already | 
|  | 175 | supported this feature. Samba server does not allow symlinks that refer to files | 
|  | 176 | outside of the share, so in Samba versions prior to 3.0.6, most symlinks to | 
|  | 177 | files with absolute paths (ie beginning with slash) such as: | 
|  | 178 | ln -s /mnt/foo bar | 
|  | 179 | would be forbidden. Samba 3.0.6 server or later includes the ability to create | 
|  | 180 | such symlinks safely by converting unsafe symlinks (ie symlinks to server | 
|  | 181 | files that are outside of the share) to a samba specific format on the server | 
|  | 182 | that is ignored by local server applications and non-cifs clients and that will | 
|  | 183 | not be traversed by the Samba server).  This is opaque to the Linux client | 
|  | 184 | application using the cifs vfs. Absolute symlinks will work to Samba 3.0.5 or | 
|  | 185 | later, but only for remote clients using the CIFS Unix extensions, and will | 
|  | 186 | be invisbile to Windows clients and typically will not affect local | 
|  | 187 | applications running on the same server as Samba. | 
|  | 188 |  | 
|  | 189 | Use instructions: | 
|  | 190 | ================ | 
|  | 191 | Once the CIFS VFS support is built into the kernel or installed as a module | 
|  | 192 | (cifs.o), you can use mount syntax like the following to access Samba or Windows | 
|  | 193 | servers: | 
|  | 194 |  | 
|  | 195 | mount -t cifs //9.53.216.11/e$ /mnt -o user=myname,pass=mypassword | 
|  | 196 |  | 
|  | 197 | Before -o the option -v may be specified to make the mount.cifs | 
|  | 198 | mount helper display the mount steps more verbosely. | 
|  | 199 | After -o the following commonly used cifs vfs specific options | 
|  | 200 | are supported: | 
|  | 201 |  | 
|  | 202 | user=<username> | 
|  | 203 | pass=<password> | 
|  | 204 | domain=<domain name> | 
|  | 205 |  | 
|  | 206 | Other cifs mount options are described below.  Use of TCP names (in addition to | 
|  | 207 | ip addresses) is available if the mount helper (mount.cifs) is installed. If | 
|  | 208 | you do not trust the server to which are mounted, or if you do not have | 
|  | 209 | cifs signing enabled (and the physical network is insecure), consider use | 
|  | 210 | of the standard mount options "noexec" and "nosuid" to reduce the risk of | 
|  | 211 | running an altered binary on your local system (downloaded from a hostile server | 
|  | 212 | or altered by a hostile router). | 
|  | 213 |  | 
|  | 214 | Although mounting using format corresponding to the CIFS URL specification is | 
|  | 215 | not possible in mount.cifs yet, it is possible to use an alternate format | 
|  | 216 | for the server and sharename (which is somewhat similar to NFS style mount | 
|  | 217 | syntax) instead of the more widely used UNC format (i.e. \\server\share): | 
|  | 218 | mount -t cifs tcp_name_of_server:share_name /mnt -o user=myname,pass=mypasswd | 
|  | 219 |  | 
|  | 220 | When using the mount helper mount.cifs, passwords may be specified via alternate | 
|  | 221 | mechanisms, instead of specifying it after -o using the normal "pass=" syntax | 
|  | 222 | on the command line: | 
|  | 223 | 1) By including it in a credential file. Specify credentials=filename as one | 
|  | 224 | of the mount options. Credential files contain two lines | 
|  | 225 | username=someuser | 
|  | 226 | password=your_password | 
|  | 227 | 2) By specifying the password in the PASSWD environment variable (similarly | 
|  | 228 | the user name can be taken from the USER environment variable). | 
|  | 229 | 3) By specifying the password in a file by name via PASSWD_FILE | 
|  | 230 | 4) By specifying the password in a file by file descriptor via PASSWD_FD | 
|  | 231 |  | 
|  | 232 | If no password is provided, mount.cifs will prompt for password entry | 
|  | 233 |  | 
|  | 234 | Restrictions | 
|  | 235 | ============ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 236 | Servers must support either "pure-TCP" (port 445 TCP/IP CIFS connections) or RFC | 
| Jeff Layton | cea2180 | 2007-11-20 23:19:03 +0000 | [diff] [blame] | 237 | 1001/1002 support for "Netbios-Over-TCP/IP." This is not likely to be a | 
|  | 238 | problem as most servers support this. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 239 |  | 
|  | 240 | Valid filenames differ between Windows and Linux.  Windows typically restricts | 
|  | 241 | filenames which contain certain reserved characters (e.g.the character : | 
|  | 242 | which is used to delimit the beginning of a stream name by Windows), while | 
|  | 243 | Linux allows a slightly wider set of valid characters in filenames. Windows | 
|  | 244 | servers can remap such characters when an explicit mapping is specified in | 
|  | 245 | the Server's registry.  Samba starting with version 3.10 will allow such | 
|  | 246 | filenames (ie those which contain valid Linux characters, which normally | 
|  | 247 | would be forbidden for Windows/CIFS semantics) as long as the server is | 
|  | 248 | configured for Unix Extensions (and the client has not disabled | 
|  | 249 | /proc/fs/cifs/LinuxExtensionsEnabled). | 
|  | 250 |  | 
|  | 251 |  | 
|  | 252 | CIFS VFS Mount Options | 
|  | 253 | ====================== | 
|  | 254 | A partial list of the supported mount options follows: | 
|  | 255 | user		The user name to use when trying to establish | 
|  | 256 | the CIFS session. | 
|  | 257 | password	The user password.  If the mount helper is | 
|  | 258 | installed, the user will be prompted for password | 
| Steve French | f6d0998 | 2008-01-08 23:18:22 +0000 | [diff] [blame] | 259 | if not supplied. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 260 | ip		The ip address of the target server | 
|  | 261 | unc		The target server Universal Network Name (export) to | 
|  | 262 | mount. | 
|  | 263 | domain	Set the SMB/CIFS workgroup name prepended to the | 
|  | 264 | username during CIFS session establishment | 
| Steve French | d098564 | 2009-08-04 03:53:28 +0000 | [diff] [blame] | 265 | forceuid	Set the default uid for inodes to the uid | 
|  | 266 | passed in on mount. For mounts to servers | 
| Steve French | 4523cc3 | 2007-04-30 20:13:06 +0000 | [diff] [blame] | 267 | which do support the CIFS Unix extensions, such as a | 
|  | 268 | properly configured Samba server, the server provides | 
| Steve French | d098564 | 2009-08-04 03:53:28 +0000 | [diff] [blame] | 269 | the uid, gid and mode so this parameter should not be | 
| Steve French | 4523cc3 | 2007-04-30 20:13:06 +0000 | [diff] [blame] | 270 | specified unless the server and clients uid and gid | 
|  | 271 | numbering differ.  If the server and client are in the | 
|  | 272 | same domain (e.g. running winbind or nss_ldap) and | 
|  | 273 | the server supports the Unix Extensions then the uid | 
|  | 274 | and gid can be retrieved from the server (and uid | 
|  | 275 | and gid would not have to be specifed on the mount. | 
|  | 276 | For servers which do not support the CIFS Unix | 
|  | 277 | extensions, the default uid (and gid) returned on lookup | 
|  | 278 | of existing files will be the uid (gid) of the person | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 279 | who executed the mount (root, except when mount.cifs | 
|  | 280 | is configured setuid for user mounts) unless the "uid=" | 
| Steve French | d098564 | 2009-08-04 03:53:28 +0000 | [diff] [blame] | 281 | (gid) mount option is specified. Also note that permission | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 282 | checks (authorization checks) on accesses to a file occur | 
|  | 283 | at the server, but there are cases in which an administrator | 
|  | 284 | may want to restrict at the client as well.  For those | 
|  | 285 | servers which do not report a uid/gid owner | 
|  | 286 | (such as Windows), permissions can also be checked at the | 
|  | 287 | client, and a crude form of client side permission checking | 
|  | 288 | can be enabled by specifying file_mode and dir_mode on | 
| Steve French | d098564 | 2009-08-04 03:53:28 +0000 | [diff] [blame] | 289 | the client.  (default) | 
|  | 290 | forcegid	(similar to above but for the groupid instead of uid) (default) | 
|  | 291 | noforceuid	Fill in file owner information (uid) by requesting it from | 
|  | 292 | the server if possible. With this option, the value given in | 
|  | 293 | the uid= option (on mount) will only be used if the server | 
|  | 294 | can not support returning uids on inodes. | 
|  | 295 | noforcegid	(similar to above but for the group owner, gid, instead of uid) | 
| Steve French | f0472d0 | 2009-06-06 21:09:39 +0000 | [diff] [blame] | 296 | uid		Set the default uid for inodes, and indicate to the | 
| Steve French | d098564 | 2009-08-04 03:53:28 +0000 | [diff] [blame] | 297 | cifs kernel driver which local user mounted. If the server | 
| Steve French | f0472d0 | 2009-06-06 21:09:39 +0000 | [diff] [blame] | 298 | supports the unix extensions the default uid is | 
|  | 299 | not used to fill in the owner fields of inodes (files) | 
|  | 300 | unless the "forceuid" parameter is specified. | 
| Steve French | 4523cc3 | 2007-04-30 20:13:06 +0000 | [diff] [blame] | 301 | gid		Set the default gid for inodes (similar to above). | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 302 | file_mode     If CIFS Unix extensions are not supported by the server | 
|  | 303 | this overrides the default mode for file inodes. | 
| Suresh Jayaraman | 3694b91 | 2010-08-05 18:52:21 +0530 | [diff] [blame] | 304 | fsc		Enable local disk caching using FS-Cache (off by default). This | 
|  | 305 | option could be useful to improve performance on a slow link, | 
|  | 306 | heavily loaded server and/or network where reading from the | 
|  | 307 | disk is faster than reading from the server (over the network). | 
|  | 308 | This could also impact scalability positively as the | 
|  | 309 | number of calls to the server are reduced. However, local | 
|  | 310 | caching is not suitable for all workloads for e.g. read-once | 
|  | 311 | type workloads. So, you need to consider carefully your | 
|  | 312 | workload/scenario before using this option. Currently, local | 
|  | 313 | disk caching is functional for CIFS files opened as read-only. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 314 | dir_mode      If CIFS Unix extensions are not supported by the server | 
|  | 315 | this overrides the default mode for directory inodes. | 
|  | 316 | port		attempt to contact the server on this tcp port, before | 
|  | 317 | trying the usual ports (port 445, then 139). | 
|  | 318 | iocharset     Codepage used to convert local path names to and from | 
|  | 319 | Unicode. Unicode is used by default for network path | 
|  | 320 | names if the server supports it.  If iocharset is | 
|  | 321 | not specified then the nls_default specified | 
|  | 322 | during the local client kernel build will be used. | 
|  | 323 | If server does not support Unicode, this parameter is | 
|  | 324 | unused. | 
| Steve French | 75865f8 | 2007-06-24 18:30:48 +0000 | [diff] [blame] | 325 | rsize		default read size (usually 16K). The client currently | 
|  | 326 | can not use rsize larger than CIFSMaxBufSize. CIFSMaxBufSize | 
|  | 327 | defaults to 16K and may be changed (from 8K to the maximum | 
|  | 328 | kmalloc size allowed by your kernel) at module install time | 
|  | 329 | for cifs.ko. Setting CIFSMaxBufSize to a very large value | 
|  | 330 | will cause cifs to use more memory and may reduce performance | 
|  | 331 | in some cases.  To use rsize greater than 127K (the original | 
|  | 332 | cifs protocol maximum) also requires that the server support | 
|  | 333 | a new Unix Capability flag (for very large read) which some | 
|  | 334 | newer servers (e.g. Samba 3.0.26 or later) do. rsize can be | 
|  | 335 | set from a minimum of 2048 to a maximum of 130048 (127K or | 
|  | 336 | CIFSMaxBufSize, whichever is smaller) | 
|  | 337 | wsize		default write size (default 57344) | 
|  | 338 | maximum wsize currently allowed by CIFS is 57344 (fourteen | 
|  | 339 | 4096 byte pages) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 340 | rw		mount the network share read-write (note that the | 
|  | 341 | server may still consider the share read-only) | 
|  | 342 | ro		mount network share read-only | 
|  | 343 | version	used to distinguish different versions of the | 
|  | 344 | mount helper utility (not typically needed) | 
|  | 345 | sep		if first mount option (after the -o), overrides | 
|  | 346 | the comma as the separator between the mount | 
|  | 347 | parms. e.g. | 
|  | 348 | -o user=myname,password=mypassword,domain=mydom | 
|  | 349 | could be passed instead with period as the separator by | 
|  | 350 | -o sep=.user=myname.password=mypassword.domain=mydom | 
|  | 351 | this might be useful when comma is contained within username | 
|  | 352 | or password or domain. This option is less important | 
|  | 353 | when the cifs mount helper cifs.mount (version 1.1 or later) | 
|  | 354 | is used. | 
|  | 355 | nosuid        Do not allow remote executables with the suid bit | 
|  | 356 | program to be executed.  This is only meaningful for mounts | 
|  | 357 | to servers such as Samba which support the CIFS Unix Extensions. | 
|  | 358 | If you do not trust the servers in your network (your mount | 
|  | 359 | targets) it is recommended that you specify this option for | 
|  | 360 | greater security. | 
|  | 361 | exec		Permit execution of binaries on the mount. | 
|  | 362 | noexec	Do not permit execution of binaries on the mount. | 
|  | 363 | dev		Recognize block devices on the remote mount. | 
|  | 364 | nodev		Do not recognize devices on the remote mount. | 
|  | 365 | suid          Allow remote files on this mountpoint with suid enabled to | 
|  | 366 | be executed (default for mounts when executed as root, | 
|  | 367 | nosuid is default for user mounts). | 
|  | 368 | credentials   Although ignored by the cifs kernel component, it is used by | 
|  | 369 | the mount helper, mount.cifs. When mount.cifs is installed it | 
|  | 370 | opens and reads the credential file specified in order | 
|  | 371 | to obtain the userid and password arguments which are passed to | 
|  | 372 | the cifs vfs. | 
|  | 373 | guest         Although ignored by the kernel component, the mount.cifs | 
|  | 374 | mount helper will not prompt the user for a password | 
|  | 375 | if guest is specified on the mount options.  If no | 
|  | 376 | password is specified a null password will be used. | 
|  | 377 | perm          Client does permission checks (vfs_permission check of uid | 
|  | 378 | and gid of the file against the mode and desired operation), | 
|  | 379 | Note that this is in addition to the normal ACL check on the | 
|  | 380 | target machine done by the server software. | 
|  | 381 | Client permission checking is enabled by default. | 
|  | 382 | noperm        Client does not do permission checks.  This can expose | 
|  | 383 | files on this mount to access by other users on the local | 
|  | 384 | client system. It is typically only needed when the server | 
|  | 385 | supports the CIFS Unix Extensions but the UIDs/GIDs on the | 
|  | 386 | client and server system do not match closely enough to allow | 
| Steve French | 6473a55 | 2005-11-29 20:20:10 -0800 | [diff] [blame] | 387 | access by the user doing the mount, but it may be useful with | 
|  | 388 | non CIFS Unix Extension mounts for cases in which the default | 
|  | 389 | mode is specified on the mount but is not to be enforced on the | 
|  | 390 | client (e.g. perhaps when MultiUserMount is enabled) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 391 | Note that this does not affect the normal ACL check on the | 
|  | 392 | target machine done by the server software (of the server | 
|  | 393 | ACL against the user name provided at mount time). | 
| Steve French | 7521a3c | 2007-07-11 18:30:34 +0000 | [diff] [blame] | 394 | serverino	Use server's inode numbers instead of generating automatically | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 395 | incrementing inode numbers on the client.  Although this will | 
|  | 396 | make it easier to spot hardlinked files (as they will have | 
|  | 397 | the same inode numbers) and inode numbers may be persistent, | 
|  | 398 | note that the server does not guarantee that the inode numbers | 
|  | 399 | are unique if multiple server side mounts are exported under a | 
|  | 400 | single share (since inode numbers on the servers might not | 
|  | 401 | be unique if multiple filesystems are mounted under the same | 
| Steve French | 7521a3c | 2007-07-11 18:30:34 +0000 | [diff] [blame] | 402 | shared higher level directory).  Note that some older | 
|  | 403 | (e.g. pre-Windows 2000) do not support returning UniqueIDs | 
|  | 404 | or the CIFS Unix Extensions equivalent and for those | 
|  | 405 | this mount option will have no effect.  Exporting cifs mounts | 
|  | 406 | under nfsd requires this mount option on the cifs mount. | 
| Steve French | c5077ec | 2009-05-28 15:09:04 +0000 | [diff] [blame] | 407 | This is now the default if server supports the | 
|  | 408 | required network operation. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 409 | noserverino   Client generates inode numbers (rather than using the actual one | 
| Steve French | c5077ec | 2009-05-28 15:09:04 +0000 | [diff] [blame] | 410 | from the server). These inode numbers will vary after | 
|  | 411 | unmount or reboot which can confuse some applications, | 
|  | 412 | but not all server filesystems support unique inode | 
|  | 413 | numbers. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 414 | setuids       If the CIFS Unix extensions are negotiated with the server | 
|  | 415 | the client will attempt to set the effective uid and gid of | 
|  | 416 | the local process on newly created files, directories, and | 
| Steve French | 6473a55 | 2005-11-29 20:20:10 -0800 | [diff] [blame] | 417 | devices (create, mkdir, mknod).  If the CIFS Unix Extensions | 
|  | 418 | are not negotiated, for newly created files and directories | 
| Matt LaPlante | cab0089 | 2006-10-03 22:36:44 +0200 | [diff] [blame] | 419 | instead of using the default uid and gid specified on | 
| Steve French | 6473a55 | 2005-11-29 20:20:10 -0800 | [diff] [blame] | 420 | the mount, cache the new file's uid and gid locally which means | 
|  | 421 | that the uid for the file can change when the inode is | 
|  | 422 | reloaded (or the user remounts the share). | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 423 | nosetuids     The client will not attempt to set the uid and gid on | 
|  | 424 | on newly created files, directories, and devices (create, | 
|  | 425 | mkdir, mknod) which will result in the server setting the | 
|  | 426 | uid and gid to the default (usually the server uid of the | 
| Steve French | 67594fe | 2005-05-17 13:04:49 -0500 | [diff] [blame] | 427 | user who mounted the share).  Letting the server (rather than | 
| Steve French | 6473a55 | 2005-11-29 20:20:10 -0800 | [diff] [blame] | 428 | the client) set the uid and gid is the default. If the CIFS | 
|  | 429 | Unix Extensions are not negotiated then the uid and gid for | 
|  | 430 | new files will appear to be the uid (gid) of the mounter or the | 
|  | 431 | uid (gid) parameter specified on the mount. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 432 | netbiosname   When mounting to servers via port 139, specifies the RFC1001 | 
|  | 433 | source name to use to represent the client netbios machine | 
|  | 434 | name when doing the RFC1001 netbios session initialize. | 
|  | 435 | direct        Do not do inode data caching on files opened on this mount. | 
| André Goddard Rosa | af901ca | 2009-11-14 13:09:05 -0200 | [diff] [blame] | 436 | This precludes mmapping files on this mount. In some cases | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 437 | with fast networks and little or no caching benefits on the | 
|  | 438 | client (e.g. when the application is doing large sequential | 
|  | 439 | reads bigger than page size without rereading the same data) | 
|  | 440 | this can provide better performance than the default | 
| Steve French | 67594fe | 2005-05-17 13:04:49 -0500 | [diff] [blame] | 441 | behavior which caches reads (readahead) and writes | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 442 | (writebehind) through the local Linux client pagecache | 
|  | 443 | if oplock (caching token) is granted and held. Note that | 
|  | 444 | direct allows write operations larger than page size | 
|  | 445 | to be sent to the server. | 
|  | 446 | acl   	Allow setfacl and getfacl to manage posix ACLs if server | 
|  | 447 | supports them.  (default) | 
|  | 448 | noacl 	Do not allow setfacl and getfacl calls on this mount | 
| Steve French | f6d0998 | 2008-01-08 23:18:22 +0000 | [diff] [blame] | 449 | user_xattr    Allow getting and setting user xattrs (those attributes whose | 
|  | 450 | name begins with "user." or "os2.") as OS/2 EAs (extended | 
|  | 451 | attributes) to the server.  This allows support of the | 
|  | 452 | setfattr and getfattr utilities. (default) | 
| Steve French | ea4c07d | 2006-08-16 19:44:25 +0000 | [diff] [blame] | 453 | nouser_xattr  Do not allow getfattr/setfattr to get/set/list xattrs | 
| Steve French | 737b758 | 2005-04-28 22:41:06 -0700 | [diff] [blame] | 454 | mapchars      Translate six of the seven reserved characters (not backslash) | 
|  | 455 | *?<>|: | 
| Steve French | 6a0b482 | 2005-04-28 22:41:05 -0700 | [diff] [blame] | 456 | to the remap range (above 0xF000), which also | 
|  | 457 | allows the CIFS client to recognize files created with | 
|  | 458 | such characters by Windows's POSIX emulation. This can | 
|  | 459 | also be useful when mounting to most versions of Samba | 
|  | 460 | (which also forbids creating and opening files | 
|  | 461 | whose names contain any of these seven characters). | 
|  | 462 | This has no effect if the server does not support | 
|  | 463 | Unicode on the wire. | 
|  | 464 | nomapchars     Do not translate any of these seven characters (default). | 
| Steve French | c46fa8a | 2005-08-18 20:49:57 -0700 | [diff] [blame] | 465 | nocase         Request case insensitive path name matching (case | 
|  | 466 | sensitive is the default if the server suports it). | 
| Steve French | f6d0998 | 2008-01-08 23:18:22 +0000 | [diff] [blame] | 467 | (mount option "ignorecase" is identical to "nocase") | 
| Steve French | 82940a4 | 2006-03-02 03:24:57 +0000 | [diff] [blame] | 468 | posixpaths     If CIFS Unix extensions are supported, attempt to | 
|  | 469 | negotiate posix path name support which allows certain | 
|  | 470 | characters forbidden in typical CIFS filenames, without | 
|  | 471 | requiring remapping. (default) | 
|  | 472 | noposixpaths   If CIFS Unix extensions are supported, do not request | 
|  | 473 | posix path name support (this may cause servers to | 
|  | 474 | reject creatingfile with certain reserved characters). | 
| Steve French | a403a0a | 2007-07-26 15:54:16 +0000 | [diff] [blame] | 475 | nounix         Disable the CIFS Unix Extensions for this mount (tree | 
|  | 476 | connection). This is rarely needed, but it may be useful | 
|  | 477 | in order to turn off multiple settings all at once (ie | 
|  | 478 | posix acls, posix locks, posix paths, symlink support | 
|  | 479 | and retrieving uids/gids/mode from the server) or to | 
|  | 480 | work around a bug in server which implement the Unix | 
|  | 481 | Extensions. | 
| Steve French | c46fa8a | 2005-08-18 20:49:57 -0700 | [diff] [blame] | 482 | nobrl          Do not send byte range lock requests to the server. | 
|  | 483 | This is necessary for certain applications that break | 
|  | 484 | with cifs style mandatory byte range locks (and most | 
|  | 485 | cifs servers do not yet support requesting advisory | 
|  | 486 | byte range locks). | 
| Steve French | 13a6e42 | 2008-12-02 17:24:33 +0000 | [diff] [blame] | 487 | forcemandatorylock Even if the server supports posix (advisory) byte range | 
|  | 488 | locking, send only mandatory lock requests.  For some | 
|  | 489 | (presumably rare) applications, originally coded for | 
|  | 490 | DOS/Windows, which require Windows style mandatory byte range | 
|  | 491 | locking, they may be able to take advantage of this option, | 
|  | 492 | forcing the cifs client to only send mandatory locks | 
|  | 493 | even if the cifs server would support posix advisory locks. | 
|  | 494 | "forcemand" is accepted as a shorter form of this mount | 
|  | 495 | option. | 
| Steve French | be65244 | 2009-02-23 15:21:59 +0000 | [diff] [blame] | 496 | nostrictsync   If this mount option is set, when an application does an | 
|  | 497 | fsync call then the cifs client does not send an SMB Flush | 
|  | 498 | to the server (to force the server to write all dirty data | 
|  | 499 | for this file immediately to disk), although cifs still sends | 
|  | 500 | all dirty (cached) file data to the server and waits for the | 
|  | 501 | server to respond to the write.  Since SMB Flush can be | 
|  | 502 | very slow, and some servers may be reliable enough (to risk | 
|  | 503 | delaying slightly flushing the data to disk on the server), | 
|  | 504 | turning on this option may be useful to improve performance for | 
|  | 505 | applications that fsync too much, at a small risk of server | 
|  | 506 | crash.  If this mount option is not set, by default cifs will | 
|  | 507 | send an SMB flush request (and wait for a response) on every | 
|  | 508 | fsync call. | 
| Steve French | 2c1b861 | 2008-10-16 18:35:21 +0000 | [diff] [blame] | 509 | nodfs          Disable DFS (global name space support) even if the | 
|  | 510 | server claims to support it.  This can help work around | 
| Steve French | 13a6e42 | 2008-12-02 17:24:33 +0000 | [diff] [blame] | 511 | a problem with parsing of DFS paths with Samba server | 
|  | 512 | versions 3.0.24 and 3.0.25. | 
| Steve French | 0cb766a | 2005-04-28 22:41:11 -0700 | [diff] [blame] | 513 | remount        remount the share (often used to change from ro to rw mounts | 
|  | 514 | or vice versa) | 
| Jeff Layton | cea2180 | 2007-11-20 23:19:03 +0000 | [diff] [blame] | 515 | cifsacl        Report mode bits (e.g. on stat) based on the Windows ACL for | 
|  | 516 | the file. (EXPERIMENTAL) | 
| Cyrill Gorcunov | 5e6e623 | 2007-08-18 00:15:20 +0000 | [diff] [blame] | 517 | servern        Specify the server 's netbios name (RFC1001 name) to use | 
| Steve French | ad7a292 | 2008-02-07 23:25:02 +0000 | [diff] [blame] | 518 | when attempting to setup a session to the server. | 
| Cyrill Gorcunov | 5e6e623 | 2007-08-18 00:15:20 +0000 | [diff] [blame] | 519 | This is needed for mounting to some older servers (such | 
|  | 520 | as OS/2 or Windows 98 and Windows ME) since they do not | 
|  | 521 | support a default server name.  A server name can be up | 
|  | 522 | to 15 characters long and is usually uppercased. | 
| Steve French | 6473a55 | 2005-11-29 20:20:10 -0800 | [diff] [blame] | 523 | sfu            When the CIFS Unix Extensions are not negotiated, attempt to | 
|  | 524 | create device files and fifos in a format compatible with | 
|  | 525 | Services for Unix (SFU).  In addition retrieve bits 10-12 | 
|  | 526 | of the mode via the SETFILEBITS extended attribute (as | 
| Matt LaPlante | cab0089 | 2006-10-03 22:36:44 +0200 | [diff] [blame] | 527 | SFU does).  In the future the bottom 9 bits of the | 
| Steve French | 6473a55 | 2005-11-29 20:20:10 -0800 | [diff] [blame] | 528 | mode also will be emulated using queries of the security | 
|  | 529 | descriptor (ACL). | 
| Stefan Metzmacher | 736a332 | 2010-07-30 14:56:00 +0200 | [diff] [blame^] | 530 | mfsymlinks     Enable support for Minshall+French symlinks | 
|  | 531 | (see http://wiki.samba.org/index.php/UNIX_Extensions#Minshall.2BFrench_symlinks) | 
|  | 532 | This option is ignored when specified together with the | 
|  | 533 | 'sfu' option. Minshall+French symlinks are used even if | 
|  | 534 | the server supports the CIFS Unix Extensions. | 
| Steve French | 750d115 | 2006-06-27 06:28:30 +0000 | [diff] [blame] | 535 | sign           Must use packet signing (helps avoid unwanted data modification | 
|  | 536 | by intermediate systems in the route).  Note that signing | 
|  | 537 | does not work with lanman or plaintext authentication. | 
| Steve French | 95b1cb9 | 2008-05-15 16:44:38 +0000 | [diff] [blame] | 538 | seal           Must seal (encrypt) all data on this mounted share before | 
|  | 539 | sending on the network.  Requires support for Unix Extensions. | 
|  | 540 | Note that this differs from the sign mount option in that it | 
|  | 541 | causes encryption of data sent over this mounted share but other | 
|  | 542 | shares mounted to the same server are unaffected. | 
| Steve French | 84210e9 | 2008-10-23 04:42:37 +0000 | [diff] [blame] | 543 | locallease     This option is rarely needed. Fcntl F_SETLEASE is | 
|  | 544 | used by some applications such as Samba and NFSv4 server to | 
|  | 545 | check to see whether a file is cacheable.  CIFS has no way | 
|  | 546 | to explicitly request a lease, but can check whether a file | 
|  | 547 | is cacheable (oplocked).  Unfortunately, even if a file | 
|  | 548 | is not oplocked, it could still be cacheable (ie cifs client | 
|  | 549 | could grant fcntl leases if no other local processes are using | 
|  | 550 | the file) for cases for example such as when the server does not | 
|  | 551 | support oplocks and the user is sure that the only updates to | 
|  | 552 | the file will be from this client. Specifying this mount option | 
|  | 553 | will allow the cifs client to check for leases (only) locally | 
|  | 554 | for files which are not oplocked instead of denying leases | 
|  | 555 | in that case. (EXPERIMENTAL) | 
| Steve French | 750d115 | 2006-06-27 06:28:30 +0000 | [diff] [blame] | 556 | sec            Security mode.  Allowed values are: | 
| Steve French | bf82067 | 2005-12-01 22:32:42 -0800 | [diff] [blame] | 557 | none	attempt to connection as a null user (no name) | 
|  | 558 | krb5    Use Kerberos version 5 authentication | 
|  | 559 | krb5i   Use Kerberos authentication and packet signing | 
|  | 560 | ntlm    Use NTLM password hashing (default) | 
|  | 561 | ntlmi   Use NTLM password hashing with signing (if | 
|  | 562 | /proc/fs/cifs/PacketSigningEnabled on or if | 
|  | 563 | server requires signing also can be the default) | 
|  | 564 | ntlmv2  Use NTLMv2 password hashing | 
|  | 565 | ntlmv2i Use NTLMv2 password hashing with packet signing | 
| Steve French | 189acaa | 2006-06-23 02:33:48 +0000 | [diff] [blame] | 566 | lanman  (if configured in kernel config) use older | 
|  | 567 | lanman hash | 
| Steve French | f6d0998 | 2008-01-08 23:18:22 +0000 | [diff] [blame] | 568 | hard		Retry file operations if server is not responding | 
|  | 569 | soft		Limit retries to unresponsive servers (usually only | 
|  | 570 | one retry) before returning an error.  (default) | 
| Steve French | bf82067 | 2005-12-01 22:32:42 -0800 | [diff] [blame] | 571 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 572 | The mount.cifs mount helper also accepts a few mount options before -o | 
|  | 573 | including: | 
|  | 574 |  | 
|  | 575 | -S      take password from stdin (equivalent to setting the environment | 
|  | 576 | variable "PASSWD_FD=0" | 
|  | 577 | -V      print mount.cifs version | 
|  | 578 | -?      display simple usage information | 
|  | 579 |  | 
| Jeff Layton | 8426c39 | 2007-05-05 03:27:49 +0000 | [diff] [blame] | 580 | With most 2.6 kernel versions of modutils, the version of the cifs kernel | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 581 | module can be displayed via modinfo. | 
|  | 582 |  | 
|  | 583 | Misc /proc/fs/cifs Flags and Debug Info | 
|  | 584 | ======================================= | 
|  | 585 | Informational pseudo-files: | 
| Suresh Jayaraman | 95c9990 | 2010-07-30 18:01:17 +0530 | [diff] [blame] | 586 | DebugData		Displays information about active CIFS sessions and | 
|  | 587 | shares, features enabled as well as the cifs.ko | 
|  | 588 | version. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 589 | Stats			Lists summary resource usage information as well as per | 
|  | 590 | share statistics, if CONFIG_CIFS_STATS in enabled | 
|  | 591 | in the kernel configuration. | 
|  | 592 |  | 
|  | 593 | Configuration pseudo-files: | 
|  | 594 | MultiuserMount		If set to one, more than one CIFS session to | 
|  | 595 | the same server ip address can be established | 
|  | 596 | if more than one uid accesses the same mount | 
|  | 597 | point and if the uids user/password mapping | 
|  | 598 | information is available. (default is 0) | 
|  | 599 | PacketSigningEnabled	If set to one, cifs packet signing is enabled | 
|  | 600 | and will be used if the server requires | 
|  | 601 | it.  If set to two, cifs packet signing is | 
|  | 602 | required even if the server considers packet | 
|  | 603 | signing optional. (default 1) | 
| Steve French | 254e55e | 2006-06-04 05:53:15 +0000 | [diff] [blame] | 604 | SecurityFlags		Flags which control security negotiation and | 
|  | 605 | also packet signing. Authentication (may/must) | 
|  | 606 | flags (e.g. for NTLM and/or NTLMv2) may be combined with | 
|  | 607 | the signing flags.  Specifying two different password | 
|  | 608 | hashing mechanisms (as "must use") on the other hand | 
|  | 609 | does not make much sense. Default flags are | 
|  | 610 | 0x07007 | 
| Steve French | 2e65502 | 2008-08-28 15:30:06 +0000 | [diff] [blame] | 611 | (NTLM, NTLMv2 and packet signing allowed).  The maximum | 
| Steve French | 254e55e | 2006-06-04 05:53:15 +0000 | [diff] [blame] | 612 | allowable flags if you want to allow mounts to servers | 
|  | 613 | using weaker password hashes is 0x37037 (lanman, | 
| Steve French | 2e65502 | 2008-08-28 15:30:06 +0000 | [diff] [blame] | 614 | plaintext, ntlm, ntlmv2, signing allowed).  Some | 
|  | 615 | SecurityFlags require the corresponding menuconfig | 
|  | 616 | options to be enabled (lanman and plaintext require | 
|  | 617 | CONFIG_CIFS_WEAK_PW_HASH for example).  Enabling | 
|  | 618 | plaintext authentication currently requires also | 
|  | 619 | enabling lanman authentication in the security flags | 
|  | 620 | because the cifs module only supports sending | 
|  | 621 | laintext passwords using the older lanman dialect | 
|  | 622 | form of the session setup SMB.  (e.g. for authentication | 
|  | 623 | using plain text passwords, set the SecurityFlags | 
|  | 624 | to 0x30030): | 
| Steve French | 254e55e | 2006-06-04 05:53:15 +0000 | [diff] [blame] | 625 |  | 
|  | 626 | may use packet signing 				0x00001 | 
|  | 627 | must use packet signing				0x01001 | 
|  | 628 | may use NTLM (most common password hash)	0x00002 | 
|  | 629 | must use NTLM					0x02002 | 
|  | 630 | may use NTLMv2					0x00004 | 
|  | 631 | must use NTLMv2					0x04004 | 
| Steve French | f6d0998 | 2008-01-08 23:18:22 +0000 | [diff] [blame] | 632 | may use Kerberos security			0x00008 | 
|  | 633 | must use Kerberos				0x08008 | 
| Steve French | 254e55e | 2006-06-04 05:53:15 +0000 | [diff] [blame] | 634 | may use lanman (weak) password hash  		0x00010 | 
|  | 635 | must use lanman password hash			0x10010 | 
|  | 636 | may use plaintext passwords    			0x00020 | 
|  | 637 | must use plaintext passwords			0x20020 | 
|  | 638 | (reserved for future packet encryption)		0x00040 | 
|  | 639 |  | 
| Jeff Layton | 8426c39 | 2007-05-05 03:27:49 +0000 | [diff] [blame] | 640 | cifsFYI			If set to non-zero value, additional debug information | 
|  | 641 | will be logged to the system error log.  This field | 
|  | 642 | contains three flags controlling different classes of | 
|  | 643 | debugging entries.  The maximum value it can be set | 
|  | 644 | to is 7 which enables all debugging points (default 0). | 
|  | 645 | Some debugging statements are not compiled into the | 
|  | 646 | cifs kernel unless CONFIG_CIFS_DEBUG2 is enabled in the | 
|  | 647 | kernel configuration. cifsFYI may be set to one or | 
|  | 648 | nore of the following flags (7 sets them all): | 
|  | 649 |  | 
|  | 650 | log cifs informational messages			0x01 | 
|  | 651 | log return codes from cifs entry points		0x02 | 
| Steve French | 0ec54aa | 2007-05-05 22:08:06 +0000 | [diff] [blame] | 652 | log slow responses (ie which take longer than 1 second) | 
|  | 653 | CONFIG_CIFS_STATS2 must be enabled in .config	0x04 | 
| Jeff Layton | 8426c39 | 2007-05-05 03:27:49 +0000 | [diff] [blame] | 654 |  | 
|  | 655 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 656 | traceSMB		If set to one, debug information is logged to the | 
|  | 657 | system error log with the start of smb requests | 
|  | 658 | and responses (default 0) | 
|  | 659 | LookupCacheEnable	If set to one, inode information is kept cached | 
|  | 660 | for one second improving performance of lookups | 
|  | 661 | (default 1) | 
|  | 662 | OplockEnabled		If set to one, safe distributed caching enabled. | 
|  | 663 | (default 1) | 
|  | 664 | LinuxExtensionsEnabled	If set to one then the client will attempt to | 
|  | 665 | use the CIFS "UNIX" extensions which are optional | 
|  | 666 | protocol enhancements that allow CIFS servers | 
|  | 667 | to return accurate UID/GID information as well | 
|  | 668 | as support symbolic links. If you use servers | 
|  | 669 | such as Samba that support the CIFS Unix | 
|  | 670 | extensions but do not want to use symbolic link | 
|  | 671 | support and want to map the uid and gid fields | 
|  | 672 | to values supplied at mount (rather than the | 
|  | 673 | actual values, then set this to zero. (default 1) | 
| Steve French | 6080823 | 2006-04-22 15:53:05 +0000 | [diff] [blame] | 674 | Experimental            When set to 1 used to enable certain experimental | 
|  | 675 | features (currently enables multipage writes | 
|  | 676 | when signing is enabled, the multipage write | 
|  | 677 | performance enhancement was disabled when | 
|  | 678 | signing turned on in case buffer was modified | 
|  | 679 | just before it was sent, also this flag will | 
| Jeff Layton | cea2180 | 2007-11-20 23:19:03 +0000 | [diff] [blame] | 680 | be used to use the new experimental directory change | 
| Steve French | ac68392 | 2009-05-06 04:16:04 +0000 | [diff] [blame] | 681 | notification code).  When set to 2 enables | 
|  | 682 | an additional experimental feature, "raw ntlmssp" | 
|  | 683 | session establishment support (which allows | 
|  | 684 | specifying "sec=ntlmssp" on mount). The Linux cifs | 
|  | 685 | module will use ntlmv2 authentication encapsulated | 
|  | 686 | in "raw ntlmssp" (not using SPNEGO) when | 
|  | 687 | "sec=ntlmssp" is specified on mount. | 
|  | 688 | This support also requires building cifs with | 
|  | 689 | the CONFIG_CIFS_EXPERIMENTAL configuration flag. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 690 |  | 
|  | 691 | These experimental features and tracing can be enabled by changing flags in | 
|  | 692 | /proc/fs/cifs (after the cifs module has been installed or built into the | 
|  | 693 | kernel, e.g.  insmod cifs).  To enable a feature set it to 1 e.g.  to enable | 
|  | 694 | tracing to the kernel message log type: | 
|  | 695 |  | 
| Steve French | 1047abc | 2005-10-11 19:58:06 -0700 | [diff] [blame] | 696 | echo 7 > /proc/fs/cifs/cifsFYI | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 697 |  | 
| Steve French | 1047abc | 2005-10-11 19:58:06 -0700 | [diff] [blame] | 698 | cifsFYI functions as a bit mask. Setting it to 1 enables additional kernel | 
|  | 699 | logging of various informational messages.  2 enables logging of non-zero | 
|  | 700 | SMB return codes while 4 enables logging of requests that take longer | 
|  | 701 | than one second to complete (except for byte range lock requests). | 
|  | 702 | Setting it to 4 requires defining CONFIG_CIFS_STATS2 manually in the | 
|  | 703 | source code (typically by setting it in the beginning of cifsglob.h), | 
|  | 704 | and setting it to seven enables all three.  Finally, tracing | 
|  | 705 | the start of smb requests and responses can be enabled via: | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 706 |  | 
|  | 707 | echo 1 > /proc/fs/cifs/traceSMB | 
|  | 708 |  | 
| Steve French | 75865f8 | 2007-06-24 18:30:48 +0000 | [diff] [blame] | 709 | Two other experimental features are under development. To test these | 
|  | 710 | requires enabling CONFIG_CIFS_EXPERIMENTAL | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 711 |  | 
| Jeff Layton | cea2180 | 2007-11-20 23:19:03 +0000 | [diff] [blame] | 712 | cifsacl support needed to retrieve approximated mode bits based on | 
|  | 713 | the contents on the CIFS ACL. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 714 |  | 
| Steve French | 84210e9 | 2008-10-23 04:42:37 +0000 | [diff] [blame] | 715 | lease support: cifs will check the oplock state before calling into | 
|  | 716 | the vfs to see if we can grant a lease on a file. | 
|  | 717 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 718 | DNOTIFY fcntl: needed for support of directory change | 
|  | 719 | notification and perhaps later for file leases) | 
|  | 720 |  | 
|  | 721 | Per share (per client mount) statistics are available in /proc/fs/cifs/Stats | 
|  | 722 | if the kernel was configured with cifs statistics enabled.  The statistics | 
|  | 723 | represent the number of successful (ie non-zero return code from the server) | 
|  | 724 | SMB responses to some of the more common commands (open, delete, mkdir etc.). | 
|  | 725 | Also recorded is the total bytes read and bytes written to the server for | 
|  | 726 | that share.  Note that due to client caching effects this can be less than the | 
|  | 727 | number of bytes read and written by the application running on the client. | 
|  | 728 | The statistics for the number of total SMBs and oplock breaks are different in | 
|  | 729 | that they represent all for that share, not just those for which the server | 
|  | 730 | returned success. | 
|  | 731 |  | 
| Steve French | 3d2af34 | 2008-08-19 20:51:09 +0000 | [diff] [blame] | 732 | Also note that "cat /proc/fs/cifs/DebugData" will display information about | 
| Jeff Layton | cea2180 | 2007-11-20 23:19:03 +0000 | [diff] [blame] | 733 | the active sessions and the shares that are mounted. | 
| Steve French | 3d2af34 | 2008-08-19 20:51:09 +0000 | [diff] [blame] | 734 |  | 
|  | 735 | Enabling Kerberos (extended security) works but requires version 1.2 or later | 
|  | 736 | of the helper program cifs.upcall to be present and to be configured in the | 
|  | 737 | /etc/request-key.conf file.  The cifs.upcall helper program is from the Samba | 
|  | 738 | project(http://www.samba.org). NTLM and NTLMv2 and LANMAN support do not | 
|  | 739 | require this helper. Note that NTLMv2 security (which does not require the | 
|  | 740 | cifs.upcall helper program), instead of using Kerberos, is sufficient for | 
|  | 741 | some use cases. | 
|  | 742 |  | 
| Steve French | be65244 | 2009-02-23 15:21:59 +0000 | [diff] [blame] | 743 | DFS support allows transparent redirection to shares in an MS-DFS name space. | 
|  | 744 | In addition, DFS support for target shares which are specified as UNC | 
| Steve French | 3d2af34 | 2008-08-19 20:51:09 +0000 | [diff] [blame] | 745 | names which begin with host names (rather than IP addresses) requires | 
|  | 746 | a user space helper (such as cifs.upcall) to be present in order to | 
|  | 747 | translate host names to ip address, and the user space helper must also | 
| Steve French | be65244 | 2009-02-23 15:21:59 +0000 | [diff] [blame] | 748 | be configured in the file /etc/request-key.conf.  Samba, Windows servers and | 
|  | 749 | many NAS appliances support DFS as a way of constructing a global name | 
|  | 750 | space to ease network configuration and improve reliability. | 
| Steve French | 3d2af34 | 2008-08-19 20:51:09 +0000 | [diff] [blame] | 751 |  | 
|  | 752 | To use cifs Kerberos and DFS support, the Linux keyutils package should be | 
|  | 753 | installed and something like the following lines should be added to the | 
|  | 754 | /etc/request-key.conf file: | 
|  | 755 |  | 
|  | 756 | create cifs.spnego * * /usr/local/sbin/cifs.upcall %k | 
|  | 757 | create dns_resolver * * /usr/local/sbin/cifs.upcall %k | 
|  | 758 |  | 
|  | 759 |  |