Автор Тема: Монтирование SMB через FSTAB от разных пользователей с разными паролями  (Прочитано 3579 раз)

Оффлайн El Scorpio

  • Давно тут
  • **
  • Сообщений: 31
    • Email
Есть компьютер, который нужно периодически переключать между разными локальными сетями (то к одной, то к другой). Каждая сеть - домен с DSF.
Хочу подключать и отключать DSF каждой сети от имени пользователя

Прописал в /etc/fstab две точки монтирования

//net1/dfs /mnt/net1/ cifs user,noauto,file_mode=0650,dir_mode=0750,credentials=~/.credentials/net1.pass 0 0 
//net2/dfs /mnt/net2/ cifs user,noauto,file_mode=0650,dir_mode=0750,credentials=~/.credentials/net2.pass 0 0
Предполагается, что у каждого пользователя в профиле будет список файлов с паролями доступа

Не выполняется.

Команда mount /mnt/net1 выдаёт
mount.cifs: permission denied: no match for /mnt/net1 found in /etc/fstabТипа не найдена строка монтирования

Команда (для проверки) sudo mount /mnt/net1 выдаёт
error 2 (No such file or directory) opening credential file ~/.credentials/net1.passСтрока монтирования определяется, но не может использовать относительный путь к файлу пароля в профиле пользователя

Если вписать путь как /etc/.credentials/$USER/net1.pass - будет такая же ошибка
 

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Если вписать путь как /etc/.credentials/$USER/net1.pass - будет такая же ошибка
Так в каталоге пользователя, или в /etc ?

Оффлайн klark973

  • Завсегдатай
  • *
  • Сообщений: 662
  • Неспящий саппорт
Команда mount /mnt/net1 выдаёт
mount.cifs: permission denied: no match for /mnt/net1 found in /etc/fstabТипа не найдена строка монтирования
Конечно не найдена, вы же прописали /mnt/net1/ :-)
To moan or to solve -- that is the question!

Оффлайн Александр Ерещенко

  • Завсегдатай
  • *
  • Сообщений: 1 153
Прописал в /etc/fstab две точки монтирования

//net1/dfs /mnt/net1/ cifs user,noauto,file_mode=0650,dir_mode=0750,credentials=~/.credentials/net1.pass 0 0 
//net2/dfs /mnt/net2/ cifs user,noauto,file_mode=0650,dir_mode=0750,credentials=~/.credentials/net2.pass 0 0
Предполагается, что у каждого пользователя в профиле будет список файлов с паролями доступа

Не выполняется.

Команда mount /mnt/net1 выдаёт
mount.cifs: permission denied: no match for /mnt/net1 found in /etc/fstabТипа не найдена строка монтирования

Команда (для проверки) sudo mount /mnt/net1 выдаёт
error 2 (No such file or directory) opening credential file ~/.credentials/net1.passСтрока монтирования определяется, но не может использовать относительный путь к файлу пароля в профиле пользователя

Если вписать путь как /etc/.credentials/$USER/net1.pass - будет такая же ошибка

В первом случае при запуске mount от имени пользователя у Вас ошибка, потому что пользователю не разрешено использовать mount
(можно исправить через sudoers)

Но в данном случае всё равно не поможет, потому что будет та же самая "ошибка 2"
Дело в том, что символ "~" является как бы макросом, и раскрывается в полный путь домашнего каталога текущего пользователя командной оболочкой, но никак не программой mount, которая собственно и читает, а потом обрабатывает файл /etc/fstab.
программа mount пытается найти именно файл "~/.credentials/net1.pass", т.е. хочет в текущем каталоге увидеть каталог "~" (ну и в нём уже остальное)
То же самое и про переменную $USER - mount воспринимает эту запись именно как имя каталога в /etc
Это вполне допустимые имена в системе (обратите внимание на одинарные кавычки - это чтобы bash не попытался сделать подстановки вместо ~ и $USER):
mkdir -p '~/$USER'

А по Вашей задаче можно предложить, например, монтирование скриптом, запускаемым от пользователя - там переменные и "~" будут уже честно отрабатываться.

Оффлайн El Scorpio

  • Давно тут
  • **
  • Сообщений: 31
    • Email
А по Вашей задаче можно предложить, например, монтирование скриптом, запускаемым от пользователя - там переменные и "~" будут уже честно отрабатываться.
Так и сделаю