SMB 2.0을 설치 작업의 기본값으로 설정

SMB 2.0을 설치 작업의 기본값으로 설정

SMB 2.0(SMB 1.0 비활성화됨)을 실행하는 서버에 연결할 때 오류가 반환됩니다 mount -t cifs -v <address>. Host is Down해결책은 vers=2.0매개변수 목록을 지정하는 것입니다 mount. 명령줄을 통해 설치하고 이 매개변수를 지정할 수 있는 경우 이는 매우 효과적입니다. 그러나 GUI나 mount사용자를 대신하여 호출되는 일부 프로그램을 사용할 때는 이 매개변수가 지정되지 않습니다.

mount -t cifs모든 통화에 대해 SMB 2.0+를 기본값으로 설정할 수 있는 방법이 있습니까 ? 아마도 smb.conf?

현재 아치 리눅스를 실행하고 있습니다.

편집하다:서비스를 추가 min protocol = SMB2하고 다시 시작합니다. /etc/samba/smb.conf둘 다 서버에 연결하기 전에 SMB 버전을 지정 해야 mount합니다 .smbclient

편집 2:버전 매개변수를 지정하지 않고 서버에 연결할 수 있도록 client min protocol = SMB2추가 되었습니다 . 그러나 새로 추가된 행은 여전히 ​​존중되지 않습니다 .client max protocol = SMB3smbclientmountsmb.conf

답변1

불행하게도 커널의 파일 시스템 모듈은 cifs전혀 읽지 못합니다. /etc/samba/smb.confWindows 파일 공유 마운트를 허용하는 CIFS 클라이언트 모듈은 Samba와 완전히 독립적입니다.

스톡 커널 버전 4.13에서는 모듈의 기본 프로토콜 수준이 cifsSMB3으로 변경되었으며, 2017년 9월에 다중 언어 협상 패치가 스톡 커널에 추가되었습니다(기본값을 "SMB2.1 이상"으로 효과적으로 설정).

나는 "엔터프라이즈" Linux 배포판이 패치를 이전 커널로 백포트했다고 확신하지만 Arch에서는 커널 버전 4.13 이상으로 업그레이드하는 것이 유일한 옵션일 수 있습니다.

다음은 kernel.org Git의 관련 패치에 대한 링크입니다.커밋 ID는 특정 커널 버전의 패치를 추적하는 데 유용할 수 있습니다.

답변2

이 문제를 조사하는 과정에서 명령의 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

관련 정보