Назад | Перейти на главную страницу

Файл учетных данных Mount CIFS имеет специальный символ

У меня проблемы с установкой общего ресурса на моем XenServer (5.6 FP1). Из командной строки пробую:

mount.cifs //server/share /mnt/share -o credentials=credfile

Содержимое credfile:

username=Administrator
password=What@zR\!p3s

Когда я запускаю указанную выше команду монтирования, я получаю «Доступ запрещен». Однако, если я запустил следующую команду, она сработает:

mount.cifs //server/share /mnt/share -o username=Administrator,password=What@zR\!p3s

Обратите внимание, что знак «\» предназначен для того, чтобы избежать взрыва, и я пробовал это с ним и без него в файле учетных данных. Какие-либо предложения?

У меня та же проблема, потому что мой пароль содержит символ запятой (например, "ПРОЙДИТЕ, СЛОВО"):

$ 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)

Сначала попробуйте включить подробный режим (опция --verbose):

$ 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=********

Здесь я вижу свою проблему. Запятая ломает все. Решение - использовать файл учетных данных. Что написано в man mount.cifs:

credentials = filename определяет файл, который содержит имя пользователя и / или пароль и, возможно, имя рабочей группы. Формат файла:

          username=value
          password=value
          domain=value

Это предпочтительнее иметь пароли в виде открытого текста в общем файле, таком как / etc / fstab. Обязательно защитите файл учетных данных должным образом.

Создайте этот файл как хотите:

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

и используйте (--verbose можно опустить)

$ 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=********

С паролем проблем нет.

Распространенной проблемой старых версий mount.cifs было то, что новая строка в конце файла сохранялась как часть пароля.

Таким образом, вам не нужно экранировать, и следует попытаться переписать этот файл без конечной новой строки.

Для этого в vim используйте :set noeol binary перед сохранением. Вы можете проверить, что нет конечной новой строки с помощью xxd credfile, и убедитесь, что он не заканчивается 0a.

Если это не сработает, мне придется проверить вашу точную кодовую базу. Какой пакет (дистрибутив, версия и выпуск) или источник (имя архива) вы используете для cifs-utils?

Еще можно попробовать ввести специальный символ дважды ... У меня был пароль с $ в нем, и мне пришлось заменить его на $$. Однако сейчас у меня проблемы с морковкой: '^'

Для mount.cifs версии 4.5 у меня работало следующее: учетные данные в порядке домена, имени пользователя, пароля, без новой строки после пароля, без экранирования специальных символов или кавычек.

Это было очень полезно! Моя проблема заключалась в том, что в файле "учетных данных" --verbose показал мне

mount.cifs kernel mount options: ip=10.77.180.65,unc=\\odxwtdsa.naoxy.com\TDS_BODS_Fileshare,user=srv-tdsadm,domain=NAOXY ,pass=********
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
[root@odylztxz drpadm]#

Сделал "vi" в файле учетных данных и :set list Видел лишний замыкающий бланк. Убрал это. Пробовал снова. Обратите внимание, что «пробел» теперь исчез.

[root@odylztxz ~]# mount.cifs  -o credentials=/etc/.credentials,uid=1002,gid=200,file_mode=0x777,noperm //odxwtdsa.naoxy.com/TDS_BODS_Fileshare /TDS_BODS_FS --verbose
domain=NAOXY

mount.cifs kernel mount options: ip=10.77.180.65,unc=\\odxwtdsa.naoxy.com\TDS_BODS_Fileshare,file_mode=0x777,noperm,uid=1002,gid=200,user=srv-tdsadm,domain=NAOXY,pass=********
[root@odylztxz ~]# df -h
Filesystem                               Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root                     50G  4.9G   45G  10% /
devtmpfs                                  16G     0   16G   0% /dev
tmpfs                                     16G     0   16G   0% /dev/shm
tmpfs                                     16G   76M   16G   1% /run
tmpfs                                     16G     0   16G   0% /sys/fs/cgroup
/dev/sdb1                                100G   11G   90G  11% /orasoft
/dev/sdc1                                100G   33G   68G  33% /oxyswap
/dev/sda2                                497M  214M  284M  43% /boot
/dev/mapper/rhel-var                     5.5G  1.2G  4.3G  22% /var
10.77.25.114:/GEN_BACKUP_DBS             5.8T  4.8T  945G  84% /backup
10.77.25.114:/GEN_MEDIA                  380G  319G   62G  84% /sap_media
10.77.25.114:/ORA_ZTX_SAPMNT              95G   12M   95G   1% /sapmnt
10.77.25.113:/ORA_ZTX_USR_SAP             95G   13M   95G   1% /usr/sap
10.77.25.113:/GEN_TRANS                  190G   26M  190G   1% /trans
tmpfs                                    3.2G   40K  3.2G   1% /run/user/4200
tmpfs                                    3.2G     0  3.2G   0% /run/user/3501
//odxwtdsa.naoxy.com/TDS_BODS_Fileshare  750G  578G  173G  78% /TDS_BODS_FS
[root@odylztxz ~]#

Попробуйте процитировать это.

Т.е.,

password="What@zR!p3s"

И я надеюсь, что это не так действительно ваш пароль. Если это так, теперь вам нужно его изменить.

Вы пробовали убрать косую черту? полностью? Я не верю, что нужно вообще экранировать файл учетных данных. Его нужно экранировать в оболочке, потому что оболочка интерпретирует символы, а не команду mount.cifs.