Samba は、エンドユーザーがファイル、プリンター、およびその他の共有リソースにアクセスできるようにする SMB/CIFS ネットワークファイル共有プロトコルのフリーでオープンソースの再実装です。
このチュートリアルでは、ネットワーク上の異なる OS 間でファイル共有を提供するスタンドアロンのサーバーとして CentOS 7 に Samba をインストールして構成する方法を説明します。
Users:
- sadmin – すべての共有への読み取りと書き込み権限を持つ管理ユーザー。
- josh – 自身のプライベートファイル共有を持つ一般ユーザー。
Shares:
- users – この共有にはすべてのユーザーによって読み取り/書き込み権限でアクセス可能になる予定です。
- josh – この共有は、ユーザー josh と sadmin によってのみ読み取り/書き込み権限でアクセス可能になります。
ファイル共有は、ネットワーク上のすべてのデバイスからアクセスできるようになります。 チュートリアルの後半では、Linux、Windows、macOSクライアントからSambaサーバーに接続する方法についても詳しく説明します。
前提条件 #
始める前に、CentOS 7システムにsudo権限を持つユーザーとしてログインしていることを確認してください。
Samba on CentOSのインストール #
Sambaは標準のCentOSリポジトリから利用できます。 インストールが完了したら、Sambaサービスを開始し、システムブート時に自動的に開始するようにします:
sudo systemctl start smb.servicesudo systemctl start nmb.service
sudo systemctl enable smb.servicesudo systemctl enable nmb.service
smbdサービスはファイル共有および印刷サービスを提供し、TCPポート139および445でリッスンします。
Configuring Firewall #
さて、SambaがCentOSマシンにインストールされて動作しているので、ファイアウォールを設定し、必要なポートを開く必要がある。 これを行うには、以下のコマンドを実行します:
firewall-cmd --permanent --zone=public --add-service=sambafirewall-cmd --zone=public --add-service=samba
Creating Samba Users and Directory Structure #
保守性と柔軟性を高めるために、標準のホームディレクトリ (/home/user) の代わりに、すべてのSambaディレクトリとデータは、/samba ディレクトリに置かれるでしょう。
sudo groupadd sambashare
Set the /samba directory group ownership to sambashare:
sudo chgrp sambashare /samba
Samba uses Linux users and group permission system but it has their own authentication mechanism separate from the standard Linux authentication. 我々は、標準のLinux useradd ツールを使用してユーザーを作成し、 smbpasswd ユーティリティでユーザーパスワードを設定します。
導入部で述べたように、プライベートファイル共有へのアクセスを持つ一般ユーザーと、 Sambaサーバー上のすべての共有への読み取りと書き込みのアクセスを持つ管理アカウントを作成することになります。
Sambaユーザーの作成 #
新しいユーザー名 josh を作成するには、次のコマンドを使用します:
sudo useradd -M -d /samba/josh -s /usr/sbin/nologin -G sambashare josh
useradd オプションは次の意味を持ちます:
ユーザーのホームディレクトリを作り、ディレクトリ所有権をユーザー josh とグループ sambashare にセットします。
sudo mkdir /samba/joshsudo chown josh:sambashare /samba/josh
次のコマンドは、/samba/josh ディレクトリに setgid ビットを追加し、このディレクトリに新しく作成されたファイルが、親ディレクトリのグループを継承するようにします。 これにより、どのユーザが新しいファイルを作成しても、そのファイルの group-owner は sambashare となります。 例えば、ディレクトリのパーミッションを 2770 に設定せず、 sadmin ユーザが新しいファイルを作成した場合、ユーザ josh はこのファイルに対して読み書きができない。
sudo chmod 2770 /samba/josh
Samba データベースにユーザパスワードを設定して josh ユーザアカウントを追加する:
sudo smbpasswd -a josh
ユーザパスワードを入力、確認するよう促されるでしょう。
New SMB password:Retype new SMB password:Added user josh.
パスワードが設定されたら、次のように入力して Samba アカウントを有効にします:
sudo smbpasswd -e josh
Enabled user josh.
別のユーザーを作成するには、ユーザー josh を作成したときと同じプロセスを繰り返します.
次に、ユーザーおよびグループ sadmin を作成しましょう. このグループのメンバーはすべて管理者権限を持つことになります。 後で別のユーザーに管理者権限を与えたい場合は、そのユーザーを sadmin グループに追加するだけです。
sudo useradd -M -d /samba/users -s /usr/sbin/nologin -G sambashare sadmin
次のように入力して管理者ユーザーを作成します。
パスワードを設定してユーザーを有効にします:
sudo smbpasswd -a sadminsudo smbpasswd -e sadmin
次に、Users共有ディレクトリを作成します:
sudo mkdir /samba/users
ディレクトリ所有者をユーザー sadmin とグループ sambashare に設定します:
sudo chown sadmin:sambashare /samba/users
このディレクトリにはすべての認証ユーザーがアクセスできるようになります。 次のコマンドは、/samba/users ディレクトリの sambashare グループのメンバーへの書き込み/読み取りアクセスを設定します:
sudo chmod 2770 /samba/users
Configuring Samba Shares #
Samba 設定ファイルを開いてセクションを追加します:
sudo nano /etc/samba/smb.conf
オプションは以下の意味を持ちます:
-
and– ログイン時に使用するシェアの名前. -
path– シェアへのパス. -
browseable– シェアを利用可能なシェアリストにリストするかどうか. - – シェアを使用する際に使用するパス。
noに設定すると、他のユーザーはこの共有を見ることができません。 -
read only–valid usersリストで指定したユーザーがこの共有に書き込むことができるかどうか。 -
force create mode– この共有に新しく作成したファイルのパーミッションを設定します。 -
force directory mode– この共有で新しく作成されたディレクトリの権限を設定します。 -
valid users– 共有へのアクセスを許可するユーザーとグループのリストです。
利用可能なオプションの詳細については、Samba 設定ファイルのドキュメントページを参照してください。
完了したら、次のように Samba サービスを再起動します。
sudo systemctl restart smb.servicesudo systemctl restart nmb.service
以下のセクションでは、Linux、macOS、Windows クライアントから Samba 共有への接続方法について説明します。
Connecting to a Samba Share from Linux #
Linux users can access the samba share from the command line, using the file manager or mount the Samba share.
Using the smbclient client #
smbclient is a tool that you can access Samba from the command line.LinuxはコマンドラインからのSambaの共有を可能にするツールである。 smbclient パッケージはほとんどの Linux ディストリビューションにプリインストールされていないので、 ディストリビューションのパッケージマネージャでインストールする必要がある。
smbclient を Ubuntu および Debian にインストールするには:
sudo apt install smbclient
smbclient を CentOS および Fedora にインストールするには:
sudo yum install samba-client
Samba 共有にアクセスする構文は次のとおりです。
mbclient //samba_hostname_or_server_ip/share_name -U username
たとえば、IP アドレス 192.168.121.118 の Samba サーバー上の josh という名前の共有にユーザー josh として接続するには、以下を実行します:
smbclient //192.168.121.118/josh -U josh
ユーザーのパスワードを入力するプロンプトが表示されます。
Enter WORKGROUP\josh's password:
一度パスワードを入力すると、Samba のコマンドラインインターフェイスにログインする。
Try "help" to get a list of possible commands.smb: \>
Mounting the Samba share #
LinuxでSambaの共有をマウントするには、まずcifs-utilsパッケージをインストールする必要があります。
On Ubuntu and Debian run:
sudo apt install cifs-utils
On CentOS and Fedora run:
sudo yum install cifs-utils
Next, create a mount point:
sudo mkdir /mnt/smbmount
Mount the share using the following command.Nextを実行し、共有にマウントすることができます。
sudo mount -t cifs -o username=username //samba_hostname_or_server_ip/sharename /mnt/smbmount
たとえば、IP アドレス 192.168.121.118 の Samba サーバー上の josh という名前の共有をユーザー josh として /mnt/smbmount マウントポイントにマウントするには、次のように実行します:
sudo mount -t cifs -o username=josh //192.168.121.118/josh /mnt/smbmount
ユーザーパスワードを入力するように要求されます。
Password for josh@//192.168.121.118/josh: ********
Using GUI #
Files, the default file manager in Gnome has a built-in option to access Samba shares.
- Open Files and click on “Other Locations” in the sidebar.
- In Connect to Server, enter the address of the Samba share in following format
smb://samba_hostname_or_server_ip/sharename.If you have a user password. - 「接続」をクリックすると、以下の画面が表示されます。
- 「登録ユーザー」を選び、Sambaユーザー名とパスワードを入れて「接続」をクリックします。
- Sambaサーバーにあるファイルが表示されます。
Connecting to a Samba Share from macOS #
macOS では、コマンドラインまたは macOS デフォルトのファイルマネージャ Finder を使用して Samba シェアにアクセスすることが可能です。 以下の手順は、Finderを使用して共有にアクセスする方法を示します。
- 「Finder」を開き、「移動」を選択して「接続先」をクリックします。
- 「接続先」に、次の形式
smb://samba_hostname_or_server_ip/sharenameでSamba共有のアドレスを入力してください。
- 「接続」をクリックすると、以下の画面が表示されます:
- 「登録ユーザー」を選択、Sambaユーザー名とパスワードを入れて「接続」をクリックします。
- Samba サーバー上のファイルが表示されます。
Windows から Samba 共有に接続する #
Windows ユーザーもコマンドラインと GUI から Samba 共有に接続できるオプションを持っています。
- File Explorer を開き、左ペインで「この PC」を右クリックします。
- 「カスタムネットワークの場所を選択」を選択し、「次」をクリックします。
- 「インターネットまたはネットワークアドレス」に、次の形式
\samba_hostname_or_server_ip\sharenameで、Samba 共有にアドレスを入力してください。
- 「次へ」をクリックすると、以下のようにログイン認証情報を入力するよう求められます:
- 次のウィンドウで、ネットワークロケーションにカスタム名をタイプすることができます。
- 「次へ」をクリックして接続設定ウィザードの最後の画面に移動します。
- 「完了」をクリックするとSambaサーバー上のファイルが表示されます。
まとめ #
このチュートリアルでは、CentOS 7にSambaサーバーをインストールして、異なる共有とユーザーのタイプを作成する方法を学習してきました。 また、Linux、macOS、および Windows デバイスから Samba サーバーに接続する方法を紹介しました。
- 次のウィンドウで、ネットワークロケーションにカスタム名をタイプすることができます。
