Рейтинг:0

Монтировать Samba из командной строки без полномочий root, чтение/запись, без fstab?

флаг id

Ну, я думал, что это было бы проще, но я просто не могу найти, выполнимо ли то, что я хочу.

Я хочу смонтировать сетевой ресурс Samba из командной строки в Ubuntu 20.04 (MATE) - желательно без каких-либо изменений в файлах или сохранения настроек куда-либо; просто командная строка.

Итак, сначала я попробовал:

sudo mount -t cifs -o user=MYSMBUSER //192.0.2.1/myshare /tmp/myshare

Это отлично работает - в смысле монтирования, просмотра файлов и предоставления доступа к файлам только для чтения; но он не позволяет записывать файлы (отказано в доступе).

Это видимо из-за:

https://unix.stackexchange.com/questions/68079/mount-cifs-network-drive-write-permissions-and-chown

Вы монтируете общий ресурс CIFS как root (потому что вы использовали sudo), поэтому вы не можете писать как обычный пользователь. Если ваш дистрибутив Linux и его ядро ​​достаточно новые, чтобы вы могли смонтировать сетевую папку как обычный пользователь (но в папке, которой владеет пользователь), у вас будут соответствующие учетные данные для записи файла.

Да, я хочу «подключить общий сетевой ресурс как обычный пользователь», и это может показаться вариантом, однако мое имя пользователя в Ubuntu отличается от имени пользователя Samba, поэтому:

Альтернативой является указание идентификатора пользователя и группы, который должен использовать смонтированный сетевой ресурс, это позволит этому конкретному пользователю и, возможно, группе записывать в общий ресурс. Добавьте к вашему монтированию следующие параметры: ...


Первая проблема - как размонтировать вышеперечисленное; Я сделал:

$ sudo размонтировать /tmp/myshare
$ 

... и поскольку он не сообщает об ошибках, я предполагаю, что он завершился нормально, но затем я пытаюсь:

$ лс /tmp/myshare
файл_из_общего_ресурса01.txt файл_из_общего_ресурса02.txt ...

... файлы все еще перечислены, поэтому общий ресурс смонтирован; оказывается (через https://stackoverflow.com/questions/74626/how-do-you-force-a-cifs-connection-to-unmount ), чтобы размонтировать его, я должен сделать:

$ sudo umount -a -t cifs -l

Вот сложная часть - если я хочу подключиться как обычный пользователь, но указать имя пользователя SMB, мне придется написать ту же команду, что и выше, но без судо:

$ mount -t cifs -o user=МОЙ ПОЛЬЗОВАТЕЛЬ //192.0.2.1/myshare /tmp/myshare
mount: только root может использовать опцию "--options"

Так что, может быть, я мог в противном случае запускали это как не root, если мне не пришлось использовать пользователь вариант - но я делаю. Поэтому я не могу использовать эту команду.

Одно из предложений обойти это — указать параметры в fstab — через смонтировать общую папку cifs без sudo :

Чтобы иметь возможность монтировать эту папку как обычный пользователь, включите параметры монтирования для папки cifs в файле конфигурации /etc/fstab и добавьте параметры noauto,user,

Тем не менее, я делаю нет хочу сделать это, потому что я не хочу вести записи учетных данных SMB на своей машине - и если мне нужно отредактировать fstab, то я должен удалить запись из fstab после того, как это будет сделано, и обычно в это время время я устал, я мог забыть, бла-бла.

Я обнаружил, что это, вероятно, какая-то функция безопасности:

https://unix.stackexchange.com/questions/365308/use-mount-o-with-a-non-root-user

Ограничение -o (его может указать только пользователь root) предназначено для защиты системы: администратор может установить любые необходимые параметры, либо непосредственно с помощью -o, либо с помощью /etc/fstab; пользователи могут смонтировать или размонтировать только управляемые пользователем файловые системы без указания параметров, поскольку параметры файловой системы допускают ряд враждебных сценариев.В результате некоторые файловые системы поддерживают другие способы установки определенных параметров, например переменную среды USER, использованную выше с CIFS.

Да, но для меня более безопасно не вводить пути SMB в /etc/fstab вообще.

Итак, я действительно хотел бы смонтировать только с помощью командной строки без изменение любых конфигурационных файлов (включая /etc/fstab) везде.

Я надеялся, что есть другая команда, и я нашел gvfs-mount - но у меня такая же проблема, как Смонтировать общий ресурс SMB с помощью gvfs из командной строки :

$ dbus-запуск bash
$ gvfs-mount smb://192.0.2.1/myshare
Этот инструмент устарел, вместо него используйте 'gio mount'.
Для получения дополнительной информации см. «gio help mount».

Требуется пароль для общего доступа к myshare на 192.0.2.1
Пользователь [местопользователь]: MYUSER
Домен [РАБОЧАЯ ГРУППА]:
Пароль:
$

На данный момент кажется, что он смонтировался, но на самом деле это не так:

$ ls /run/пользователь/1000/gvfs/
$

... и через gvfs-mount -l, мы видим, что соответствующей точки монтирования нет:

$ gvfs-mount -l
...
Том (3): test_nfs
  Тип: GProxyVolume (GProxyVolumeMonitorUDisks2)
  Смонтировать (0): test_nfs -> файл:///tmp/test_nfs
    Тип: GProxyMount (GProxyVolumeMonitorUDisks2)
Mount(0): myshare на 192.0.2.1 -> smb://192.0.2.1/myshare/
  Тип: GDaemonMount

... и поэтому мы все равно не можем получить доступ к каким-либо файлам с этим «монтированием».


Опять же, как вы размонтируете это - вы не можете сделать размонтировать /tmp/myshare, он даже не считается смонтированным; обнаружил, что здесь Размонтировать общую папку gvfs samba с открытым файлом :

$ лс ~/.gvfs
ls: невозможно получить доступ к '~/.gvfs': нет такого файла или каталога

$ gvfs-mount -u smb://192.0.2.1/myshare
Этот инструмент устарел, вместо него используйте 'gio mount'.
Для получения дополнительной информации см. «gio help mount».

После этого проверка с gvfs-mount -l подтверждает, что доля действительно пропала)


И чтобы обратиться к упоминанию о Джио Маунт - во-первых, обратите внимание, что без запуска dbus-сессии происходит сбой с:

$ gio смонтировать smb://192.0.2.1
gio: smb://192.0.2.1: том не поддерживает монтирование

...затем в оболочке, запущенной dbus-запуск bash, он ведет себя точно так же, как gvfs-mount:

$ gio смонтировать smb://192.0.2.1/myshare
Требуется пароль для общего доступа к myshare на 192.0.2.1
Пользователь [местопользователь]: MYUSER
Домен [РАБОЧАЯ ГРУППА]:
Пароль:
$

Вроде смонтировал, но:

$ gio смонтировать -l
...
Том (3): test_nfs
  Тип: GProxyVolume (GProxyVolumeMonitorUDisks2)
  Смонтировать (0): test_nfs -> файл:///tmp/test_nfs
    Тип: GProxyMount (GProxyVolumeMonitorUDisks2)
Mount(0): myshare на 192.0.2.1 -> smb://192.0.2.1/myshare/
  Тип: GDaemonMount

... снова нет точки монтирования локального каталога.


Выше сказано: возможно ли смонтировать общий ресурс SMB из командной строки без изменения каких-либо локальных файлов (например, и особенно /etc/fstab), без sudo и с разрешениями r/w (которые я подтвердил в Windows, у пользователя SMB MYUSER) - и если да, то как?

Рейтинг:0
флаг es

Точка монтирования не ниже ~/.кэш/gvfs/ это под /запустить/пользователь/1000/gvfs

Замените 1000 своим собственным номером uid

Я смонтирую одну из своих собственных акций:

~$ gio mount smb://vubmate2004.local/Private
Требуется пароль для приватного доступа на vubmate2004.local
Пользователь [тестер]: tester
Домен [РАБОЧАЯ ГРУППА]: 
Пароль: 

Я проверю, смонтирован ли он:

~$ ls -al /run/user/1000/gvfs
всего 0
dr-x------ 3 тестер тестер 0 5 янв 15:08 .
drwx------ 10 tester tester 300 5 января 15:13 ..
drwx------ 1 tester tester 0 5 января 15:14 'smb-share:server=vubmate2004.local,share=private'

Я проверю содержимое смонтированного общего ресурса:

~$ ls -al /run/user/1000/gvfs/smb-share:server=vubmate2004.local,share=private
всего 0
drwx------ 1 тестер тестер 0 5 янв 15:14 .
dr-x------ 3 тестер тестер 0 5 янв 15:08 ..
-rwx------ 1 тестер тестер 0 5 янв 15:14 'новый файл'

Я размонтирую общий ресурс:

~$ gio mount -u smb://vubmate2004.local/Private

Я проверю, если он все еще смонтирован:

~$ ls -al /run/user/1000/gvfs
всего 0
dr-x------ 2 тестер тестер 0 5 янв 15:08 .
drwx------ 10 tester tester 300 5 января 15:13 ..
Рейтинг:0
флаг id

Что ж, публикую это как ответ, так как оказалось, что некоторые из тех гвфс/Джио команды, по-видимому, работали - я просто не смотрел на нужную папку монтирования; видимо, в моей Ubuntu 20.04 это не так:

$ лс ~/.gvfs
ls: невозможно получить доступ к '~/.gvfs': нет такого файла или каталога

... но вместо того, чтобы:

$ лс ~/.кэш/gvfs/
'smb-доля: сервер = 192.0.2.1, общий ресурс = мой общий ресурс'

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

Что ж, я счастлив после всех этих десятилетий разработки, обмен файлами в наши дни так прост! И с нетерпением жду дальнейших изменений, надеюсь, мы увидим ~/.кэш/.etc/gvfs-2/ в использовании, поэтому мы получаем еще больше поломок и еще больше бесполезных ответов, которые нам придется часами тралить в будущем! Разве развитие технологий не прекрасно? :)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.