Como definir permanentemente /proc/fs/cifs/SecurityFlags?

Como definir permanentemente /proc/fs/cifs/SecurityFlags?

Eu editei /proc/fs/cifs/SecurityFlagspara permitir que minhas montagens cifs sejam montadas corretamente. (Tive que usar o valor 0x81.)

Para editar, SecurityFlagsdigito modprobe cifso que me permite ver o /proc/fs/cifsdiretório (não consigo vê-lo antes de digitar este comando).

Depois de reiniciar, o valor SecurityFlagsfoi redefinido para o padrão, que é 0x7.

Como definir isso permanentemente para manter o valor 0x81 após a reinicialização?

Responder1

É definido como uma opção quando o kernel é compilado

/proc é um sistema de arquivos virtual, vejahttp://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html

/proc é muito especial porque também é um sistema de arquivos virtual. Às vezes é chamado de sistema de pseudoarquivos de informações de processo. Ele não contém arquivos 'reais', mas informações do sistema em tempo de execução (por exemplo, memória do sistema, dispositivos montados, configuração de hardware, etc.). Por esta razão pode ser considerado um centro de controle e informação do kernel. Na verdade, muitos utilitários do sistema são simplesmente chamadas para arquivos neste diretório. Por exemplo, 'lsmod' é o mesmo que 'cat /proc/modules' enquanto 'lspci' é sinônimo de 'cat /proc/pci'. Ao alterar os arquivos localizados neste diretório você pode até ler/alterar os parâmetros do kernel (sysctl) enquanto o sistema está em execução.

Verhttps://www.kernel.org/doc/readme/Documentation-filesystems-cifs-README

SecurityFlags Flags que controlam a negociação de segurança e também a assinatura de pacotes. Sinalizadores de autenticação (podem/devem) (por exemplo, para NTLM e/ou NTLMv2) podem ser combinados com os sinalizadores de assinatura. Especificar dois mecanismos diferentes de hash de senha (como "obrigatório"), por outro lado, não faz muito sentido. Os sinalizadores padrão são 0x07007 (NTLM, NTLMv2 e assinatura de pacotes permitida). O máximo de sinalizadores permitidos se você deseja permitir montagens em servidores usando hashes de senha mais fracos é 0x37037 (lanman, texto simples, ntlm, ntlmv2, assinatura permitida). Alguns SecurityFlags exigem que as opções de menuconfig correspondentes sejam habilitadas (lanman e texto simples requerem CONFIG_CIFS_WEAK_PW_HASH por exemplo). A ativação da autenticação de texto simples atualmente requer também a ativação da autenticação lanman nos sinalizadores de segurança porque o módulo cifs suporta apenas o envio de senhas de texto simples usando a forma mais antiga do dialeto lanman do SMB de configuração de sessão. (por exemplo, para autenticação usando senhas de texto simples, defina SecurityFlags como 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

Você pode substituir isso com opções de montagem

Verhttps://www.samba.org/samba/docs/man/manpages-3/mount.cifs.8.html

seg= Modo de segurança. Os valores permitidos são:

nenhuma tentativa de conexão como usuário nulo (sem nome)

krb5 Use autenticação Kerberos versão 5

krb5i Use autenticação Kerberos e assinatura de pacotes

ntlm Usar hash de senha NTLM (padrão)

ntlmi Use hashing de senha NTLM com assinatura (se /proc/fs/cifs/PacketSigningEnabled ativado ou se o servidor exigir assinatura também pode ser o padrão)

ntlmv2 Usar hash de senha NTLMv2

ntlmv2i Use hash de senha NTLMv2 com assinatura de pacote

[NB: Este [parâmetro sec] está em desenvolvimento e espera-se que esteja disponível no módulo cifs do kernel 1.40 e posterior]

Se precisar de ajuda, poste suas opções de montagem ou entrada no fstab e a mensagem de erro que você recebe ao tentar montar.

Responder2

O pôster original,Paulo Rosas, conseguiu resolver o problema adicionando um comando a rc.locale relatou a solução emeste comentárioeaquele comentário subsequente.

A soluçãopareceter sido o seguinte:

  1. Abra /etc/rc.d/rc.localem um editor de texto.

    [Observe que este arquivo nem sempre épresente ou usado por padrãoem versões mais recentes do Ubuntu.]

  2. Adicione essas duas linhas ao arquivo, para que cada vez que o Ubuntu for iniciado, o cifsmódulo seja carregado (se ainda não foi) e o texto 0x81seja escrito em `SecurityFlags:

    modprobe cifs
    echo 0x81 > /proc/fs/cifs/SecurityFlags
    
  3. Salve o arquivo e saia do editor de texto.

Digo que "aparece" desta forma porque as informações sobre os espaços em branco, incluindo a nova linha entre o que acredito terem sido dois comandos separados, não são visíveisno comentário, e porque acredito que o caminho completo /proc/fs/cifs/SecurityFlagse não apenas SecurityFlagsfoi usado (ou que um cdcomando foi adicionado antes dele), caso contrário a solução não teria funcionado.

Responder3

Para uma solução mais permanente, sugerimos a criação de umudevregra para definir o valor de SecurityFlags. Isso definirá o valor sempre que o módulo cifs for carregado. Você define suas regras em /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'"

e então recarregue o udev comudevadm control --reload-rules && udevadm trigger

informação relacionada