Come sfuggire la password per smb mount

1

Voglio montare una condivisione SMB con credenziali utente diverse. Quindi voglio usare

mount -o nodev,nosuid -t smbfs //user:pass=<word@host/share /mnt/share

Tuttavia, questo comando ha esito negativo:

-bash: word@host/share: No such file or directory

Quando provo a passare la password tramite una variabile, ottengo:

$ export PWD="pass=<word"
$ mount -o nodev,nosuid -t smbfs //user:$PWD@host/share /mnt/share
mount_smbfs: URL parsing failed, please correct the URL and try again: Invalid argument

mount su altri sistemi sembra accettare nome utente e password come opzioni di montaggio, come:

$ mount -o nodev,nosuid,domain=mydomain,username=user,password="pass=<word" -t smbfs //host/share /mnt/share 

o tramite un file di credenziali:

$ cat credentials.txt
username=user
password=pass=<word
domain=mydomain
$ mount -o nodev,nosuid,credentials=./credentials.txt -t smbfs //host/share /mnt/share 

Tuttavia, entrambi i modi non sono disponibili con il mount di macOS:

mount_smbfs: -o credentials: option not supported
mount_smbfs: -o domain: option not supported
mount_smbfs: -o username: option not supported
mount_smbfs: -o password: option not supported

Quindi la domanda è: come fornire la password a mount_smbfs di macOS? Sono consapevole che la modifica della password risolverà il problema, ma per ragioni questa non è un'opzione.

    
posta PVitt 05.07.2018 - 12:59
fonte

3 risposte

0

Anche quando si esegue l'escape dei caratteri rilevanti di bash ( < nell'esempio) tramite \ o passando la password tramite una variabile come

$ export PASSWORD="pass=<word"
$ mount -o nodev,nosuid -t smbfs //user:${PASSWORD}@host/share /mnt/share

mount non riesce a analizzare l'url a causa del fatto che < è anche un carattere speciale per gli URL:

mount_smbfs: URL parsing failed, please correct the URL and try again: Invalid argument

Quindi dobbiamo anche sfuggire al carattere < per gli URL, che è %3C , in modo che pass=\<word diventi pass=%3Cword .

Vedi Stackoverflow per ulteriori informazioni e un elenco dei caratteri con codifica url .

    
risposta data 10.07.2018 - 10:38
fonte
2

Leggermente off-line, ma forse utile se si desidera mantenere le credenziali con caratteri speciali in una variabile Shell. Riguardo ai tuoi comandi bash, ti indicherò vari argomenti:

  1. PWD è una variabile ENV sempre presente che mostra il funzionamento corrente directory (Stampa directory di lavoro). Ometti di usare quel nome per una variabile PassWorD: -).
  2. C'è una differenza significativa nell'uso di virgolette doppie e singole citazioni. Le virgolette abbracciano una stringa, che può anche contenere nomi di variabili espandibili ed è sempre soggetta a problemi di escape. Le virgolette singole definiscono una stringa di correzione e saranno trattate come tali, ad es. nessuna espansione variabile verrà eseguita.

Esempio:

# fix string
tatooine-2257:~ mallert$ export P='<word'
tatooine-2257:~ mallert$ echo $P
<word
# no variable expansion
tatooine-2257:~ mallert$ export P='<word $PWD'
tatooine-2257:~ mallert$ echo $P
<word $PWD
tatooine-2257:tmp mallert$ echo $PWD
/tmp
  1. Infine - tratta i nomi delle variabili in espansione distinguibili dal solito testo come riferito a ${variablename} . (Stile Bourne Shell)
  2. Prova open 'smb://username:password@server/share' : crea il volume mount per te. Se ometti la password, Finder te lo chiederà.
risposta data 10.07.2018 - 12:08
fonte
0

Il mio istinto è che non vuoi complicare le cose impostando una variabile e vuoi sfuggire a ogni punteggiatura con il carattere \.

Il < sarà super problematico per bash

La prossima cosa che potresti provare è quotare la stringa argomento problematica con virgolette singole, ma ho avuto più fortuna con la barra rovesciata che sfugge caratteri di comando in bash singolarmente.

Quindi se vuoi che bash lo veda:

mount -o nodev,nosuid -t smbfs //user:pass=<word@host/share /mnt/share

devi digitare questo:

mount -o nodev,nosuid -t smbfs //user:pass=\<word@host/share /mnt/share
    
risposta data 09.07.2018 - 15:44
fonte

Leggi altre domande sui tag