Установка SMB 2.0 по умолчанию для операций монтирования

Вы можете использовать команду secure copy, если основной целью совместного использования точки монтирования является копирование/перемещение файлов:

$ scp your_username@remotehost.edu:foobar.txt /some/local/directory

http://www. hypexr.org/linux_scp_help.php

7
25.05.2017, 17:46
2 ответа

К сожалению, модуль файловой системы cifsядра вообще не читает /etc/samba/smb.conf. Клиентский модуль CIFS, который позволяет монтировать файловые ресурсы Windows, полностью отделен от Samba.

Уровень протокола по умолчанию в модуле cifsбыл изменен на SMB3 в ванильном ядре версии 4.13, а исправление согласования нескольких диалектов -(фактически установило значение по умолчанию на «SMB2.1 или более позднюю версию» )был добавлен к ядрам ванили в сентябре 2017 года.

Я почти уверен, что в «корпоративных» дистрибутивах Linux исправление было перенесено на более ранние ядра, но в Arch единственным вариантом может быть обновление ядра до версии 4.13 или более поздней.

Вот ссылка на соответствующий патч в Git на kernel.org. Идентификатор фиксации может быть полезен при отслеживании исправления в определенных версиях ядра.

4
27.01.2020, 20:19

В рамках изучения этой проблемы я написал сценарий, который корректирует параметры CIFS для команды mount.

#!/bin/bash
#
# Force SMB2.0 mount. We prefix the options list because a later explicit
# "vers=..." option overrides the one we add.
########################################################################
#
args=()

# Only consider checking options if we have a CIFS mount
[[ "$*" =~ '-t cifs' ]] && cifs=yes || cifs=

options=
for arg in "$@"
do
    if [[ $next == 'options' ]]
    then
        # Prefix version to options string
        arg="vers=2.0,$arg"
        next=
    fi

    args+=("$arg")

    # CIFS options check
    if [[ $cifs == 'yes' ]]
    then
        [[ $arg == '-o' ]] && next=options
    fi
done

logger -p user.notice -t "${0/*\/}" "intercepted $0 ${args[*]}"
exec "$0.real" "${args[@]}"

Установите этот скрипт как /bin/mount.sh. Затем запустите эти команды

chmod a+x /bin/mount.sh
mv /bin/mount /bin/mount.real && ln -fs mount.sh /bin/mount

Удалите его с помощью

test -L /bin/mount && rm -f /bin/mount && mv -f /bin/mount.real /bin/mount
rm -f /bin/mount.sh
0
27.01.2020, 20:19

Теги

Похожие вопросы