1

В основном я использую свой ноутбук, и когда я дома, мне нравится иметь доступ к общим ресурсам SMB на моем NAS. Хотя я легко могу сделать это в Thunar (я использую XFCE), просто введя smb://nas.address/share в адресную строку, никакие другие приложения не могут получить доступ к файлам на общем ресурсе. Например, если я дважды щелкну по видеофайлу в папке «Мои фильмы», я бы хотел, чтобы он начал воспроизводиться в моем предпочтительном видеоплеере (VLC), но вместо этого я получаю безумное сообщение об ошибках и вынужден выйти VLC. Я знаю, что могу настроить постоянное монтирование с помощью fstab, но 1) я хочу, чтобы при монтировании я просил ввести учетные данные, а не хранить их постоянно на моем компьютере, и 2) так как это ноутбук, я буду часто использовать его, когда я за пределами моя локальная сеть, и я не хочу, чтобы она пыталась подключить диски при загрузке, которые недоступны (и нет, я не собираюсь открывать мои SMB-ресурсы в Интернете). Я устал от того, что мне нужно сначала скопировать все, что я хочу смотреть / слушать на свой ноутбук через Thunar - как люди справляются с этой неприятностью?

Изменить: это то, как выглядит всплывающее окно аутентификации в Thunar

Вот так выглядит всплывающее окно аутентификации в Thunar

Действительно, очень многообещающе, именно то, что вы ожидаете увидеть, за исключением того, что аутентификация, которая «запоминается до тех пор, пока вы не выйдете», применяется только к Thunar и никаким другим приложениям. Насколько я вижу, путь smb:// подобен любому другому URL, и с учетными данными, хранящимися в моем сеансе пользователя, любое приложение, работающее в этом сеансе, должно иметь возможность использовать эти учетные данные для доступа к URL - конечно, при условии что в ОС есть зарегистрированный обработчик для URL SMB.

2 ответа2

2

Я использую autofs для монтирования своих NFS-ресурсов по требованию в моем Kubuntu.

autofs - это программа для автоматического монтирования каталогов по мере необходимости. Автоматическое монтирование монтируется только при обращении к нему и отключается после периода бездействия. Поэтому автоматическое монтирование общих ресурсов NFS/Samba экономит полосу пропускания и обеспечивает лучшую общую производительность по сравнению со статическим монтированием через fstab .

В вашем случае это полезно:

При определении доли CIFS в файл карты, указать -fstype=cifs и предшествуют общую папку с двоеточием :

Пример:

mntpoint -fstype=cifs ://example.com/shrname

Пример: Смонтируйте чтение-запись, указав пользователя и группу для владения файлами:

mntpoint -fstype=cifs,rw,uid=myuserid,gid=mygrpid ://example.com/shrname

Пример: Смонтируйте чтение-запись, указав имя пользователя и пароль, которые будут использоваться для подключения к общему ресурсу:

mntpoint -fstype=cifs,rw,username=myuser,password=mypass ://example.com/shrname

Файл карты - /etc/auto.master или /etc/auto.* или, например, /etc/auto.master.d/* . Прочитайте документацию и узнайте, как настроить демон.

На первый взгляд кажется, что это не идеальное решение для вас, потому что кажется, что вы должны хранить учетные данные в файле. Это может быть файл карты (как в примере выше) или отдельный файл, например, credentials.txt как вы можете видеть здесь. Однако там есть этот комментарий:

Я полагаю, вы могли бы сделать credentials.txt именованным каналом и запустить программу запроса пароля для подачи канала.

Если это правильно, то я ожидаю, что эта "программа запроса пароля" может быть просто одним echo или printf вы вызываете вручную.


РЕДАКТИРОВАТЬ:

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

Linux может монтировать / размонтировать различные файловые системы с помощью исполняемых файлов mount.* И umount.* . Эта опция credentials=/etc/credentials.txt в связанном примере фактически является опцией для mount.cifs . Я думаю, что если вы используете что-то вроде

mount -t foo …

или в конфигурации autofs :

mntpoint -fstype=foo …

он попытается найти и запустить mount.foo , передав ему все остальные параметры.

Поэтому вы должны создать mount.mycifs как обертку над mount.cifs . Он должен как-то запросить у вас учетные данные (простой xterm -e … может быть, использовать read или dialog или что-то еще; но прочтите это, пожалуйста), добавить -o username=…,password=… или -o credentials=… для остальных параметры и передать их в mount.cifs (или mount -t cifs), который выполняет фактическое монтирование.

Если у вас есть umount.cifs сделайте umount.mycifs символической ссылкой на него.

Затем используйте -fstype=mycifs в файле карты без каких-либо параметров, связанных с учетными данными.


Следующий /sbin/mount.mycifs - быстрое и грязное доказательство концепции. Поймите, что он делает, прежде чем запускать его в своей ОС, потому что он будет работать от имени root , я случайный человек в Интернете, и вы не должны мне доверять.

#!/bin/bash

tmpf="`mktemp`"
DISPLAY=:0 XAUTHORITY=/home/ola/.Xauthority xterm -e /bin/bash -c '\
read -p "user:" u; \
read -sp "password:" p; \
printf "username=%s\npassword=%s" "$u" "$p" > "$0"; \
' "$tmpf"

mount -t cifs "$@" -o credentials="$tmpf"
rm "$tmpf"

Он должен принадлежать пользователю root:root или любому другому, что подходит для mount.* В вашей ОС. Не забудьте сделать его исполняемым (sudo chmod a+x /sbin/mount.mycifs), иначе это не сработает. Обратите внимание, что с DISPLAY и XAUTHORITY есть неприятный хак, который позволяет демону autofs отображать окно xterm на вашем (?) экран, но в целом это не должно делать. Хак только для демона, mount -t mycifs … должен иметь возможность отображать xterm без хака, если он вызывается из среды вашего рабочего стола.

Чтобы сделать его менее грязным, вам следует написать еще одну программу или скрипт и запустить его с ограниченными разрешениями вашего локального пользователя, прежде чем вы получите доступ к каталогу, где будет автоматически монтироваться ваш CIFS. Этот скрипт должен ожидать сигнала от mount.mycifs , запрашивать учетные данные (он может отображать окна и т.д. Без неприятных хаков) и передавать их в mount.mycifs который не должен отображать ни окна, ни запросы самостоятельно.

0

Вы заявили, что часто будете использовать его за пределами своей локальной сети, но затем заявили, что не хотите открывать свои акции SMB в Интернете. Если вы хотите получить доступ к своим ресурсам за пределами вашей локальной сети, вам придется открыть их в Интернете, поскольку другого способа сделать это нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .