開発者ドキュメント

Ubuntu16.04で小さな組織のSamba共有を設定する方法

序章

Samba は、ファイルやプリンターへのアクセスやActiveDirectoryなどの共有サービス用にWindows環境で使用されるSMB/CIFSネットワーキングプロトコルのオープンソース実装です。 Sambaを使用して、スタンドアロンサーバーと呼ばれる構成でクロスプラットフォームのファイル共有を作成することもできます。

このガイドでは、スタンドアロンのSambaサーバーをインストールして構成し、Example.comという架空の小さな組織にネットワーク化されたファイルストアまたは共有を提供します。 この組織には、ファイル共有に関するいくつかの要件があります。1。 すべての従業員には、個人のプライベートファイル共有が必要です。 2.2。 すべての従業員は、共通のファイル共有への読み取りおよび書き込みアクセス権を持っている必要があります。 3.3。 管理ユーザーは、すべての個人共有への読み取りおよび書き込みアクセス権と普通株式の所有権を持っている必要があります。

Sambaサーバーは、これらすべての要件を満たします。 また、Windows、Linux、およびmacOSから共有にアクセスする方法についても学習します。

前提条件

このガイドを開始する前に、次のものが必要です。

ステップ1—Sambaのインストール

Ubuntuのパッケージ管理システムを使用してSambaをインストールすることから始めましょう。

新しいパッケージをインストールする前に、ローカルパッケージインデックスを更新して、Ubuntuリポジトリからの最新バージョンを含めましょう。

  1. sudo apt-get update

次に、Sambaをインストールします。

  1. sudo apt-get install samba

このコマンドは、両方のSambaサーバーをインストールして起動します smbd およびSambaNetBIOSサーバー nmbd. nmbd このチュートリアルでは必須ではないため、セキュリティ上の理由から、次の方法で停止および無効化できます。 systemctl:

  1. sudo systemctl stop nmbd.service
  2. sudo systemctl disable nmbd.service

The sudo systemctl disable nmbd.service コマンドを実行すると、次の出力が生成されます。

Output
nmbd.service is not a native service, redirecting to systemd-sysv-install Executing /lib/systemd/systemd-sysv-install disable nmbd insserv: warning: current start runlevel(s) (empty) of script `nmbd' overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `nmbd' overrides LSB defaults (0 1 6).

この出力はそれを伝えます nmbd ネイティブがありません systemd 管理構成では、古いSysVinitシステムによって無効にされています。

未構成のネットワーク対応サービスの実行から発生する可能性のあるセキュリティの問題を回避するために、構成の詳細が整うまでSambaサーバーを停止しましょう。

  1. sudo systemctl stop smbd.service

これでSambaがインストールされ、構成する準備が整いました。

ステップ2—Sambaのグローバルオプションを設定する

にある構成ファイルを変更して、Sambaサーバーがどのように動作するかを定義しましょう。 /etc/samba/smb.conf. このファイルには2つの部分があります。 [global] セクションと [shares] セクション。 The [global] セクションは、Sambaサーバーの動作を構成します。 [shares] セクションはファイル共有を構成します。 まず、ディレクティブを設定します。 [global] セクション。

編集するのではなく /etc/samba/smb.conf 直接、名前を次のように変更します smb.conf.original 名前で新しいファイルを作成します smb.conf:

  1. sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig

編集する前に /etc/samba/smb.conf、Sambaに認識すべきインターフェースを指示するために、使用可能なインターフェースを確認しましょう。 次のように入力します。

  1. ip link
Output
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 02:21:2c:03:ef:e2 brd ff:ff:ff:ff:ff:ff

この出力は、 lo ループバックインターフェイスであり、 eth0 は外部ネットワークインターフェイスですが、外部インターフェイスは異なる場合があります。 両方に注意してください:あなたはそれらを interfaces のディレクティブ [global] のセクション smb.conf ファイル。

このファイルの編集を始めましょう nano またはお気に入りの編集者:

  1. sudo nano /etc/samba/smb.conf

The [global] このファイルのセクションでは、サーバーの名前、役割、およびネットワークインターフェイスを含むその他の詳細を定義します。

/etc/samba/smb.conf
[global]
        server string = samba_server
        server role = standalone server
        interfaces = lo your_network_interface
        bind interfaces only = yes
        disable netbios = yes
        smb ports = 445
        log file = /var/log/samba/smb.log
        max log size = 10000

これらのディレクティブは、以下を指定します。

サーバーのセットアップ中にさらに詳細なログが必要な場合は、次の行をに追加します。 [global] セクション:

/etc/samba/smb.conf
        log level = 3 passdb:5 auth:5

これにより、ログレベルが3(info)に設定され、ログ情報の粒度がデフォルト設定の1から増加します。 の5の高い設定 passdbauth デバッグクラスは、ユーザー認証に関連する詳細情報を提供します。

このセクションの作成が終了したら、ファイルを保存して閉じます。

編集するときはいつでも smb.conf、Sambaユーティリティを実行する必要があります testparm 構文エラーがないことを確認するには:

  1. testparm

の実行 testparm のコマンド smb.conf ファイルは次の出力を生成します。

Output
Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions

押す ENTER 次の出力を生成します。

Output
# Global parameters [global] server string = samba_server interfaces = lo your_network_interface bind interfaces only = Yes server role = standalone server log file = /var/log/samba/smb.log max log size = 10000 smb ports = 445 disable netbios = Yes idmap config * : backend = tdb

もしも testparm レポート Loaded services file OK.、Sambaサーバーの起動を停止する構文エラーはありません。

の構成 [global] セクションは、Sambaサーバーを起動するために必要なすべてです。 ただし、その機能は共有構成なしでは制限されます。 共有は、ユーザーとディレクトリの2つの部分で構成され、ログインとテストを可能にするために両方を作成および構成する必要があります。 次のセクションでは、共有にアクセスできるユーザーを作成する方法について説明します。

ステップ3—ユーザーの作成

このステップでは、共有にアクセスできるユーザーを作成します。 ログインしてファイルシステムの読み取りと書き込みを行うときにSambaサーバーで認証するには、Sambaおよびシステムユーザーとしてアクセスする必要があります。

架空の会社Example.comには、Sambaサーバーに追加し、Linuxシステムでユーザーとして作成する必要がある4人の従業員がいます: david mike jane 、およびlucy。 これらの4つに加えて、個人共有にアクセスして管理できるadminユーザーがいます。 このユーザーは、誰もがアクセスできる普通株も所有します。

システムユーザーを追加するための最初のステップは、各ユーザーのホームディレクトリを作成することです。 で標準のホームディレクトリを使用するのではなく /home/user、Sambaディレクトリとデータは次の場所にあります。 /samba/. Sambaデータを単一の場所に保持し、他のユーザーデータから分離すると、バックアップなどの将来の管理タスクが容易になります。

注:このガイドで作成されたユーザーは、SSHログインを目的としていません。 ユーザーがすでにサーバーにアカウントを持っている場合は、このガイドに従うために、ユーザー専用のSambaユーザーを作成する必要があります。

次のセクションでは、最初のユーザー david を追加するプロセスについて説明しますが、 mike jane 、およびに対してこのプロセスを繰り返す必要があります。ルーシー

最初のステップは、ファイルシステムのルートにSambaデータが保存されるディレクトリを作成することです。 このディレクトリは呼び出されます /samba/、およびそのグループ所有権はに設定されます sambashare、Sambaをインストールしたときに作成されたグループ。

次のコマンドを実行して、 /samba/ ディレクトリを作成し、グループの所有権をに設定します sambashare:

  1. sudo mkdir /samba/
  2. sudo chown :sambashare /samba/

次に、davidのホームディレクトリを /samba/ ディレクトリ:

  1. sudo mkdir /samba/david

次に、次のコマンドを使用して、システムユーザーとしてdavidを追加します。

  1. sudo adduser --home /samba/david --no-create-home --shell /usr/sbin/nologin --ingroup sambashare david

オプションは次のことを行います。

このコマンドを実行すると、パスワードの入力を求められます。 10文字以上の一意の非辞書ベースのパスワードを選択してください。

システムユーザーdavidが存在するので、彼のSambaホームディレクトリに所有権と権限を設定できます。

  1. sudo chown david:sambashare /samba/david/
  2. sudo chmod 2770 /samba/david/

ディレクトリの権限をに設定する 2770 の下に作成された新しいファイルまたはディレクトリを意味します /samba/david/ ファイルまたはディレクトリを作成したユーザーのプライマリグループではなく、親ディレクトリのグループ所有権を継承します。 これは、たとえば、adminユーザーがdavidの共有に新しいディレクトリを作成した場合、davidが読み取りと書き込みを行えることを意味します。それ。

次に、davidをSambaサーバーに追加します。 Sambaは、ログインの認証に使用するユーザーとパスワードの独自のデータベースを保持しています。 ログインするには、すべてのユーザーをSambaサーバーに追加して有効にする必要があります。 以下を実行します smbpasswd これらのタスクの両方を実行するためのコマンド:

  1. sudo smbpasswd -a david
  2. sudo smbpasswd -e david

ここで使用されるオプションは次のことを行います。

ここに入力したパスワードは、Samba共有へのアクセスに使用され、システムパスワードとは異なる場合があります。

ユーザーdavidは、サーバーにSSH接続する機能を持たないシステムユーザーとして存在するようになりました。 彼はホームディレクトリを持っています /samba/david、およびSambaユーザーとして登録および有効化されています。

すべてのSambaユーザー( mike jane 、および lucy )に対してこのプロセスを繰り返します。

admin ユーザーを作成するには、次のコマンドを実行し、ホームディレクトリを次のように変更します。 /samba/everyone/:

  1. sudo mkdir /samba/everyone
  2. sudo adduser --home /samba/everyone --no-create-home --shell /usr/sbin/nologin --ingroup sambashare admin
  3. sudo chown admin:sambashare /samba/everyone/
  4. sudo chmod 2770 /samba/everyone/
  5. sudo smbpasswd -a admin
  6. sudo smbpasswd -e admin

admin ユーザーの作成に加えて、サーバーの管理を容易にするためにadminsというグループを作成しましょう。 各共有への読み取りおよび書き込み権限により、このグループはユーザーの追加と削除の作業を簡素化できます。 たとえば、個々のユーザーが admin ユーザーとして機能してから組織を離れる場合、各共有から個別に削除する必要があります。 新しい管理者も、すべての共有に手動で追加する必要があります。 admins グループを作成し、このグループに共有への読み取り/書き込みアクセス権を付与することは、ユーザーの追加と削除に必要なコマンドが1つだけであることを意味します。

次のコマンドを実行して、 admins という名前の新しいグループを作成し、ユーザーadminをこのグループに追加します。

  1. sudo groupadd admins
  2. sudo usermod -G admins admin

2番目のコマンドを実行して、adminsグループにユーザーを追加できます。 sudo usermod -G admins admin、および代わりに別のユーザーを使用する admin.

これでシステム構成が完了し、組織Example.comのユーザーがシステムユーザーおよびSambaユーザーとして設定されました。 これらのユーザーが共有ディレクトリにアクセスできるように、Sambaサーバーの構成に移りましょう。

ステップ4—Samba共有の構成

各共有には、メインのSamba構成ファイルに独自のセクションがあります。 /etc/samba/smb.conf、グローバルパラメータに従います。 これらのセクションでは、各共有がどのように機能するかを定義します。

使用 nano このファイルを開いて編集するには、もう一度テキストエディタを使用します。

  1. sudo nano /etc/samba/smb.conf

次の構成ブロックは、各ユーザーの個人共有を定義します。

/etc/samba/smb.conf
...
[share_name]
        path =
        browseable =
        read only =
        force create mode =
        force directory mode =
        valid users =

これらのオプションは次のとおりです。

david の次の共有構成ブロックを追加して、ホームディレクトリ、このディレクトリのグループ所有権のアクセス許可、および共有にアクセスできるユーザーを定義します。

/etc/samba/smb.conf
[david]
        path = /samba/david
        browseable = no
        read only = no
        force create mode = 0660
        force directory mode = 2770
        valid users = david @admins

ディレクトリのアクセス許可により、グループの所有権が親ディレクトリの所有権に設定されることに注意してください。

mike jane 、およびlucyの共有ブロックを作成します。 シェアのみを変更する [name], path、 と valid users 各ユーザーの名前を反映します。

The [everyone] シェアは両方で他とは異なります [name], path, valid users、 と browsable オプション、および次のようになります:

/etc/samba/smb.conf
...
[everyone]
        path = /samba/everyone
        browseable = yes
        read only = no
        force create mode = 0660
        force directory mode = 2770
        valid users = @sambashare @admins

与える sambashare 共有へのグループ読み取り/書き込みアクセスにより、すべてのユーザーが共有にアクセスできるようになります。これは、ユーザーが作成されたときにこのグループに追加されたためです。

完全な smb.conf ファイルは次のようになります。

/etc/samba/smb.conf
[global]
        server string = samba_server
        server role = standalone server
        interfaces = lo your_network_interface
        bind interfaces only = yes
        disable netbios = yes
        smb ports = 445
        log file = /var/log/samba/smb.log
        max log size = 10000

[david]
        path = /samba/david
        browseable = no
        read only = no
        force create mode = 0660
        force directory mode = 2770
        valid users = david @admins

[mike]
        path = /samba/mike
        browseable = no
        read only = no
        force create mode = 0660
        force directory mode = 2770
        valid users = mike @admins

[jane]
        path = /samba/jane
        browseable = no
        read only = no
        force create mode = 0660
        force directory mode = 2770
        valid users = jane @admins

[lucy]
        path = /samba/lucy
        browseable = no
        read only = no
        force create mode = 0660
        force directory mode = 2770
        valid users = lucy @admins

[everyone]
        path = /samba/everyone
        browseable = yes
        read only = no
        force create mode = 0660
        force directory mode = 2770
        valid users = @sambashare @admins

編集が終了したら、ファイルを保存して閉じます。

構成を再度テストします。

  1. testparm

これにより、次のような出力が生成されます。

Output
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[david]" Processing section "[jane]" Processing section "[mike]" Processing section "[lucy]" Processing section "[everyone]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions

構成チェックが完了したら、Sambaサーバーを次のように起動します。 systemctl:

  1. sudo systemctl start smbd.service

これでSambaサーバーが実行され、ログインを受け入れる準備が整いました。 次のステップは、Sambaサーバーにログインして、サーバーが期待どおりに機能していることをテストすることです。 次のセクションでは、Windows、Linux、およびmacOSからSambaサーバーへのログインについて説明します。

ステップ5—Sambaサーバーにログインする

このセクションでは、Linux、Windows、およびmacOSから作成したSamba共有にアクセスする方法について説明します。

Linux —コマンドライン

あなたはと呼ばれるツールを使用することができます smbclient コマンドラインからSambaにアクセスします。 このパッケージは、ほとんどのLinuxディストリビューションにデフォルトで含まれていないため、ローカルのパッケージマネージャーを使用してインストールする必要があります。

DebianおよびUbuntuサーバーにインストールする smbclient 次のコマンドを使用します。

  1. sudo apt-get update
  2. sudo apt-get install smbclient

Fedoraシステムでは、以下を使用します。

  1. sudo dnf update
  2. sudo samba-client

そしてCentOSでは:

  1. sudo yum update
  2. sudo yum install samba-client

注:一部のLinuxディストリビューション smbclient 次のエラーメッセージで失敗します。

Output
smbclient: Can't load /etc/samba/smb.conf - run testparm to debug it

このエラーメッセージが表示された場合は、でファイルを作成したことを確認してください。 /etc/samba/smb.conf.

smbclient 次の形式を使用してSamba共有にアクセスします。

  1. smbclient //your_samba_hostname_or_server_ip/share -U username

サーバーのIPまたはで定義したホスト名のいずれかを使用できます /etc/samba/smb.conf 共有にアクセスします。 この例では、ホスト名を使用しています samba.example.com 前の手順で作成したSambaサーバー上のdavidの共有にアクセスするには:

  1. smbclient //samba.example.com/david -U david

david が普通株へのアクセスを希望する場合(everyone)、コマンドを次のように変更します。

  1. smbclient //samba.example.com/everyone -U david

実行後 smbclient コマンドを実行すると、Sambaパスワードの入力を求められ、FTPテキストインターフェイスを連想させるコマンドラインインターフェイスにログインします。

smb: \>

このインターフェイスは、ユーザー名とパスワード、および読み取り/書き込みアクセスをテストする場合に最も役立ちます。 たとえば、次のようにディレクトリを作成し、その内容を一覧表示できます。

  1. mkdir test
  2. ls

次の出力が表示されます。

Output
. D 0 Fri Feb 2 14:49:01 2018 .. D 0 Wed Jan 24 12:11:33 2018 test D 0 Fri Feb 2 14:49:01 2018

次のように入力して、ディレクトリを削除します。

  1. rmdir test

共有内のデータの管理は、多くの場合、GUIツールを使用すると簡単になります。 次のセクションでは、KDEの組み込みGUIツールについて説明します。

Linux —Dolphinを使用したKDE

DolphinはKDEのデフォルトのファイルマネージャーであり、Samba共有にアクセスするための組み込み機能を備えています。

Dolphinを開いた後、次の手順を実行します。

  1. 場所リストからネットワークを選択します。
  2. ネットワークフォルダの追加をクリックします。
  3. MicrosoftWindowsネットワークドライブオプションを選択します。
  4. 次へをクリックします
  5. Samba共有の詳細を入力します。
    • 名前-これは、共有のためにDolphinにブックマークとして表示される覚えやすい名前です。
    • サーバー-これは、Sambaサーバーのホスト名またはIPアドレスです。 この例では、 samba.example.com.
    • Folder-これはで設定された共有の名前です smb.conf.
  6. クリック保存して接続
  7. Samba共有にアクセスするユーザーのユーザー名とパスワードを入力します。
  8. OKをクリックします。

Dolphinが接続し、Samba共有を開きます。これは次のようになります。

これで、Samba共有をローカルディレクトリであるかのように使用して、ファイルやディレクトリをコピー、削除、および名前変更できます。 共有は、ネットワークの場所にも永続的なブックマークとして表示されます。

MacOS —コマンドライン

MacOSには、Samba共有へのアクセスに使用できるコマンドラインツールがプリインストールされています。 Terminal アイコンをクリックして、Launchpadでターミナルを開きます。

これにより、ホームディレクトリにコマンドラインターミナルが開きます。 Samba共有をマウントするには、共有のマウントポイントとして機能する新しいディレクトリを作成できます。 マウントポイントは、2つのファイルシステムが結合される場所です。この場合は、ローカルファイルシステムとリモートSambaファイルシステムです。

と呼ばれる新しいディレクトリを作成します samba:

  1. mkdir samba

次に、新しい下にSamba共有をマウントします samba ディレクトリ。 このコマンドの形式は次のとおりです。

  1. sudo mount_smbfs //username@your_samba_hostname_or_server_ip/share ./mount_point

Example.comの詳細をユーザーdavidに置き換えると、次のようになります。

  1. sudo mount_smbfs //david@samba.example.com/david ./samba

The samba ディレクトリには、 Example.comSambaサーバー上のdavid共有の内容が表示されます。 ファイルとディレクトリは、次のような通常のツールで操作できます。 ls, rm、 と mkdir; しかし samba 共有がマウントされた後、ディレクトリはrootによって所有されます。 したがって、使用する必要があります sudo アクセスするには samba ディレクトリとその内容。

Samba共有をアンマウントするには、 umount を実行したのと同じディレクトリからのコマンド mkdir 指図:

  1. umount samba

次のセクションでは、macOSのデスクトップGUIアプリケーションを使用してSamba共有にアクセスする方法について説明します。

MacOS —デスクトップ

MacOSは、Finderアプリケーションを使用してSamba共有にアクセスすることもできます。

次の手順を実行します。

  1. Finder を開き、メニューバーのGoをクリックします。
  2. オプションのリストからサーバーに接続をクリックします。
  3. 使う smb:// ユーザー名、ホスト名またはサーバーIP、および共有の名前を含むフォーマットURL: smb://username@your_samba_hostname_or_server_ip/share. ここに示す例では、ユーザー名davidとホスト名が表示されます。 samba.example.com.
  4. + の記号が付いたボタンをクリックして、Samba共有をブックマークします。
  5. 接続をクリックします
  6. 登録ユーザーを選択します
  7. Samba共有ユーザーのユーザー名とパスワードを入力します。
  8. macOSにパスワードを保存するかどうかを決定します。
  9. 接続をクリックします。

Samba共有に正常に接続すると、次のようにFinderに表示されます。

次のセクションでは、Windows10からSamba共有にアクセスする方法について説明します。

Windows 10 —コマンドライン

WindowsコマンドラインからSamba共有をマウントするには、次の1つのコマンドのみが必要です。

  1. net use drive_letter \\your_samba_hostname_or_server_ip\share

ユーザーdavidの共有から変数を置き換え、ドライブ文字を次のように設定します X::

  1. net use X: \\samba.example.com\david

このコマンドを入力すると、davidのユーザー名とパスワードの入力を求められます。 これらを入力すると、共有が正常にマウントされたという確認が届きます。

Output
Enter the user name for 'samba.example.com': david Enter the password for samba.example.com: The command completed successfully.

これで、ファイルエクスプローラーでSamba共有を参照し、コンピューターのローカルであるかのようにファイルとディレクトリを操作できるようになります。

次のセクションでは、WindowsGUIツールを使用してSamba共有にアクセスする方法について説明します。

Windows 10 —デスクトップ

Windows 10には、Samba共有に接続するためのネイティブ機能もあります。 次の手順では、Samba共有に接続し、Windowsファイルエクスプローラーを使用してブックマークとして保持します。 ファイルエクスプローラーを開いて、次の手順を開始します。

  1. このPCを右クリックします。
  2. 次のページでネットワークの場所を追加をクリックしてから次へをクリックします。
  3. をクリックします。カスタムネットワークの場所を選択します
  4. 次へをクリックします
  5. SambaサーバーのWindowsスタイルのアドレスと共有名を入力します。 Windowsは、次の形式のSambaURLを使用します。 \\your_samba_hostname_or_server_ip\share\. サンプル画像では、サーバー名は次のとおりです。 samba.example.com 共有名は david: \\samba.example.com\david.
  6. 次へをクリックします。
  7. ユーザーのユーザー名とパスワードを入力します。
  8. Windowsにパスワードを記憶させるかどうかを決定します。
  9. OKをクリックします。

これで、ファイルエクスプローラーがSamba共有に接続します。 接続が正常に完了すると、ファイルエクスプローラーのこのPCの下に新しい場所が作成されます。

これで、このフォルダーを使用して、ローカルフォルダーであるかのようにSamba共有内のファイルとフォルダーを管理できるようになります。

結論

この記事では、Sambaサーバーを使用してクロスプラットフォームのオンラインファイル共有を作成しました。 また、Windows、Linux、およびmacOSからこれらの共有にアクセスしました。

Samba共有は非常に一般的になっているため、多くのアプリケーションがSambaに保存されているデータにアクセスできます。 これらのアプリケーションは、Samba共有の機能と有用性を拡張できます。 たとえば、モバイルバージョンのメディアプレーヤー VLC は、Samba共有に接続して音楽やビデオをストリーミングできます。 アクセスするには、 open MRL を選択し、標準のSambaURLを使用します。 smb://username@your_samba_hostname_or_server_ip/share. クロスプラットフォームバックアップユーティリティBackupPCを使用して、バックアップの宛先としてSamba共有を使用することもできます。

Sambaは、単純なファイル共有として機能するだけでなく、ドメインコントローラーまたはドメインのメンバーとしてWindowsActiveDirectoryと連携できます。 Samba Wiki ユーザードキュメントには、これを行う方法の詳細が含まれています。

モバイルバージョンを終了