Modo seguro para montar um compartilhamento cifs protegido por senha no mac

6

Estou mantendo uma rede heterogênea de mac e linux, então decidi criar um pequeno script perl para unificar as estratégias de montagem entre as máquinas.

Na verdade, eu já tenho um script perl funcionando, no entanto, a senha parece fazer parte da linha de comando que eu não gosto:

 mount_smbfs -d 755 -f 755 //username_here:[email protected]/cifs_share

Tentei ler as man pages para mount_smbfs e nsmb.conf, mas ainda estou confuso sobre como avançar.

Minhas máquinas são Snow Leopard, Leopard e Lion.

    
por icasimpan 09.03.2012 / 09:35

3 respostas

6

Uma solução mais segura do que a proposta pelo SvenW, e mais compatível com o jeito Apple de fazer as coisas, é adicionar a senha ao chaveiro. Veja como você faria isso para um compartilhamento AFP (suponho que tudo que você precisa fazer é alterar o protocolo especificado pela opção -r, mas não tenho a possibilidade de testar isso com o SMB agora; observe que o espaço em branco em "afp" é intencional e necessário e eu só usei isso em um ambiente 10.6):

sudo security add-internet-password -a "username_here" -D "Network Password" -r "afp " -l "cifs_share" -s "myserver.com" -p "cifs_share" -w "password_here"  -T "/System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthAgent"

Aqui está a parte relevante da página man do comando security :

add-internet-password [-h] [-a account] [-s server] [-w password] [options...] [keychain]
            Add an internet password item.

            -a account      Specify account name (required)
            -c creator      Specify item creator (optional four-character code)
            -C type         Specify item type (optional four-character code)
            -d domain       Specify security domain string (optional)
            -D kind         Specify kind (default is "application password")
            -j comment      Specify comment string (optional)
            -l label        Specify label (if omitted, service name is used as default label)
            -p path         Specify path string (optional)
            -P port         Specify port number (optional)
            -r protocol     Specify protocol (optional four-character SecProtocolType, e.g. "http", "ftp ")
            -s server       Specify server name (required)
            -t authenticationType
                            Specify authentication type (as a four-character SecAuthenticationType, default is "dflt")
            -w password     Specify password to be added
            -A              Allow any application to access this item without warning (insecure, not recommended!)
            -T appPath      Specify an application which may access this item (multiple -T options are allowed)
            -U              Update item if it already exists (if omitted, the item cannot already exist)

            By default, the application which creates an item is trusted to access its data without warning.  You can remove this default access
            by explicitly specifying an empty app pathname: -T "". If no keychain is specified, the password is added to the default keychain.

A mesma coisa deve funcionar para um compartilhamento SMB, mas observe que o mecanismo de correspondência de entradas de chaves é bastante específico (por exemplo, exigir espaços em branco ímpares no nome do protocolo), portanto, é necessário testar e ser preciso sobre como armazenar senha. Quando usei essa abordagem pela primeira vez, descobri que, para acertar os parâmetros, ajudou primeiro criar a senha no keychain por meio da GUI (ou seja, montar o compartilhamento no Finder e marcar a caixa para salvar as credenciais de autenticação no keychain) e trabalhar para trás, examinando a entrada resultante no chaveiro.

Como observado por SvenW, o conjunto de chaves precisa ser desbloqueado para que essa abordagem funcione, mas isso deve acontecer automaticamente quando o usuário fizer login e não deve ser um problema com base na sua descrição. Eu também gostaria de confirmar que o Kerberos realmente funciona em 10.5 e 10.6, mas é problemático em 10.7.

    
por 11.03.2012 / 13:55
5

Coloque um arquivo ~ / Library / Preferences / nsmb.conf com o seguinte conteúdo no diretório home do usuário que você quer montar:

[myserver.com]
username=username_here
password=password_here

Depois disso, você pode simplesmente fazer

mount -t smbfs -o -d=755,-f=755 //myserver.com/cifs_share /mountpoint 
    
por 09.03.2012 / 10:02
0

Para mim, foi uma questão de olhar para o que estava no meu chaveiro

e correspondendo a ao meu auto_smb map ...

/../Volumes/ServiceData -fstype=smbfs,soft ://home._smb._tcp.local/ServiceData

    
por 24.11.2015 / 21:19