sudo mount したときに、ログインユーザーでのパーミッションをつける
Ubuntu でファイル共有などファイルシステムを mount するとき、 sudo を使うのでマウントポイントが root の持ち物になってしまう。
するとせっかくマウントしたのに書き込もうとするたびに sudo しなきゃならなくなり、あまりにも馬鹿ばかしい。
対処法は、 -o オプションで uid と gid を渡すこと。(あるいは sudoers で mount 権限を追加するってのもアリだよね…)
$ # samba 共有をマウントする例 $ sudo mount -t cifs\ -o uid=1000,gid=1000,username=<your account>\ //server/share dir # enter your file share password
ただ、ログインしているユーザーのユーザー ID やグループ ID がどちらも 1000 固定だなんて仮定するのはあまりにも不精。ログインユーザーの ID は id コマンドで確認できます。
$ id
せっかくなので、 id コマンドの返す結果をもとにマウントに渡すオプションを組み立てるようにしてしまいましょう。
2013/10/30 更新
$ sudo mount -t cifs\ -o uid=$(id -u),gid=$(id -g),username=<YOUR ACCOUNT>\ //server/share dir
以下は初出時の情報。環境変数をその場で定義して後続コマンドに渡す例として、参考にはなるかも。
$ MYID=`id | sed 's/\(uid=[^(]*\).*\(gid=[^(]*\).*/\1,\2/'`\ bash -c 'sudo mount -t cifs\ -o $MYID,username=<your account>\ //server/share dir
※sudo mount -o `id | sed ...` のように、バッククォート使ったら環境変数で結果を渡すみたいな面倒を避けられるんじゃ?とおもったのですが、そうすると uid,gid が root になってしまい問題がもとにもどってしまうのでした。