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.service
sudo systemctl start nmb.service
sudo systemctl enable smb.service
sudo systemctl enable nmb.service
smbd
サービスはファイル共有および印刷サービスを提供し、TCPポート139および445でリッスンします。
Configuring Firewall #
さて、SambaがCentOSマシンにインストールされて動作しているので、ファイアウォールを設定し、必要なポートを開く必要がある。 これを行うには、以下のコマンドを実行します:
firewall-cmd --permanent --zone=public --add-service=samba
firewall-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/josh
sudo 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 sadmin
sudo 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.service
sudo 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サーバーにあるファイルが表示されます。