スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UbuntuでWindowsサーバの共有フォルダをマウント

UbuntuでWindows共有フォルダに楽々アクセス!

Linuxをデスクトップ用途として利用していると、どうしてもWindowsとファイル共有をする必要が出てきますね。今回は、Windowsサーバのファイル共有を楽に行いたいという事で試行錯誤しました。

悩んでいたのが、解決したのでメモしておきます。ハマった点は一番下。
Windowsの共有名で"$"がついているケースで失敗した。



LinuxでWindowsの共有フォルダをマウントする方法を調べてみるといくつか方法が
あるようです。

マウントいろいろ
 ①コマンドでその都度マウントする
 ②/etc/fstabを利用し、Linux起動時にマウントする
 ③autofsを利用し、必要なときに自動でマウントする

全部試してみましょう。




目標
 ・Ubuntu12.04で、Windowsサーバ(Windows2008)の共有ディレクトリを参照する。
 ・Nautilus(GnomeのGUIファイルマネージャ)からGUIでアクセスできるようにしたい

前提
 ・サーバのディレクトリ名:share
 ・ローカルでのディレクトリ名:server-share
 ・ユーザ:user1
 ・user1のサーバのパスワード:user1-passwd
 ・サーバのIP:192.168.0.100
 ※ユーザIDとパスワードはローカルとサーバで同じにしています。マウントコマンドで出てくるID/Passwordはすべて接続先のサーバのID/Passwordと読み取ってください。

事前準備
cifs-utilsのインストール
  $sudo apt-get install cifs-utils





①コマンドでのマウント
まずは、手動でマウントしてみます。

1.マウントポイントの設定

マウントポイント(ディレクトリ)を作成。仮にserver-shareとする。
※慣習的にマウントポイントは、"/mnt"に作るらしい。が、自分のホームディレクトリにも作成可能。ちなみに、Ubuntuの場合ホームディレクトリ配下にマウントすると、マウントのメッセージが出てきた。

$mkdir /mnt/server-share



2.マウント


あとは"mount"コマンドを利用して、マウントポイントにファイルサーバのディレクトリをマウントする。
イメージ的には、マウントポイントというショートカットに実サーバをリンクする感じ?
(間違えてるかも)
   
root権限が必要なためUbuntuの場合"sudo"をつけてあげる必要がる。パスワードを聞かれるので、サーバのログインパスワードを入力。

入力コマンド
$sudo mount -t cifs //サーバ名/共有フォルダ名 /マウントポイント -o username=USERNAME

$sudo mount -t cifs //192.168.0.100/share /mnt/server-share -o username=user1
Password:

確認してみる
$ ls -l /mnt
drwxr-xr-x 1 root root 4096 7月 31 20:35 server-share/


これで完了!

ただし、結果でわかるとおりこのフォルダの所有権がrootになっており、一般ユーザの書き込みができない。
書き込みが必要な場合、少しおまじないが必要となる。

$sudo mount -t cifs //192.168.0.100/share /mnt/server-share -o username=user1,uid=1000,gid=1000

これは、利用したいユーザ(自分)に権限を割り当てる意味となっているらしい。
これをつけて実行すると

$ ls -l /mnt
drwxr-xr-x 1 user1 user1 4096 7月 31 20:35 test/


となっており、読み書きが可能となる。
uidとgidはそれぞれ、/etc/passwdの該当ユーザの右側の数字を見る。


3.アンマウント


利用が終わったら、アンマウント(取り外し)を行う。

umountコマンドで、引数にはマウント先のフォルダ名を入れる。
root権限で実行します。

$ sudo umount /mnt/server-share





② /etc/fstabでの自動マウント

いつも使いたいディレクトリなどをいちいちマウントするのはめんどくさい!
/etc/fstabを利用することで自動にマウントすることが可能となりますよ。


1.マウントポイントの設定

$mkdir /mnt/server-share



2./etc/fstabの編集

vi等で/etc/fstabの最下行に以下を追加。

//192.168.0.100/share /mnt/server-share cifs username=user1,password=user1-passwd,uid=1000,gid=1000 0 0

ちなみに最後の「0 0」は
前者が:ファイルシステムをdumpするかどうか
後者が:システム起動時にfsckチェックを行うかどうか
という意味らしい。
詳しいパラメータは、「fstab 書式」でgoogle先生に聞いてください(適当)


終了。
再起動して、想定のディレクトリ(ここでは/mnt/server-share)マウントされていることを確認する。

ちなみに、/etc/fstabにパスワードを記載することに抵抗がある場合はその部分を外部ファイルに持つことも可能らしい。「credentials」というキーワードで検索してね♪


※アンマウントは、手動マウントと同じです。






③ autofsでの自動マウント

いつもは使わないんだけど、たまに利用する。でも手動はめんどくさい!
そんな場合は"autofs"がお勧めです。

1.事前準備

autofsのインストール
$sudo apt-get install autofs



2./etc/auto.serverの作成
/etc/auto.XXXのXXX部分は好きな名前でいいのですが今回はserverとしました。

vi等で/etc配下にauto.serverを作成。
中身としては

/mnt/server-share -fstype=cifs,rw,username=user1,password=user1-passwd,uid=1000,gid=1000 192.168.0.100:/share



3./etc/auto.masterの編集

vi等で、/etc/auto.masterの最下行に先ほどのファイルを指定。

(略)
#+auto.master

/- /etc/auto.server --timeout 60

ここの60は、60秒アクセスがない場合自動でアンマウントするという意味です。


4.autofsの再起動

$sudo service autofs restart



5.確認

autofsはフォルダにアクセスした時に初めてマウントするため、ファイルマネージャ(Nautilus)やcdコマンドで当該ディレクトリに
移動してファイルが表示されるか確認する。移動後、mountコマンドで確認してみてもOK。
60秒たったあとmountコマンドで再度確認すると、アンマウントされている。よしよし。
※ちなみに、ディレクトリ開いたままだといつまでもアンマウントされません。



●GUIでのアクセス
上記マウントポイントに対して、Nautilusでブックマークを貼ってあげれば良い。
該当フォルダを開いて、メニューから「ブックマークの追加」をしてあげると左側のツリーに表示される。(Nautilus)
※そのディレクトリに入ってからやらないとダメです。



●マウント状態の確認(共通)
mountコマンドの出力
※以下は、/etc/fstabとautofsを同時に実行したケースです。
(※autofsの方は、server-share2としてマウントしました)
$ mount
(略)
//10.82.12.11/share on /mnt/server-share type cifs (rw)
10.82.12.11:/share on /mnt/server-share2 type cifs (rw)



●メリット・デメリット

・/etc/fstab
 → Linux起動時に共有サーバがDownしているとちょっと問題がある(忘れた)


・autofs
 → アクセス時にいちいちマウントするため、ワンテンポ遅れる
 → 自動でアンマウントしてくれるので便利
 → 手動・fstabと異なり事前にマウントポイントを準備する必要がない!

たしか、テストしている時にBootの時にアクセス出来なくて困った事があったので、autofsにしました。





●Windowsの共有名に関して
上では書きませんでしたが、Windowsで共有フォルダ名が「Share$」のように"$"がついているケースがあります。
今回調べて知ったのですが、どうやらこれには意味があるらしい。

fstabの時はうまく行ったのですが、autofsでこの"$"がついている共有名のフォルダで失敗していました。具体的には、アクセスが出来なくて/var/log/syslogに

CIFS VFS: cifs_mount failed w/return code = -6

が表示されてアクセスできない。
このログがいまいちネットに載っていなかったので、関連しているかは不明ですが結果として、autofsの書式で
/mnt/server-share -fstype=cifs,rw,username=user1,password=user1-passwd,uid=1000,gid=1000 192.168.0.100:/share$
ではなく、$の前にエスケープシーケンスを入れてあげるらしい。
/mnt/server-share -fstype=cifs,rw,username=user1,password=user1-passwd,uid=1000,gid=1000 192.168.0.100:/share\$
※実際はバックスラッシュ
これでうまく行きました。

こちらのサイトを参考にさせていただきました。$の理由などもあり、勉強になりました。



謎だったのが解決してよかった。




スポンサーサイト

テーマ : UNIX/Linux
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

Author:Opecha-DaDa
ニッチな技術メモ的なブログになりつつありますが、だからこそあなたのお役に立てる内容があれば幸いです。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。