Вопрос или проблема
Я пытаюсь автоматически монтировать сетевой диск при запуске, редактируя /etc/fstab
, но это не работает.
Если я выполняю эту команду,
sudo mount.cifs //192.168.0.67/test /home/pi/test -o username=myname,password=123
она отлично работает. Но я не знаю, как правильно записать то же самое в /etc/fstab
.
Каждая строка в файле /etc/fstab
содержит следующие поля, разделенные пробелами или табуляциями:
file_system dir type options dump pass
Обычно добавляемая точка монтирования в /etc/fstab будет выглядеть следующим образом:
# <file system> <dir> <type> <options> <dump> <pass>
/dev/sda1 / ext4 defaults,noatime 0 1
Вы не можете просто добавить объявление монтирования в файл.
Добавьте эту строку в конец вашего файла /etc/fstab
:
//192.168.0.67/test /home/pi/test cifs username=myname,password=123,iocharset=utf8,sec=ntlm 0 0
После редактирования /etc/fstab можно проверить, смонтировав файловую систему с помощью mount -a
, что позволит проверить fstab и попытаться смонтировать все, что там есть.
В дополнение к ответу 에이바, вы можете сохранить учетные данные в специальном файле, называемом .smbcredentials
, в вашем домашнем каталоге для небольшой безопасности. Это хорошая практика, особенно для многопользовательских систем. Таким образом, вы будете защищать ваш пароль cifs. Создайте файл: /home/myname/.smbcredentials
и включите в него только две строки:
user=myname
password=123
Установите права на файл:
$ chmod 600 .smbcredentials
Затем в /etc/fstab
включите следующую строку:
//192.168.0.67/test /home/myname/test cifs credentials=/home/myname/.smbcredentials,iocharset=utf8,sec=ntlm 0 0
Обязательно протестируйте с mount -a
или перезагрузкой.
Извините, если это выглядит как захват вашей темы, это связано, и я потратил часы, пытаясь заставить работать советы, опубликованные здесь, с моим Raspberry Pi, прежде чем я сдался и придумал эту альтернативу для пользователей Raspberry Pi… обратите внимание, что это также должно работать на Ubuntu 18.04.
Я пытался заставить вышеуказанные советы работать с Raspberry Pi Raspbian buster desktop на моем Raspberry Pi 3+, но все, что мне удалось стабильно работать, это командная версия, опубликованная user6354 в начале этого потока. Тем не менее, я смог поместить эту строку с небольшим редактированием в файл в папке /home/user/.config/autostart на моем Raspberry Pi и заставить ее работать.
Содержание файла должно выглядеть следующим образом (внесите изменения для вашей ситуации – см. ниже):
[Desktop Entry]
Encoding=UTF-8
Name=OurCloud_share
Name[en_GB]=OurCloud_share
GenericName=OurCloud_share
Comment=Script to mount OurCloud_share
TryExec=lxterminal
Exec=lxterminal -e "sudo mount.cifs //192.168.1.xxx/sourcefolder /home/pi/targetfolder -o username=loginID,password=userpassword"
Icon=lxterminal
Type=Application
StartupNotify=true
Categories=GTK;Utility;TerminalEmulator;
Name[en_US]=mount_OurCloud.desktop
Где:
OurCloud_share = как вы хотите назвать доступ к вашему NAS-диску
192.168.1.xxx = замените это на TCP/IP-адрес вашего NAS в сети
sourcefolder = общая папка на вашем NAS-диске
targetfolder = папка, где вы хотите, чтобы содержимое смонтированной папки NAS отображалось (создайте эту папку и убедитесь, что она доступна на запись, если вы хотите иметь двусторонний доступ к ней)
loginID = идентификатор пользователя для входа в ваш NAS через сеть
userpassword = пароль для использования с идентификатором пользователя
Назовите файл как-то осмысленно (здесь я использую “mount_OurCloud.desktop”. Тип файла “.desktop” обязателен.)
Сохраните это, а затем используйте права root для установки разрешения на выполнение этого файла.
Перезагрузите, и ваша NAS-папка должна быть видна в целевой папке.
.
Ответ или решение
Редактирование файла /etc/fstab
для автоматического монтирования сетевых дисков при запуске системы может показаться сложной задачей, однако при правильном подходе это становится вполне понятным и управляемым процессом. В данном ответе я предоставлю детализированное объяснение с использованием вашего опыта и примеров, чтобы вы могли легко справиться с этой задачей.
Теория
Файл /etc/fstab
(File Systems Table) используется в UNIX-подобных системах для автоматизации процесса монтирования файловых систем. Он содержит информацию о всех доступных файловых системах и определяет, какие из них должны монтироваться автоматически, с каким доступом и опциями. Каждая строка в этом файле следуют следующему шаблону:
<файловая система> <точка монтирования> <тип> <опции> <дамп> <проверка>
-
Файловая система: путь или идентификатор файловой системы, которую требуется смонтировать. В случае сетевых накопителей это будет UNC путь, например,
//192.168.0.67/test
. -
Точка монтирования: директория, в которую будет монтирована файловая система, например,
/home/pi/test
. -
Тип: тип файловой системы. Для монтирования CIFS/SMB-дисков используется
cifs
. -
Опции: список опций, разделенных запятыми, таких как метод аутентификации, кодировка, режим доступа и пр.
-
Дамп и Проверка: определяют необходимость и порядок проверки файловой системы; обычно для сетевых дисков устанавливаются в
0
.
Пример
Предположим, что вы хотите монтировать сетевой диск с IP-адресом 192.168.0.67
, который доступен через CIFS-протокол. Монтирование может быть успешно выполнено через команду:
sudo mount.cifs //192.168.0.67/test /home/pi/test -o username=myname,password=123
Конвертируем эту команду в запись в /etc/fstab
:
//192.168.0.67/test /home/pi/test cifs username=myname,password=123,iocharset=utf8,sec=ntlm 0 0
Здесь:
iocharset=utf8
используется для корректной поддержки кодировки UTF-8.sec=ntlm
определяет метод безопасности.
Применение
После редактирования /etc/fstab
рекомендуется выполнить команду sudo mount -a
, чтобы проверить корректность настройка монтирования. Эта команда монтирует все файловые системы, указанные в /etc/fstab
, и позволяет убедиться, что синтаксис строки и параметры правильные.
Увеличение безопасности
Поскольку хранение пароля в открытом виде может быть небезопасно, рекомендуется использовать файл .smbcredentials
, чтобы отдельно хранить учетные данные. Создайте этот файл в своем домашнем каталоге:
-
Создайте файл
/home/myname/.smbcredentials
:username=myname password=123
-
Ограничите доступ к этому файлу:
chmod 600 /home/myname/.smbcredentials
-
Измените строку в
/etc/fstab
на://192.168.0.67/test /home/myname/test cifs credentials=/home/myname/.smbcredentials,iocharset=utf8,sec=ntlm 0 0
Теперь учетные данные безопасно хранятся и защищены от несанкционированного доступа.
Рассмотрение альтернатив
На устройствах Raspberry Pi иногда возникают специфические проблемы с настройками из-за среды или аппаратных ограничений. Если вышеописанные методы не работают, вы можете использовать автозагрузку в графическом окружении.
Создайте файл .desktop
в каталоге /home/pi/.config/autostart
, содержащий команду монтирования, например:
[Desktop Entry]
Encoding=UTF-8
Name=Mount Network Drive
Exec=lxterminal -e "sudo mount.cifs //192.168.0.67/test /home/pi/test -o username=myname,password=123"
Type=Application
StartupNotify=true
Убедитесь, что файл имеет разрешение на выполнение. Этот метод гарантирует, что команда выполняется при старте графического интерфейса пользователя.
Заключение
Правильная конфигурация файла /etc/fstab
значительно упростит работу с сетевыми устройствами, улучшит вашу профессиональную инфраструктуру компьютера и значительно сэкономит время, затраченное на ручное монтирование. Как видите, выполнение простых шагов для повышения безопасности и автоматизации может принести ощутимую пользу.