web-dev-qa-db-ja.com

/ proc / fs / cifs / SecurityFlagsを永続的に設定する方法は?

/proc/fs/cifs/SecurityFlagsを編集して、cifsマウントを正しくマウントできるようにしました。 (値0x81を使用する必要がありました。)

SecurityFlagsを編集するにはmodprobe cifsと入力すると、/proc/fs/cifsディレクトリが表示されます(このコマンドを入力する前は表示されません)。

再起動後、SecurityFlagsの値がデフォルトの0x7にリセットされました。

これを永続的に設定して、再起動後に0x81値を保持するにはどうすればよいですか?

1
Paul Rosas

カーネルのコンパイル時にオプションとして設定されます

/ 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のエントリと、マウントしようとしたときに表示されるエラーメッセージを投稿してください。

1
Panther

オリジナルのポスター Paul Rosas は、rc.localにコマンドを追加することで問題を解決でき、解決策を このコメントに報告しました および その後続のコメント

は次のように表示されます

  1. テキストエディタで/etc/rc.d/rc.localを開きます。

    [Ubuntuの新しいバージョンでは、このファイルが常に 存在するか、デフォルトで使用されるわけではないことに注意してください ]

  2. これらの2行をファイルに追加して、Ubuntuが起動するたびにcifsモジュールがロードされ(まだロードされていない場合)、テキスト0x81が `SecurityFlags:

    modprobe cifs
    echo 0x81 > /proc/fs/cifs/SecurityFlags
    
  3. ファイルを保存して、テキストエディタを終了します。

私はそれがこのように「現れる」と言います、なぜなら私が2つの別々のコマンドであると信じているものの間の改行を含む空白についての情報がコメント に表示されないからですSecurityFlagsだけではなく、/proc/fs/cifs/SecurityFlagsの完全なパスが使用されました(または、その前にcdコマンドが追加されました)。それ以外の場合、ソリューションは機能しません。

1
Eliah Kagan

より永続的な解決策として、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をリロードします

1
bac0n