/proc/fs/cifs/SecurityFlags
を編集して、cifsマウントを正しくマウントできるようにしました。 (値0x81を使用する必要がありました。)
SecurityFlags
を編集するにはmodprobe cifs
と入力すると、/proc/fs/cifs
ディレクトリが表示されます(このコマンドを入力する前は表示されません)。
再起動後、SecurityFlags
の値がデフォルトの0x7にリセットされました。
これを永続的に設定して、再起動後に0x81値を保持するにはどうすればよいですか?
カーネルのコンパイル時にオプションとして設定されます
/ procは仮想ファイルシステムです。次を参照してください http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html
/ procは、仮想ファイルシステムでもあるという点で非常に特別です。これは、プロセス情報疑似ファイルシステムと呼ばれることもあります。 「実際の」ファイルは含まれていませんが、ランタイムシステム情報(システムメモリ、マウントされているデバイス、ハードウェア構成など)は含まれています。このため、カーネルの制御および情報センターと見なすことができます。実際、非常に多くのシステムユーティリティは、このディレクトリ内のファイルへの呼び出しです。たとえば、「lsmod」は「cat/proc/modules」と同じですが、「lspci」は「cat/proc/pci」の同義語です。このディレクトリにあるファイルを変更することで、システムの実行中にカーネルパラメータ(sysctl)の読み取り/変更を行うこともできます。
https://www.kernel.org/doc/readme/Documentation-filesystems-cifs-README を参照してください
SecurityFlagsセキュリティネゴシエーションとパケット署名を制御するフラグ。認証(必須/必須)フラグ(NTLMやNTLMv2など)は、署名フラグと組み合わせることができます。一方、(「使用する必要がある」)2つの異なるパスワードハッシュメカニズムを指定しても、あまり意味がありません。デフォルトのフラグは0x07007です(NTLM、NTLMv2およびパケット署名が許可されています)。弱いパスワードハッシュを使用してサーバーへのマウントを許可する場合の最大許容フラグは0x37037(lanman、plaintext、ntlm、ntlmv2、署名可能)です。一部のSecurityFlagsは、対応するmenuconfigオプションを有効にする必要があります(lanmanおよびplaintextは、たとえばCONFIG_CIFS_WEAK_PW_HASHが必要です)。現在、プレーンテキスト認証を有効にするには、セキュリティフラグでlanman認証を有効にする必要があります。これは、cifsモジュールがセッションセットアップSMBの古いlanman方言形式を使用したlaintextパスワードの送信のみをサポートするためです。 (たとえば、プレーンテキストパスワードを使用した認証の場合は、SecurityFlagsを0x30030に設定します):
may use packet signing 0x00001
must use packet signing 0x01001
may use NTLM (most common password hash) 0x00002
must use NTLM 0x02002
may use NTLMv2 0x00004
must use NTLMv2 0x04004
may use Kerberos security 0x00008
must use Kerberos 0x08008
may use lanman (weak) password hash 0x00010
must use lanman password hash 0x10010
may use plaintext passwords 0x00020
must use plaintext passwords 0x20020
(reserved for future packet encryption) 0x00040
マウントオプションでこれを上書きできます
https://www.samba.org/samba/docs/man/manpages-3/mount.cifs.8.html を参照してください
sec =セキュリティモード。許可される値は次のとおりです。
ヌルユーザー(名前なし)として接続を試みない
krb5 Kerberosバージョン5認証を使用する
krb5i Kerberos認証とパケット署名を使用する
ntlm NTLMパスワードハッシュを使用(デフォルト)
ntlmi署名付きのNTLMパスワードハッシュを使用します(/ proc/fs/cifs/PacketSigningEnabledがオンの場合、またはサーバーが署名を必要とする場合もデフォルトにすることができます)
ntlmv2 NTLMv2パスワードハッシュを使用する
ntlmv2iパケット署名でNTLMv2パスワードハッシュを使用する
[この[secパラメータ]は開発中であり、cifsカーネルモジュール1.40以降で利用可能になる予定です]
ヘルプが必要な場合は、マウントオプションまたはfstabのエントリと、マウントしようとしたときに表示されるエラーメッセージを投稿してください。
オリジナルのポスター Paul Rosas は、rc.local
にコマンドを追加することで問題を解決でき、解決策を このコメントに報告しました および その後続のコメント 。
解は次のように表示されます。
テキストエディタで/etc/rc.d/rc.local
を開きます。
[Ubuntuの新しいバージョンでは、このファイルが常に 存在するか、デフォルトで使用されるわけではないことに注意してください ]
これらの2行をファイルに追加して、Ubuntuが起動するたびにcifs
モジュールがロードされ(まだロードされていない場合)、テキスト0x81
が `SecurityFlags:
modprobe cifs
echo 0x81 > /proc/fs/cifs/SecurityFlags
ファイルを保存して、テキストエディタを終了します。
私はそれがこのように「現れる」と言います、なぜなら私が2つの別々のコマンドであると信じているものの間の改行を含む空白についての情報がコメント に表示されないからですSecurityFlags
だけではなく、/proc/fs/cifs/SecurityFlags
の完全なパスが使用されました(または、その前にcd
コマンドが追加されました)。それ以外の場合、ソリューションは機能しません。
より永続的な解決策として、SecurityFlagsの値を設定するために dev ルールを作成することをお勧めします。これにより、cifsモジュールがロードされるたびに値が設定されます。ルールは/etc/udev/rules.dで定義します。
50-cifs-securityflags.rules:
# Set SecurityFlags to 0x81.
ACTION=="add", SUBSYSTEM=="module", KERNEL=="cifs", RUN+="/bin/sh -c 'echo 0x81 > /proc/fs/cifs/SecurityFlags'"
次に、udevadm control --reload-rules && udevadm trigger
を使用してudevをリロードします