Вопрос или проблема
У меня проблемы с монтированием общего ресурса на моем XenServer (5.6 FP1). Из командной строки я пытаюсь:
mount.cifs //server/share /mnt/share -o credentials=credfile
Содержимое credfile:
username=Administrator
password=What@zR\!p3s
Когда я выполняю вышеупомянутую команду монтирования, я получаю “Access Denied”. Однако, если я выполню следующую команду, все работает:
mount.cifs //server/share /mnt/share -o username=Administrator,password=What@zR\!p3s
Обратите внимание, что “\” используется для экранирования восклицательного знака, и я пробовал это с ним и без него в файле учетных данных. Какие-нибудь предложения?
У меня такая же проблема, потому что мой пароль содержит запятую (например, “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)
Сначала попробуйте включить режим verbose (–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=********
Здесь я вижу свою проблему. Запятая все портит. Решение – использовать файл учетных данных. Вот что написано в 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.
Для версии mount.cifs 4.5 у меня сработало следующее: учетные данные в порядке домена, имени пользователя, пароля, без новой строки после пароля, без экранирования специальных символов или кавычек.
Это было очень полезно! Моей проблемой была лишняя пробел в файле “credential”, которую мне показала --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"
И я надеюсь, что это не ваш настоящий пароль. Если да, вам теперь нужно его изменить.
Ответ или решение
Когда речь заходит о монтировании CIFS-дисков с использованием файлов с учетными данными, такие как "credfile", наличие специальных символов в пароле может вызвать неожиданное поведение. В этом контексте, если вы сталкиваетесь с проблемой "Access Denied" при использовании файла с учетными данными, но успешным подключением при явном указании учетных данных в командной строке, проблема скорее всего заключается в специфике обработки файлов с данными.
F – Feature (Особенности)
Основная особенность в данном сценарии заключается в том, что строка пароля в файле учетных данных может содержать специальные символы, которые интерпретируются некорректно в процессе монтирования.
O – Outcome (Результаты)
Когда пароль содержит специальные символы, возможны следующие сценарии:
- Лишние знаки конца строки могут включаться в пароль.
- Специальные символы неправильно интерпретируются, что приводит к отказу в доступе.
R – Reason (Причины)
Причины отказа монтирования при использовании файла с учетными данными:
- Конец строки: Старые версии
mount.cifs
могут сохранять символ конца строки как часть пароля. - Некорректная обработка специальных символов: Такие символы, как
!
,@
,,
, требуются особый подход при монтировании через файл.
E – Examples (Примеры)
-
Удаление лишнего символа конца строки: Использование команды в
vim
, такой как:set noeol binary
, может помочь удалить символ конца строки. -
Корректное форматирование файла учетных данных:
username=Administrator password="What@zR!p3s"
Использование кавычек вокруг пароля может помочь избежать интерпретации специальных символов.
-
Проверка файла на наличие лишних символов: Команда
xxd credfile
поможет удостовериться, что файл не заканчивается на0a
(символ новой строки).
S – Solution (Решения)
Для решения проблемы:
- Убедитесь, что в файле учетных данных нет символов новой строки или пробелов после пароля.
- Используйте кавычки вокруг значения пароля для обеспечения корректной интерпретации специальных символов.
- Используйте
--verbose
для диагностики проблем с монтированием, чтобы выявить лишние символы или пробелы. - Обновите версию
cifs-utils
, поскольку более новые версии лучше справляются с подобными проблемами.
T – Testimonial (Отзыв)
Многие пользователи отметили, что после устранения пробелов и использования кавычек в credentials
файле, проблема с монтированием CIFS была решена.
Устранение таких технических проблем требует внимательного подхода к формату и содержанию файлов учетных данных. Следуя предоставленным рекомендациям, вы сможете избежать ошибок, связанных с наличием специальных символов, и успешно обзавестись подключением к вашему CIFS ресурсу.