”Linuxを使う”というと、まずはサーバーOSとしてのイメージが強くて、よくあるのはファイルサーバーやプリントサーバーを運用することです。Windowsパソコンを使っていて、LANも構築されている場合、複数ユーザーが大容量のファイル保管庫が必要だとする。そういう場合にLinuxのファイルサーバーを運用して、Windowsパソコンから使えるようにする。
そのためのソフトがsambaです。sambaでWindows向けファイルサーバー(プリントサーバーも)を構築し利用します。
それじゃ、sambaやりますか・・・という時、市販の参考書籍も様々ありますが、ネットワーク上にもたくさん情報がありますので、検索して情報を取得してやればいい・・・と思っていました。皆さん、そうですよね?(笑)ファイルサーバーの運用くらいネット上の情報でなんとかなりますよ・・・なんてね。
はい、そこで検索するとたくさん情報が出てきますが、みんなちょっとずつ詳細が違う(汗)
まあね、Linuxもディストリビューションが様々あるし、バージョン(リビジョン)によって微妙に違うかもしれない。そういうことは理解できますから、それぞれの環境での情報なんでしょう。
よし、とにかくやってみよう。
ITに限らず何でもやってみることが大事です。机上で勉強しているだけではイマイチわからないことも、やってみて経験すると理解できることが多いのです。
とりあえずこれなんかどう?と思う資料を元にして、その情報の通りにやります・・・うまくいきません(苦笑)
次に違う記事を参照して、その情報の通りにやります・・・うまくいきません(汗)
さらにもう一つをじっくり読んで、どこが前のと違うかを見ながらやってみます・・・うまくいきません ^_^;
どううまくいかないかと言うと・・・sambaの設定ファイル(/etc/samba/smb.conf)を編集してそれでsambaを再起動するわけですが、エラーメッセージが出たりする。または、テスト用のコマンド(testparm)を実行してみるとエラーメッセージが出る。つまり設定内容に不具合がある訳です。
テストがうまくいったように見えて、いざ、WindowsPCからアクセスしてみると、記事に書いてある通りにやっても、その通りにならない・・・う〜ん、ダメじゃん。
Linuxで何か手の込んだことをやろうとすると、まあこういう事態に陥ります。よくあることです。もっとも、Windowsではそういう事は無いのか・・・というとそうでもなく、やはりうまく行かないことがありますが、ある一定のところまでは製品の提供者(企業)やソフトの提供者が、非常に念入りに用意をしてくれていて、うまくできるようになっているのがWindowsです。利用者が多くて、ビジネスとして成り立つというのはそういうことですね。
無料で何でもやってやろうというLinuxではそうはいかない。最後は自分で調べ、自分で考えて結果を出す・・・ワタシ的には、元技術者の意地もあります(笑)
能書きを垂れましたが、せっかくなので、私の経験からポイントを紹介しておきます。結果を言っておくと、sambaのファイルサーバーは動いて、Windowsから使えてます。ドヤ(笑)
まずは私の環境の前提から書いておきます。
- OSはLinux Mint 20.3 Una 64ビットで、カーネルはLinux 5.4.0-125-generic x86_64です。
- ファイルサーバーにしたパソコンは固定のIPアドレスにしてあります。
- sambaのバージョンはVersion 4.13.17-Ubuntuです。(インストールしたもの)
色々やってみて、うまくいかなかった情報(記事)から読み取れた「共通する内容」は以下のようなことです。ある程度は想定通りのことですが、ファイルサーバーを運用するための手順概要は以下の通りで、これをやれば良い。
- Linuxパソコン(サーバー)にsambaをインストールする
- 共有フォルダを決め、必要ならフォルダ(Linuxでは”ディレクトリ”といいます)を作成する
- sambaの設定ファイル(/etc/samba/smb.conf)に必要な設定内容を追加・編集する
- sambaを再起動する。また、パソコン(OS)起動時に再起動するように設定する・・・これは本来のやり方でできているか怪しいが、一応、動いてます
- Windowsパソコンからアクセスする
結果的にはこれでうまくいった・・・という内容を次に書いておきます。内容は少々、詳細にわたるので長い記事になります。必要な人は見て下さい。
sambaのインストール
Linuxの端末(ターミナル)を開いて、コマンドプロンプトから
$ sudo apt-get update
$ sudo apt-get install samba
Linuxがある程度分かっていれば知っていると思いますが、コマンドプロンプトは使っている環境や、どのディレクトリにいるかで表示が違います。上記ではとりあえず、$としています。
Linuxの管理者(root)での処理を必要とするので、コマンドの頭に sudo を付けて実行しますが、管理者パスワードを聞いてくることがあるので、その場合はパスワードを入力してください。
インストールが成功すれば、sambaを起動しエラーメッセージがないことを確認。さらにsambaのバージョンを確認して、バージョン情報が戻ってくれば問題ないと思います。
$ samba
$ samba –version
(バージョンを調べるコマンドのオペランドは “–version”で、表示が分かりにくいですが、versionの前に半角の”-“を2つ付けます)
共有フォルダを作成する
共有フォルダを、/samba/share とします。どの場所に共有フォルダを置くのが良いかは自分で決めます。この場合は share というディレクトリを共有フォルダにしています。
ルートディレクトリ直下に置くとか、上記のようにルート直下にsambaというディレクトリを作ってその下に置くとか、/home の下に置くとか、/varの下に置くとか・・・いろいろ考えられますね。共有フォルダ名も上の例では shareとしましたが、何でも構いません。ただ共有フォルダ名とパス名(ディレクトリ名)は一致させておくのが良いと思います。
$ sudo mkdir /samba
$ sudo mkdir /samba/share
$ sudo chown nobody:nogroup /samba/share
$ sudo chmod 0777 /samba/share
共有フォルダのディレクトリを作成したら、所有者・所有グループを nobody:nogroup に変更して誰でもアクセスできるようにします。
さらに属性を0777(フルコントロール)に変更しておきます。
mkdir 、chown、chmodなどのコマンドについては、Linuxの基本コマンドを確認して下さい。
samba設定ファイルの編集(内容の追加)
samba設定ファイルは、/etc/samba/smb.conf です。編集する前にファイルのオリジナルを何か別名でコピーしてバックアップしておくのが懸命です。例えば、以下のようにsmb.conf.orgに編集前のファイルをコピーしておきます。このコピーの処理は管理者権限でないとできないので、sudo を付けて実行します。
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.org
エディタを使って以下の内容をファイルの最後(一番下)に追加します。設定ファイルは管理者権限でないと編集(書き込み)できません。私は書き込み時に管理者権限で書き込むことができるエディタのKATEを使いました。端末ウィンドウでxeditなどのエディタを使用する場合は、sudoを付けて起動する必要があります。KATEは書き込み時に管理者権限のパスワードを聞いてくれるので使いやすいです。
<追加内容> ※固定IPアドレスや、共有フォルダはそれぞれの環境で決めたものに変更してください。
#サーバーPCの固定IPアドレス
hosts allow = 192.168.2.100
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = linux
security = user
map to guest = bad user
dns proxy = no
ntlm auth = yes
[share]
#共有フォルダ
path = /samba/share/
#マイネットワークに表示の有無
browsable = yes
#書き込み許可
writable = yes
#ゲストユーザのログイン許可
guest ok = yes
#読込みの許可
read only = no
#ファイル属性
force create mode = 0777
#ディレクトリ属性
force directory mode = 0777
sambaの再起動、OS起動時設定の変更
設定ファイルの編集が終わったら、sambaを再起動します。sambaは2つのシステムで動いているとのことです。smbdとnmbdです。
$ sudo systemctl restart smbd
$ sudo systemctl restart nmbd
イマイチ正しくないかもしれないのが・・・私はLinux Mint上でsambaを動かそうとしているのですが、知っている人は知っている・・・Linux Mint はUbuntu系のディストリビューションです。ちなみに上記のsystemctlというコマンドは、CentOS系のコマンドでUbuntu系では違うコマンドかもしれない(汗)
色々なネット上の記事を見て試行錯誤でやったものですから、上のコマンドとしましたが、これで特に問題なく動いちゃいました。どうして?という疑問をもちながら、とりあえずは(完全ではないかもしれませんが)良しとします。
Windowsパソコンからアクセス、ネットワークドライブに割り当て
前述したように、この最後のフェーズでうまくいかなくて結構困りました。結論を言ってしまうと、sambaの設定(Linuxファイルサーバー側の設定)がうまく動いていれば、後は、次のようにしてアクセスします。
・Windowsパソコン(LANに接続済)を用意し、エクスプローラを開く。
・「PC」を選択し、アクセス場所の指定で、
¥¥192.168.2.100¥share
を入力する。
IPアドレス部分は、それぞれのファイルサーバーのIPアドレスを、そのあとの”share”は、それぞれ決めた共有フォルダ名としてください。
これでsambaの共有フォルダに(フルコントロールで)アクセスできます。(フォルダの中が見えます)
共有フォルダにアクセスするごとに上記の内容を常に入力するのは面倒ですから、ネットワークドライブの割り当てをしておくのが良いと思います。
¥¥192.168.2.100 を指定すると、shareがフォルダとして見えるはずなので、そのフォルダアイコンをマウスで右クリックし、ポップアップメニューから「ネットワークドライブの割り当て」を選びます。
ドライブを何にするか決めて(例えば、Z: とか X: )、フォルダを上記の場所にします。
¥¥192.168.2.100¥share
これで、エクスプローラの「PC」を選んだ時にドライブとして割り当てられるので、使いたい時にすぐに使えます。
以上です。これでsambaによるファイルサーバーの運用と、Windowsパソコンからのアクセスができるようになりました。
念の為の参考に、試行錯誤しながらうまく出来なかった時に考えたことを書いておきますと、sambaは動いているようなのに、ネット上で見つけた記事の通りにやっても、Windowsパソコンからのアクセスができない(共有フォルダのshareが見えない)時、もしかしたら、最近のWindowsはファイアウォールか何かで簡単に通信ができなくなっているのじゃないか・・・と考えました。それでWindows側のネットワーク設定を変更してみました。
結果としては、どうもその必要なく、上記のようにエクスプローラで指定すればアクセスができてしまったのですが、変更してみた(検討した)Windowsのネットワーク設定は以下の通りです。
(1)「ファイアウォールによるアプリケーションの許可」に関する変更
コントロールパネル(設定)>ネットワークとインターネット>Windowsファイアウォール
として、「ファイアウォールによるアプリケーションの許可」を選びます。
すると「アプリにWindows Defenderファイアウォール経由の通信を許可する」というウィンドウが開くので、その中から
・SMBDirectでのファイルとプリンターの共有
を見つけて、その部分にチェック✔を入れました。”プライベート”と”パブリック”の両方に入れています。どの項目がそれらしいか不明だったので、もう一つ、
・Netlogonサービス
にも同様に✔を付けました。
(2)ネットワークプロファイルの変更
コントロールパネル(設定)>ネットワークとインターネット>イーサネット
として、プロパティを選択し、「ネットワークプロファイル」で、「パブリック」が選ばれていたのを「プライベート」に変更しました。
これらのネットワークに関する変更をした後に、¥¥192.168.2.100¥share でアクセスできたので、設定変更が必要かと思われましたが、うちの家族が使っていたWindowsパソコンで試したところ、これらの変更は不要でした。すぐにアクセスができました(苦笑)
そういうことで、どうも不要なことまでやったようですが、勉強にはなりました。Windowsのネットワーク設定の中に、ファイアウォール関係の設定とかあるんだと分かりました。
何でもやってみると勉強になります。
Linuxでも別のディストリビューションだと、sambaの設定ファイルに何を設定すれば良いのか・・・ここで書いたものと違うかもしれません。なかなか難しい部分もありますが、面白さもありますし、最も基本となるファイルサーバーをたてることができましたので、今後もチャレンジしていきたいですね。
コメント