====== How to mount Windows shares on a Linux box ====== === Introduction === This guide will show you how to setup a mount of a remote windows share, and have it always there when you startup. == Two methods, depending on share host == * cifs * smbfs smbfs is the "original" method. However, smbfs is not compatible with security signatures, which are enabled by default and not recommended to disable on Windows Server 2003 and later. If a share is served by Windows Server 2003 or later, you should use cifs. In the following, it is more convenient (even though not recommended) to log in as root. I do this using the following command: sudo bash The system will prompt you for the root password. Do not forget to log off when you are done. == Prerequisites == You must have a windows machine (or other machine running Samba) with an accessible share. The 'samba' package itself is not necessary if you only need a smb client. The "smbfs" package provides the tools needed to mount "smbfs" and "cifs" filesytems. You may have smbfs installed on your machine. If not, run apt-get install smbfs Update the unmount order to prevent CIFS from hanging during shutdown. update-rc.d -f umountnfs.sh remove update-rc.d umountnfs.sh stop 15 0 6 . === Setup === == Single User == Note the UID of the single user which is to have access to the share. For a user named $username, the following command outputs the UID grep $USERNAME /etc/passwd | cut -d: -f3 == Multiple Users == If multiple users are to have the same level of access to the share, then create a new user group, presumably named after the share. Navigate to "System" -> "Administration" -> "Users and Groups" -> "Manage Groups". -> "Add Group" and select a name, Group ID (GID), and group members. Note the GID -- you will need it later. == Credentials File == Warning- this method is not completely secure, any user with root access could see your password in plain text. Create a file called .smbcredentials in the /root directory. In this file put username an equals sign and the windows username (and domain if loging into a domain) on the first line, put password an equals sign and the password for that user account on the second line of the file. The file should look like: username=MyWindowsUserID password=MyWindowsPassword The username and password for the Linux box have been created by Greg in MIS. Check with him to get them. Then, go to the /root directory and change the permissions for .smbcredentials: chown root .smbcredentials chmod 600 .smbcredentials this will ensure that only root can access this file. == Editing fstab == Warning- editing the fstab file can be dangerous, please back it up before continuing. Note: if servername or sharename has a literal space (i.e. ' '), substitute \040 instead, so that 'server name' becomes 'server\040name' Add a line at the bottom of your /etc/fstab file that specifies: //$SERVER/$SHARE $MOUNTPOINT $FS_TYPE ip=$IP_ADDRESS,credentials=$SMB_CREDENTIALS,uid=$UID 0 0 SERVER=STCK5 SHARE=Public MOUNTPOINT=/mnt/t FS_TYPE=smbfs IP_ADDRESS=10.168.1.36 SMB_CREDENTIALS=/root/.smbcredentials UID=1000 //STCK5/Public /mnt/t smbfs ip=10.168.1.36,iocharset=utf8,credentials=/root/.smbcredentials,uid=1000 0 0 == Ensure == * The entire expression MUST all be on one line in your fstab file * use "//" and "/" instead of "\\" and "\" when specifying the share location * /path/to/mnt is a directory that exists (and is empty) == Completing Setup == Reload fstab: mount -a Make sure the shared drive has been mounted: df === Troubleshooting === == Server is down, filesystem is hung == If the client somehow loses contact with the Samba server, then the filesystem will probably get hung. Basically, it becomes a blackhole, eating things that try to read to/write from it (e.g. '' ls '') and refusing to go away (e.g., '' umount '' says that the "device is busy"). Sometimes, all you need to do is restart the Samba daemon on the server machine. /etc/init.d/samba restart If that doesn't work, or for some reason you can't do anything on the server side, then try umount -lf /mount/point The '' -f '' option forces (possibly unclean) unmounting, and the '' -l '' option is for "lazy unmounting", and seems to work around "device is busy" errors that occur with just '' -f ''. == System Hangs on Shutdown == Sometimes during shutdown, networking will be turned off before the network share is unmounted. This will cause the computer to display the below code for a few minuets before shutting down (the numbers seem to change after each boot). CIFS VFS: server not responding CIFS VFS: no response for cmd ## mid ### To fix this problem, and allow the computer to shut down smoothly, just change when the network share is unmounted by the file system. This can be done by running the following commands: update-rc.d -f umountnfs.sh remove update-rc.d umountnfs.sh stop 15 0 6 .