Mount CIFS Credentials File has Special Character

Solution 1:

I have the same problem because my password contain comma symbol (i.e. "PASS,WORD"):

$ sudo mount -t cifs -o domain=mydomain,username=myuser,password=PASS,WORD //server/share localfolder
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

At first, you should try enable verbose mode (--verbose option):

$ sudo mount -t cifs -o domain=mydomain,username=myuser,password=PASS,WORD //server/share localfolder --verbose
mount.cifs kernel mount options: ip=172.30.91.137,unc=\\server\share,WORD,user=myuser,,domain=mydomain,pass=********

Here I see my problem. Comma breaks all stuff. Solution is use credential file. What is written in man mount.cifs:

credentials=filename specifies a file that contains a username and/or password and optionally the name of the workgroup. The format of the file is:

          username=value
          password=value
          domain=value

This is preferred over having passwords in plaintext in a shared file, such as /etc/fstab. Be sure to protect any credentials file properly.

Create this file any way you like:

$ cat > cifs.credo
username=myuser
password=PASS,WORD
domain=mydomain

and use (--verbose can be omitted)

$ sudo mount -t cifs -o credentials=path/to/cifs.credo //server/share localfolder --verbose
mount.cifs kernel mount options: ip=172.30.91.137,unc=\\server\share,user=myuser,,domain=mydomain,pass=********

No problem with password.

Solution 2:

A common issue with old versions of mount.cifs was that the newline at the end of the file was kept as part of the password.

So you shouldn't need to escape, and should try to rewrite this file without a trailing newline.

To do so in vim, use :set noeol binary before saving. You can check that there is no trailing newline with xxd credfile, and confirm that it does not finish with 0a.

If this doesn't work, I'll have to check your exact codebase. Which package (distribution, version and release) or source (archive name) are you using for cifs-utils?