boppanの日記

日々の備忘録

Windowsの共有フォルダをCentOSから見たい

環境

手順

CIFS を使用して Red Hat Enterprise Linux システムに Windows 共有をマウントする - Red Hat Customer Portal

  1. Windowsにフォルダを作成し、アクセス権の設定をする
  2. CentOSにフォルダを作成する
  3. CIFSプロトコルを使用してmountする

  4. 一時的に見れれば良いならmountコマンドで手動マウント

  5. 再起動しても見れるようにしたいならfstabファイルを編集する自動マウント

事前にcifsをインストールしておくこと。
yum install cifs-utils しようとしたらエラー「Repodata is over 2 weeks old」が出た - boppanの日記

マウント情報

項目
Windows IP Adresss 999.999.999.999
Windows User Name ringo
Windows User Pass apple!
Windows User Domain red.co.jp
Linux User Name ringo_l
Linux Group Name kudamono
Linux User ID 1111
Linux Group ID 2222
Windows mount Src C:/temp
Linux mount Dst /home/ringo_l/temp_l
  • マウント先の配下のファイルを読取り、変更、削除できるようにしたい。
  • ringo_lユーザーに権限を与えたい
  • ringo_lが所属するkudamonoグループにも権限を与えたい

1. Windowsにフォルダを作成し、アクセス権の設定をする

  1. C:/tempフォルダを作成する
  2. フォルダを右クリック > アクセスを許可する > 詳細な共有
  3. 共有したいユーザーがなければ、追加 > ユーザーまたはグループの選択
  4. 「場所の指定」にドメイン名(red.co.jp)を指定、「選択するオブジェクト名を入力してください」にユーザー名(ringo)を入力して「OK」
  5. 「読み取りと実行」にチェックを入れる

2. CentOSにフォルダを作成する

  1. ringo_lかrootでログイン
  2. mkdir temp_lでフォルダ作成

3. CIFSを使用してmountする

手動マウント

【Linux】【Windows】【CIFS】Windows の共有フォルダを Linux でマウント(mount)する手順 | 100%レンタルサーバーを使いこなすサイト

1. root権限でログイン(suもしくはsudo)
2. 以下のコマンド実行

mount -t cifs -o username='ringo',password='apple!',domain='red.co.jp',uid=1111,gid=2222,file_mode=0775,dir_mode=0775,vers=3.0,sec=ntlm2 //999.999.999.999/temp /home/ringo_l/temp_l --verbose

3. mountでマウントが反映されているか確認

オプション 役割
-t cifs ファイルシステムの指定
username
password
domain
共有フォルダのアクセス権限を持つWindowsユーザーを指定
uid
gid
アクセス権限を与えたいLinuxのユーザーとグループを指定。
指定しない場合既定値の0(root)が設定される
file_mode
dir_mode
与えたい権限を細かく指定(775はrwxで読取書込実行OK)
vers SMBプロトコルのバージョンを指定
sec 認証モード(ntlmやケルベロス認証)
--verbose エラーログの詳細出力(おしゃべりにする)

username、passwordの部分はcredentialsオプションで外部ファイルに外出しできる。

またLinuxActive Directoryに参加していた場合、Kerberos認証が使える。
参加してるかどうかはsudo net ads info
LinuxマシンをActive Directoryに参加させる簡単な方法 | いろんなサーバー設定研究所

その他マウント関連のコマンド

マウント解除はumount /home/ringo_l/temp_l
マウント反映はmount -a

remount

マウント解除とマウントを同時にするなら-o remount
例) mount -t cifs -o username='ringo',password='apple!',domain='red.co.jp',uid=1111,gid=2222,file_mode=0775,dir_mode=0775,vers=3.0,sec=ntlm2,remount //999.999.999.999/temp /home/ringo_l/temp_l --verbose

mountコマンドのおさらい | OpenGroove

【 mount 】コマンド――ファイルシステムをマウントする:Linux基本コマンドTips(183) - @IT

バイスとマウントポイントは変更しない。マウントオプションを変更したい際に使用する

自動マウント

【Linux】【Windows】【CIFS】Windows の共有フォルダを Linux でマウント(mount)する手順 | 100%レンタルサーバーを使いこなすサイト

1. root権限でログイン(suもしくはsudo)
2. vim /etc/fstabでfstabファイルを開いて下記を追記する

//999.999.999.999/temp /home/ringo_l/temp_l cifs username='ringo',password='apple!',domain='red.co.jp',uid=1111,gid=2222,file_mode=0775,dir_mode=0775,vers=3.0,sec=ntlm2,nofail 0 0

3. 保存後mount -aでマウントが反映されているか確認
4. 問題なければshutdown - r nowで再起動して反映されるか確認

※いきなり再起動すると、fstabが間違っていた場合にOS起動しないパターンがあったり面倒なので、必ずmount -aで先に確認する。

fstabについて - Qiita

オプション 役割
cifs ファイルシステムの指定
nofail マウントが失敗してもOSが起動するように設定(CentOS7用)
0(dump) dumpコマンドによるバックアップ対象にするか。0なら対象外。
0(pass) OS起動時にfsckがチェックする順番。0ならチェックしない。

fstabについて - Qiita

ということで、マウントに関することが書かれているファイルです。
読み込まれるタイミングは起動時やシステムマネージャの設定を再読み込みしたとき。
つまり、起動時に自動でマウントするのに使います。
fstabを変更したあと、設定を反映させるには再起動もしくはmount -aを実行する必要があり。

fstabのパスワード

Ubuntu 起動時に Windows のフォルダ共有を自動でマウントさせる - ltcmdr927atenablog

Windows 側のログオンパスワード: password=testuserpass
(password=右辺の記号はエスケープしないので test!user\pass_ など記号が入っている Windows のパスでも設定可能)

その他参考

マウントが外れる時

  • マウント元のWindowsのみを再起動した場合、マウントは外れない。
  • マウント先のLinuxのみを再起動した場合、マウント設定が消える。
  • マウント元のWindowsのフォルダ名を変更した場合、マウント設定は残るが外れてしまう。
  • マウント元のWindowsの電源をしばらく切っていた時、マウント設定は残るが外れてしまう。(mount -aでは復活しない)

マウント元のWindowのフォルダ名を変更した場合、マウント設定は残るが外れてしまう。

ls
> ls : temp_lにアクセスできません:入力/出力エラーです。

フォルダ名を変えた時点でWindows側のアクセス権限が解除されてしまう。

共有フォルダからフォルダ移動を行った際にアクセス権設定が消える

フォルダのコピー時にACLが消えてしまうのは仕様です。

ファイルとフォルダーをコピーまたは移動した時のアクセス許可の処理方法

既定では、オブジェクトは、コピー、またはその親フォルダーに移動または作成時にいずれかの親オブジェクトからアクセス許可を継承します。

フォルダ名を戻し、アクセス権限を再設定、mount -aで反映し直すと見られるようになった。

トラブル対応

CIFSマウント時のトラブル - boppanの日記