Вопрос или проблема
Мне не удалось подключить сетевой диск, и я получил mount.cifs permission denied
$ nano ~/.smbcredentials
username=xxx
password=CwF
$ sudo nano /etc/fstab
//192.168.1.4/xxx /home/pi/mycloud cifs credentials=/home/pi/.smbcredentials,uid=pi,gid=pi 0 0
Тем не менее, это работает после того, как я сделал:
$ sudo mount -a
$ ls -ld mycloud
drwxr-xr-x 2 pi pi 0 Feb 13 23:51 mycloud
Пожалуйста, найдите ниже мой smb.conf
$ cat /etc/samba/smb.conf
#
# Пример конфигурационного файла для набора Samba для Debian GNU/Linux.
#
#
# Это основной конфигурационный файл Samba. Вы должны прочитать
# мануал smb.conf(5), чтобы понять перечисленные здесь опции.
# У Samba огромное количество настраиваемых опций, большая часть из которых
# не показана в этом примере.
#
# Некоторые параметры, которые часто стоит настроить, были включены как
# закомментированные примеры в этот файл.
# - Когда такие параметры закомментированы с ";", предложенная настройка
# отличается от поведения по умолчанию Samba.
# - Когда закомментированы с "#", предложенная настройка является
# поведением по умолчанию Samba, но опция считается достаточно важной,
# чтобы быть упомянутой здесь.
#
# ПРИМЕЧАНИЕ: Всякий раз, когда вы изменяете этот файл, вы должны выполнить
# команду "testparm", чтобы убедиться, что вы не сделали никаких основных
# синтаксических ошибок.
#======================= Глобальные настройки =======================
[global]
## Обзор/Идентификация ###
# Измените это на имя рабочей группы/NT-домена, частью которого будет ваш
# Samba сервер.
workgroup = WORKGROUP
#### Сеть ####
# Конкретный набор интерфейсов/сетей для привязки
# Это может быть либо имя интерфейса, либо IP-адрес/маска;
# обычно предпочтительнее использовать имена интерфейсов.
; interfaces = 127.0.0.0/8 eth0
# Привязывайтесь только к указанным интерфейсам и/или сетям; вы должны использовать
# опцию 'interfaces' выше, чтобы использовать это.
# Рекомендуется включить эту функцию, если ваша машина Samba
# не защищена брандмауэром или является брандмауэром сама по себе. Тем не менее, это
# опция не может корректно обрабатывать динамические или неброадкастные интерфейсы.
; bind interfaces only = yes
#### Отладка/Учет ####
# Это указывает Samba использовать отдельный лог-файл для каждой машины,
# которая подключается.
log file = /var/log/samba/log.%m
# Ограничьте размер отдельных лог-файлов (в KiB).
max log size = 1000
# Мы хотим, чтобы Samba логировала только в /var/log/samba/log.{smbd,nmbd}.
# Добавьте syslog@1, если вы хотите, чтобы важные сообщения также отправлялись в syslog.
logging = file
# Сделайте что-то разумное, когда Samba зависает: отправьте администратору обратный вызов.
panic action = /usr/share/samba/panic-action %d
####### Аутентификация #######
# Роль сервера. Определяет в каком режиме будет работать Samba. Возможные
# значения: "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller".
#
# Большинство людей захотят использовать "standalone server" или "member server".
# Запуск в качестве "active directory domain controller" потребует сначала
# выполнить "samba-tool domain provision", чтобы стереть базы данных и создать новый
# домен.
server role = standalone server
obey pam restrictions = yes
# Этот булев параметр управляет тем, пытается ли Samba синхронизировать Unix
# пароль с SMB паролем, когда зашифрованный SMB пароль в
# passdb изменяется.
unix password sync = yes
# Для работы синхронизации Unix пароля на системе Debian GNU/Linux должны быть установлены следующие
# параметры (спасибо Иэну Кахану <<[email protected]> за
# отправку правильного скрипта чата для программы passwd в Debian Sarge).
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
# Этот булев параметр управляет тем, будет ли PAM использоваться для изменения пароля
# по запросу клиента SMB вместо указанной в 'passwd program' программы. По умолчанию это 'no'.
pam password change = yes
# Эта опция управляет тем, как неудачные попытки аутентификации сопоставляются
# с анонимными подключениями.
map to guest = bad user
########## Домен ###########
#
# Следующие настройки вступают в силу только если 'server role = classic
# primary domain controller', 'server role = classic backup domain controller'
# или 'domain logons' установлено
#
# Она указывает местоположение каталога
# профиля пользователя в представлении клиента. Следующее
# обязательно требует, чтобы на сервере Samba был настроен общий доступ [profiles]
; logon path = \\%N\profiles\%U
# Другим распространенным вариантом является хранение профиля в домашнем каталоге пользователя
# (это стандартная настройка Samba).
# logon path = \\%N\%U\profile
# Следующая настройка вступает в силу только если 'domain logons' установлено
# Она указывает местоположение домашнего каталога пользователя (с точки зрения клиента).
; logon drive = H:
# logon home = \\%N\%U
# Следующая настройка вступает в силу только если 'domain logons' установлено
# Она указывает сценарий для выполнения во время входа. Скрипт должен храниться
# в общем доступе [netlogon]
# ПРИМЕЧАНИЕ: Должен храниться в формате файла 'DOS'
; logon script = logon.cmd
# Это позволяет создавать Unix пользователей на контроллере домена через SAMR
# RPC pipe. Пример команды создает учетную запись пользователя с отключенным Unix
# паролем; пожалуйста, адаптируйте под свои нужды.
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
# Это позволяет создавать машинные учетные записи на контроллере домена через
# SAMR RPC pipe.
# Далее предполагается, что группа "machines" существует на системе.
; add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
# Это позволяет создавать Unix группы на контроллере домена через SAMR
# RPC pipe.
; add group script = /usr/sbin/addgroup --force-badname %g
############ Разное ############
# Использование следующей строки позволяет вам настроить свою конфигурацию
# на основе каждой машины. %m заменяется на netbios имя
# машины, которая подключается.
; include = /home/samba/etc/smb.conf.%m
# Некоторые значения по умолчанию для winbind (убедитесь, что вы не используете диапазоны
# для чего-то еще).
; idmap config * : backend = tdb
; idmap config * : range = 3000-7999
; idmap config YOURDOMAINHERE : backend = tdb
; idmap config YOURDOMAINHERE : range = 100000-999999
; template shell = /bin/bash
# Настройка параметров usershare, чтобы разрешить пользователям, не являющимся root, делиться
# папками с помощью команды net usershare.
# Максимальное количество usershare. 0 означает, что usershare отключен.
# usershare max shares = 100
# Разрешить пользователям, которым были предоставлены права usershare, создавать
# общие ресурсы, а не только аутентифицированные.
usershare allow guests = yes
#======================= Определения общего доступа =======================
[homes]
comment = Домашние каталоги
browseable = no
# По умолчанию домашние каталоги экспортируются только для чтения. Измените
# следующий параметр на 'no', если вы хотите иметь возможность записывать в них.
read only = yes
# Маска создания файлов установлена на 0700 по соображениям безопасности. Если вы хотите
# создать файлы с разрешениями group=rw, установите следующий параметр на 0775.
create mask = 0700
# Маска создания директорий установлена на 0700 по соображениям безопасности. Если вы хотите
# создавать папки с разрешениями group=rw, установите следующий параметр на 0775.
directory mask = 0700
# По умолчанию ресурсы \\server\username могут быть подключены любым,
# имеющим доступ к серверу Samba.
# Следующий параметр гарантирует, что только "имя_пользователя" может подключиться
# к \\server\username.
# Это может потребовать корректировки при использовании внешних схем аутентификации.
valid users = %S
# Раскомментируйте следующее и создайте каталог netlogon для входа в домен
# (вам также нужно настроить Samba для работы в качестве контроллера домена).
;[netlogon]
; comment = Служба сетевого входа
; path = /home/samba/netlogon
; guest ok = yes
; read only = yes
# Раскомментируйте следующее и создайте каталог профилей, чтобы хранить
# профили пользователей (см. параметр "logon path" выше).
# (вам также нужно настроить Samba для работы в качестве контроллера домена).
# Путь ниже должен быть доступен для записи всеми пользователями, чтобы их
# каталог профиля мог быть создан при первом входе.
;[profiles]
; comment = Профили пользователей
; path = /home/samba/profiles
; guest ok = no
; browseable = no
; create mask = 0600
; directory mask = 0700
[printers]
comment = Все принтеры
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
# Windows-клиенты ищут это имя общего доступа как источник загружаемых
# драйверов принтеров.
[print$]
comment = Драйверы принтеров
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
# Раскомментируйте, чтобы разрешить удаленное администрирование драйверов принтеров Windows.
# Возможно, вам нужно заменить 'lpadmin' на название группы, членами которой являются ваши
# администраторские пользователи.
# Пожалуйста, обратите внимание, что вам также нужно установить соответствующие Unix разрешения
# для директории драйверов, чтобы эти пользователи имели права на запись в ней.
; write list = root, @lpadmin
Почему это не работает после загрузки?
Заранее спасибо,
Вам не хватает точки (.) в файле fstab
Вместо /home/pi/smbcredentials
Должно быть /home/pi/.smbcredentials
Если подключение все еще не удается, добавьте следующие параметры монтирования в ваш файл fstab:
_netdev,sec=ntlmssp,multiuser
Опция _netdev
предотвратит зависание клиентской системы, если сервер SAMBA недоступен.
Опция sec=ntlmssp
обработает передачу учетных данных между сервером SAMBA и клиентом.
Опция multiuser
позволит нескольким пользователям монтировать общий доступ. Эти пользователи управляются утилитой smbpasswd
.
Ваша строка должна выглядеть так:
//192.168.1.4/xxx /home/pi/mycloud cifs _netdev,sec=ntlmssp,multiuser,credentials=/home/pi/.smbcredentials 0 0
Ответ или решение
Ошибки при монтировании CIFS-дисков часто могут вызывать затруднения. Сообщение о том, что вы не имеете разрешения (permission denied), может быть связано с различными аспектами конфигурации. Рассмотрим данную проблему подробнее и предложим решения.
Причины проблемы
-
Ошибки в файле конфигурации
fstab
:
В вашем случае указано, что путь к файлу с учетными данными неверен. Вместо:credentials=/home/pi/smbcredentials
должно быть:
credentials=/home/pi/.smbcredentials
Наличие точки в начале имени файла критически важно, так как она указывает на его скрытость в Linux-системах. Если файл не будет найден, система не сможет получить учетные данные для подключения, что приведет к ошибке прав доступа.
-
Проблемы с правами и доступом:
Просмотрите права на файл.smbcredentials
. Он должен быть доступен только для чтения пользователю, который выполняет монтирование. Для этого выполните следующие команды:chmod 600 /home/pi/.smbcredentials chown pi:pi /home/pi/.smbcredentials
Это гарантирует, что только пользователь
pi
сможет читать файл, что важно для безопасности. -
Настройки Samba (
smb.conf
):
Убедитесь, что в вашем конфигурационном файле Samba нет ограничений, которые могут мешать доступу к указанному ресурсу. Для этого проверьте настройки секции, где определяются права доступа к вашим общим ресурсам. Убедитесь, что распределенные ресурсы могут быть доступны пользователюpi
и что он указан какvalid user
. -
Необходимые монтируемые опции:
Если проблема сохраняется, добавьте диапазон опций для монтирования в ваш файлfstab
, чтобы сделать монтирование более устойчивым, особенно после перезагрузки системы. Например://192.168.1.4/xxx /home/pi/mycloud cifs _netdev,sec=ntlmssp,multiuser,credentials=/home/pi/.smbcredentials,uid=pi,gid=pi 0 0
_netdev
: предотвращает зависание системы, если сервер Samba недоступен.sec=ntlmssp
: помогает обеспечить необходимую защиту при передаче учетных данных.multiuser
: уточняет, что доступ к ресурсу могут получать несколько пользователей.
Дополнительные рекомендации
-
Проблемы при загрузке системы: Если монтирование не работает автоматически при загрузке, попробуйте выполнить
sudo mount -a
. Это может помочь вам диагностировать ошибки, которые происходят только в момент загрузки. -
Проверка журнала Samba**: Если проблема все еще сохраняется, проверьте журналы Samba для получения дополнительной информации. Обычно они находятся в
/var/log/samba/
и могут дать более детализированные сообщения об ошибках.
Заключение
Ваша проблема с ошибкой "mount.cifs permission denied" могло быть вызвано несколькими факторами, включая ошибки конфигурации, права файлов и параметры монтирования. Следуя указанным шагам, вы должны быть в состоянии успешно монтировать сетевой диск без нарушений доступа. Regularly check and adjust your configurations as needed to ensure optimal performance and security of your Samba shares.