Thursday, February 07, 2019

macOS mojaveのファイル共有でハマった

20190207 mojave

Mac miniのHDDが飛んだ

年始にファイルサーバのHDDが飛んだので、ちまちまと復旧作業をしていた。サーバはMac mini Server (Late 2012)。2台のHDDを内蔵していたが、そのうちのシステムが壊れたようだ。もう1台の内蔵HDDにはほぼ何もデータを入れてなかったので、ここにシステムを移行することにした。メールを遡ると、2013年11月に購入していたので、もうまる5年も動いていた。ファイルサーバなので、停電以外では電源を落とさないし、よく動いていたと思う。

TimeMachineでバックアップは取っていたが、いろいろ細かいカスタマイズが積み重なっていて、ごちゃごちゃしていたので、TimeMachineからの復旧ではなく、新規インストールを選択した。これがトラブルの原因だったかもしれない。とりあえず、そこらに転がっているiMacにデータの入ったHDDを接続して、最低限のデータにアクセスできるようにした上で、復旧作業を開始。

どういう方向で修正するか

チームごとに割り振っていたアカウントを個人ごとに変更。グループなども新しく作ってファイル共有したのだが、まず引っかかったのは、「Server」アプリの機能が減ったこと。ちょっと調べればわかるが、すでにプロファイルマネージャーとしての役割しかなく、単にファイルサーバに使いたいだけなら、もう「Server」アプリはいらない

まあこれでいいかと思うレベルまで設定して、他のスタッフにも公開したところ、トラブルが発生した。他のユーザーがサーバにコピーしたファイルに進入禁止マークがついているとのこと。親フォルダからアクセス権を継承しないのだ。これには参った。よく考えてみれば当然かもしれないが、それではファイルサーバとしては使えない。

スタッフには「smb://192.168.x.yy」でログインしろと指示したのだが、どうにもうまくいかない。そもそもアクセスできないとダイアログが表示されるらしい。自分の手元の環境ではアクセスできたのに…と話を聴いてみると、OSがMacOS X 10.6なのである。10.6。10.6。10.6。AFPは全廃するつもりだったが、仕方なくAFPを生かして「afp://192.168.x.yy」も許可する。それでもアクセス権の問題は解決しないのだが。

他のOSでやってみる?

Windowsの共有と同様、ファイルのアクセス権共有サービスの権限(システム環境設定の「共有」から設定できる項目)は別に設定できるものの、デフォルトでは共有サービスの権限はファイルのアクセス権を参照しているようだ。両方が異なる設定にできるのか、異なる設定にしたときに問題は生じないのか、かなり検索したつもりだが、ほとんど情報がない。ファイルサーバを立てる人はMacを使わないんじゃね?とも思えた。PC+LinuxでSambaか、高価な業務用NASを買ってくるかだろう。両方とも検討したが、前者はMacからコピーしたファイルの扱いがどうなるのか、実際にはテストしないとわからない。Linuxサーバの構築からやらないといけない上に、本当に使えるのかがわからない。マシンも買わないといけないし、投資コストが無駄になるとキツイ。ということで、Sambaの案は却下。

後者はベアドライブを内蔵するタイプなので、ベアドライブがいっぱいになったら、NASそのものを増やす必要がある。昔はNASを社内にどんどん増設していたが、今のシステムにした理由が「ディスクを一元管理できること」「バックアップなどが柔軟に設定できること」だったので、NASがどんどん増えていくネットワーク設計は選択できない。今のシステムなら、ディスク容量が足りなくなれば、外付けHDDを買ってきて繋げばいい。さすがに、4TBとか8TBを超えるフォルダが出てくれば、別々のディスクにデータを格納し、マウントポイントを増やす必要があるが、まあ、4TBのフォルダに入っているデータが新しいデータと同じ場所に入っている必要はなかろう。古いデータ置き場として物理的に別ディスクにしておいてもいいはず。また、バックアップはソフトの設定で細かく管理できるし、ログも取れる。なぜかロールバックしたファイルが時々あってバックアップに失敗したというメッセージが飛んでくるが、これはこれで生きてる証拠なので悪くない。

もう一つ、クラウドに全面移行するという手も考えたが、これはこれで大変なコスト増になる。さすがにちょっと厳しいので却下。

ということで、何とか現状のようにMacでやりたい。

再びアクセス権の問題へ

フォルダ内に変更があれば、Automator→AppleScriptでアクセス権を親フォルダから継承するスクリプトがあればいいんじゃね?と思ったのだが、まずはAppleScriptを勉強しないと…というワシには無理。もうアカウントを全部削除して、全員同じアカウントでログインすれば、(セキュリティ以外の)問題は生じないだろうと諦めかけたところで、上の画像の設定をAppleのフォーラムで発見した。

(追記ここから)

世の中には、いい人もいるもので、Automatorでスクリプトを書いてくれているのを発見した。

automatorで共有フォルダを監視… - Apple コミュニティ
https://discussionsjapan.apple.com/thread/110210585

(追記ここまで)

ボリュームの「情報を見る」で「このボリューム上の所有権を無視」にチェックを入れれば、所有権に関係なくアクセスができる。どう考えてもセキュリティ的に厳しいのだが、システム環境設定の「共有」の指定は有効なはずだし、毎日データを全コピーでバックアップしているので、最悪前日のデータには戻せる。ということで、この設定を有効にした。システムドライブには絶対にやらないほうがいいし、データドライブも別の方法でもとに戻せるとわかっていなければ、やらないほうがいい設定だし、そもそもこれは本当の意味での裏技なので、どうしても他の方法が使えないときに腹をくくって(自分のスキル不足を認識した上で)やるべきだろう。

さて、これでもういいだろう、と思ったところ、なぜかAFPが無効になる(ログインできない)事案が発生。全員帰宅したあとに、アクセス権を調整するため、新しいフォルダを作成してそこに全ファイルをコピー→アクセス権をちょっと変更、をほぼ全共有フォルダに実行したものの、AFPが無効なのとは関係ないだろ。なんだよこれ。「afp://192.168.x.yy」も「smb://192.168.x.yy」もダメ。で、ダメ元で「cifs://192.168.x.yy」を試してもらったら、問題なく行けた。何じゃそら。ちなみに、CIFSはSMBのバージョン1を指定して使用するときに使うプロトコル(?)。SMBと書くと、新しいバージョンを使ってアクセスしようとするが、CIFS指定ならバージョン1でアクセスする。現状では、そのほうが速いらしいし、とにかく「接続できない」トラブルがないのが必須なので、もういいやこれで。

No comments: