未解決案件
mount.cifs で username と password を入れるのが面倒臭いんだけど、credentials に平文で password 書いとくのはなんか抵抗がある。
そこで、何らかの keyring 系のサービスから credentials に username と password を流し込みたい。
ところが、bash の Process Substitution である <(list) を使って以下のようにしてみたところエラーになった。
これはどうも sudo しているのが悪いらしく、sudo なしだと
redirection を用いて /proc/$PID/fd 以下を拾えばどうにかなるかなと思って、以下のようにしてみるとこれは OK
ところが mount.cifs に食わせるとエラーになる
仕方がないので、素直に /dev/stdin を食わせてみるとこれは OK
ここでふと気がついたのだが、Process Substitution、pipe、redirect では /etc/fstab から credentials に渡せないじゃないかと。
パスフレーズ解除にスクリプト使えたのは Apache - mod_ssl の話だったか?
/etc/fstab にスクリプトから生成したパラメータ渡すにはどうすればよいのだろう?
そこで、何らかの keyring 系のサービスから credentials に username と password を流し込みたい。
ところが、bash の Process Substitution である <(list) を使って以下のようにしてみたところエラーになった。
$ sudo mount -t cifs //$HOTS/$DIR $MOUNTPOINT -ocredentials=<(echo -e "username=xxx\npassword=xxx") error 2 (No such file or directory) opening credential file /dev/fd/63
これはどうも sudo しているのが悪いらしく、sudo なしだと
$ cat <(echo hello) helloのように大丈夫なのだが sudo を噛ませると以下のようにしてもエラーになる。
$ sudo cat <(echo hello) cat: /dev/fd/63: そのようなファイルやディレクトリはありません
redirection を用いて /proc/$PID/fd 以下を拾えばどうにかなるかなと思って、以下のようにしてみるとこれは OK
$ echo $$; { ls -ld /proc/$$/fd; ls -l /proc/$$/fd; sudo awk '{print "["$0"]"}' /proc/$$/fd/3; } 3< <(echo hello) 4761 dr-x------ 2 kou kou 0 6月 5 10:07 /proc/4761/fd 合計 0 lrwx------ 1 kou kou 64 6月 5 10:07 0 -> /dev/pts/0 lrwx------ 1 kou kou 64 6月 5 10:07 1 -> /dev/pts/0 lrwx------ 1 kou kou 64 6月 5 10:07 2 -> /dev/pts/0 lrwx------ 1 kou kou 64 6月 5 10:08 255 -> /dev/pts/0 lr-x------ 1 kou kou 64 6月 5 14:53 3 -> 'pipe:[527107]' lr-x------ 1 kou kou 64 6月 5 14:46 63 -> 'pipe:[527107]' [hello]
ところが mount.cifs に食わせるとエラーになる
$ { sudo mount -t cifs //$HOST/$DIR $MOUNTPOINT -ocredentials=/proc/$$/fd/3; } 3< <(echo -e "username=xxx\npassword=xxx") error 13 (Permission denied) opening credential file /proc/4761/fd/3
仕方がないので、素直に /dev/stdin を食わせてみるとこれは OK
$ sudo mount -t cifs //$HOST/$DIR $MOUNTPOINT -ocredentials=/dev/stdin < <(echo -e "username=xxx\npassword=xxx")
ここでふと気がついたのだが、Process Substitution、pipe、redirect では /etc/fstab から credentials に渡せないじゃないかと。
パスフレーズ解除にスクリプト使えたのは Apache - mod_ssl の話だったか?
/etc/fstab にスクリプトから生成したパラメータ渡すにはどうすればよいのだろう?
タグ
コメントをかく