Setkávám se s problémem, při kterém funguje připojení vzdáleného serveru CIFS bez položky fstab, ale připojení prostřednictvím fstab ne .
Následující příkaz funguje:
$ sudo mount -t cifs //w.x.y.z/Home$ /mnt/dir -o domain=A,username=B,password="C",sec=ntlmssp,file_mode=0700,dir_mode=0700
Pokud však místo toho přidám následující řádek do / etc / fstab a pokusím se připojit příkazem mount
(např. mount -a
nebo mount /mnt/dir
), zobrazí se mi uvedená chyba níže:
$ tail -n 1 /etc/fstab //w.x.y.z/Home$ /mnt/dir cifs domain=A,username=B,password="C",sec=ntlmssp,file_mode=0700,dir_mode=0700
chyba:
$ sudo mount /mnt/csif mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Explicitní nastavení příkazu dump a fsck pass na 0 nepomůže. Zdá se, že oba příkazy dělají totéž.
Odpovědět
Když zadáte příkaz mount, část password="C"
je nejprve zpracován shellem a stává se password=C
, než se dostane k příkazu mount. U položek fstab se to nedělá, takže musíte odstranit jednoduché uvozovky. Pokud vaše heslo obsahuje speciální znaky, můžete je nahradit jejich osmičkovým kódem, zejména \040
pro mezeru.
Komentáře
- Potřeboval jsem použít uvozovky, abych zabránil interpolaci speciálních znaků v hesle. Odstranění uvozovek ve spojení se nahrazením osmičkových hodnot pro speciální znaky hesla ' můj problém vyřešilo. Děkujeme.
Odpověď
Je dobrým zvykem vyhnout se zadávání hesel přímo do /etc/fstab
(který je obvykle čitelný na světě). Místo toho je vložte do souboru a odkazujte na něj takto:
//w.x.y.z/Home$ /mnt/dir cifs credentials=/home/username/cifs.creds,sec=ntlmssp,file_mode=0700,dir_mode=0700
/home/username/cifs.creds
je vlastněn vhodným uživatelem (buď rootem, nebo uživatelem, který odpovídá uživateli SMB, který vlastní sdílenou složku SMB), a chmod og-rwx
. Obsahuje přihlašovací údaje ve formátu
domain=A username=B password=C
A
, B
a C
výše musí být doslovné – neexistuje syntaktická analýza uvozovek ani zpětných lomítek.