Samba を使用して Linux サーバー上で共有ファイル サービスを構築する方法

Samba を使用して Linux サーバー上で共有ファイル サービスを構築する方法

最近、私たちの小さなチームは、サーバー上の共有フォルダーを共有して、全員がパブリックリソースドキュメントを保存できるようにする必要があります。これは非常に簡単なはずだと思われます。Windowsでは、関連するWindowsアカウントを作成し、フォルダーを共有し、作成したアカウントに読み取り/書き込み権限を与えるだけで共有が完了します。ただし、Linuxではそれほど簡単ではありません。インターネット上のリソース資料のほとんどは、Sambaを介して共有タスクを完了することを指していますが、一部のブログでは、方法のみを紹介しており、なぜそれを行う必要があるのか​​を紹介していません。セットアップ作業はスムーズではありません。私はLinuxに精通しておらず、多くの回り道をしましたが、このブログを通じて各ステップを深く理解します。

サンバ入門

Samba は、Linux および UNIX システム上で SMB プロトコルを実装するフリー ソフトウェアであり、サーバー プログラムとクライアント プログラムで構成されています。これはでたらめだ...何か面白いものを見てみましょう。作者の Tridgwell 氏は、SMBServer (Server Message Block の略) を使用してこのソフトウェアの商標登録を申請しましたが、SMB は意味のない単語であるため、登録する方法がありませんでした。それから辞書を引いて、SAMBA には SMB という文字が含まれていることを知りました。これは、私たち全員がよく知っているラテンダンスの名前でもあります。こうして、Sanba という名前が生まれました。 (ウィキペディアより)

Samba 共有ディレクトリを構築するには、共有ディレクトリにアクセスするためにユーザー名/パスワードを使用する必要がある場合、最初に Linux ユーザーを作成し、次に smbpasswd を通じて Samba ユーザーを作成する必要があります (ユーザー名は同じである必要があります)。元のテキストは次のとおりです。

スタンドアロン ホストで認証を提供するには、オペレーティング システム上でローカルにアカウントを作成し、さらに Samba データベースにもアカウントを作成する必要があります。デフォルトでは、Samba は tdbsam バックエンドを使用し、データベースを /usr/local/samba/private/passdb.tdb ファイルに保存します。オプションで、passdb backend パラメータを使用して smb.conf ファイルで別の場所を設定します。詳細については、smb.conf 5 のマニュアル ページを参照してください (https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server から)。

ユーザー名認証を必要とする共有ディレクトリを構築する

1. 共有ディレクトリのユーザーを作成します。ここではグループを使用して説明します。

グループ追加 smbgrp
useradd fielshare -s /sbin/nologin -g smbgrp -p <パスワード>
#同じ名前の smb ユーザーを作成します。ここでのパスワードは、ローカル ユーザーのパスワードとは完全に独立しています。最終的に使用したユーザーは、smbpasswd -a fielshare によって作成されました。

2. 共有する必要がある作業ディレクトリを作成し、フォルダの権限を設定します

mkdir -p /srv/samba/secure
chmod -R 0770 /srv/samba/secure
chown -R ルート:smbgrp /srv/samba/secure

Samba 共有ディレクトリを構築するには、共有ディレクトリにアクセスするためにユーザー名/パスワードを使用する必要がある場合、最初に Linux ユーザーを作成し、次に smbpasswd を通じて Samba ユーザーを作成する必要があります (ユーザー名は同じである必要があります)。元のテキストは次のとおりです。

3. セキュリティコンテキストを変更する

chcon -t samba_share_t /srv/samba/secure

このコマンドは SELinux (Security-Enhanced Linux を参照) コマンドであり、/srv/samba/securel を samba コンテキストに切り替えます。

4. 設定ファイルsmb.confを変更する

設定ファイルを変更する前に、事故を防ぐためにバックアップを取る必要があります。

cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

ここでは、次のことを行います。

1. [global] セクションのワークグループを WORKGROUP (マイ コンピューター => プロパティ => コンピューター名に表示されるワークグループの名前) に変更します。

2. [global] の下に NetBIOS 名を設定します。これは、My Neighborhood に表示されるコンピューター名と同様に、任意の名前にすることができます。
3. [global] のセキュリティがユーザーに設定されていることを確認します。
4. 共有ディレクトリ設定を追加する

#My Neighborhood [share]でクリックすると表示されるフォルダ名
  コメント = セキュアファイルサーバー共有
  # 共有するディレクトリへのパス = /srv/samba/secure
  # アクセス可能なユーザー、複数のユーザーはスペースで区切られ、ユーザーグループは @ で始まります valid users = @smbgrp
  # 匿名アクセスを無効にしてnoに設定する
  ゲストOK = いいえ
  書き込み可能 = はい
  閲覧可能 = はい

smb.conf ファイル全体は次のとおりです。

# より詳細な設定ファイルについてはsmb.conf.exampleを参照するか、
# smb.conf のマニュアルページを読んでください。
# 'testparm'を実行して設定が正しいか確認します
# 変更しました。
[グローバル]
  ワークグループ = WORKGROUP
  netbios 名 = centos
  セキュリティ = ユーザー
  パスデータベースバックエンド = tdbsam
  印刷 = カップ
  printcap 名 = カップ
  プリンターをロード = いいえ
  カップオプション = 生
[プリンター]
  コメント = すべてのプリンター
  パス = /var/tmp
  印刷可能 = はい
  マスクを作成 = 0600
  閲覧可能 = いいえ
[印刷$]
  コメント = プリンタドライバ
  パス = /var/lib/samba/drivers
  書き込みリスト = @printadmin root
  強制グループ = @printadmin
  マスクを作成 = 0664
  ディレクトリマスク = 0775
 [共有]
  コメント = 安全なファイル共有
  パス = /srv/samba/secure
  有効なユーザー = @smbgrp
  ゲストOK = いいえ
  書き込み可能 = はい
  閲覧可能 = はい
  閲覧可能 = はい

smb.conf にはデフォルトで [home] ノードがあることに注意してください。ユーザー名と同じ名前のフォルダーを作成したくない場合は、削除してください。

編集を終了し、設定ファイルを保存します。

testparmを実行すると、次のような結果が得られます。これは、設定ファイルに問題がないことを意味します。

[root@localhost ソフトウェア]# testparm
/etc/samba/smb.conf から smb 設定ファイルをロードします。
rlimit_max: rlimit_max (1024) を Windows の最小制限 (16384) に増やす
処理セクション「[プリンタ]」
処理セクション "[print$]"
処理セクション「[share]」
サービス ファイルを正常にロードしました。
サーバーロール: ROLE_STANDALONE
Enterキーを押すとサービス定義のダンプが表示されます
# グローバルパラメータ
[グローバル]
 プリンターをロード = いいえ
 netbios 名 = CENTOS-SHARE
 printcap 名 = カップ
 セキュリティ = ユーザー
 idmap 設定 * : バックエンド = tdb
 カップオプション = 生
[プリンター]
 閲覧可能 = いいえ
 コメント = すべてのプリンター
 マスクを作成 = 0600
 パス = /var/tmp
 印刷可能 = はい
[印刷$]
 コメント = プリンタドライバ
 マスクを作成 = 0664
 ディレクトリマスク = 0775
 強制グループ = @printadmin
 パス = /var/lib/samba/drivers
 書き込みリスト = @printadmin ルート
[共有]
 コメント = 安全なファイル共有
 パス = /home/share
 読み取り専用 = いいえ
 有効なユーザー = @smbgrp
[root@localhost ソフトウェア]#

5. sambaサービスを再起動し、テストのためにコンピュータを開きます

systemctl smb.service を再起動します。
systemctl を再起動します。

テストマシンとLinuxホストは同じネットワーク上にないため、Neighborhoodで設定したCENTOS-SHAREを見つけることができません。ここではIP経由で直接アクセスします。

6. ファイアウォールを追加することを忘れないでください。そうしないと、隣人を見ることができなくなります。

ファイアウォールコマンド --permanent --zone=public --add-service=samba
ファイアウォール-cmd --reload 

要約する

ここでは、主に Windows 向けのユーザー名認証モードを使用してフォルダーを共有する方法のみを説明します。これに慣れていない学生は、匿名共有を自分で試すことができます。セットアップの過程で、これまで出会ったことのない SELinux に触れましたが、この分野にはまだまだ多くのことがあります。インターネット上にはSAMBAの使い方を紹介する記事がたくさんあります。このブログを書く目的は、SAMBAの使い方をさまざまな観点から伝えることです。

以下もご興味があるかもしれません:
  • Linux Samba サーバーの超詳細なインストールと構成 (問題解決付き)
  • Linux で samba サーバーをインストールして設定する方法
  • Linux システムファイル共有 samba 設定チュートリアル

<<:  1時間で学ぶMySQLの基礎

>>:  Vueはミックスインを使用してコンポーネントを最適化します

推薦する

MySQL はデータベースを動的に更新します スクリプト例の説明

具体的なupgradeスクリプトは次のとおりです。インデックスを動的に削除する アップグレードが存在...

Angularルーティングアニメーションと高度なアニメーション機能の詳細な説明

目次1. ルーティングアニメーション2. グループクエリとスタガー1. ルーティングアニメーションル...

WeChatアプレットにナンバープレート入力機能を実装

目次序文背景大きな推測パターンを見つける構造とスタイルコンポーネントの実装パラメータキーボードの種類...

uniapp プロジェクトをデスクトップ アプリケーションとしてパッケージ化する方法

Electronのインストール cnpm 電子をインストール -g electron-package...

JavaScript で支払いの 10 秒カウントダウンを実現

この記事では、支払いの10秒カウントダウンを実現するためのJavaScriptの具体的なコードを参考...

MySQL 8.0の新機能、隠しフィールドの詳細な説明

序文MySQL バージョン 8.0.23 では、新しい機能「Invisible Column (In...

Html+CSS フローティング広告ストリップの実装

1.html部分コードをコピーコードは次のとおりです。 <!DOCTYPE html> ...

CSS3 とテーブルタグを使用して円軌道アニメーションを実装するためのサンプルコード

html: 実際には、テーブルタグに従っていくつかの実線の円 div を正六角形に配置し、div コ...

Eclipse は Tomcat を構成しますが、Tomcat には無効なポート解決策があります

目次1. EclipseがTomcatを構成する2. Tomcat の無効なポートの解決方法方法1:...

JS における ES6 継承と ES5 継承の違い

目次継承ES5 プロトタイプ継承ES6 クラス継承両者の違いES5プロトタイプ継承の内部実装ES6 ...

Windows システムでの MySQL 8.0.21 インストール チュートリアル (図とテキスト)

インストールの提案: インストールには .exe を使用せず、圧縮パッケージを使用してください。これ...

Dockerfileの指示と基本構造の説明

Dockerfile を使用すると、ユーザーはカスタム イメージを作成できます。基本構造Docker...

Vue はカスタム「モーダル ポップアップ ウィンドウ」コンポーネントのサンプル コードを実装します

目次序文レンダリングサンプルコード要約する序文ダイアログ ボックスは非常に一般的なコンポーネントであ...

MySQLでよく使われる文字列関数トップ10の詳細な説明

こんにちは、みんな!技術の話ばかりで髪は切らないトニーです。データベース関数は、何らかの機能を持ち、...

VMware+centOS 8 で http プロトコルに基づく Git サービスを構築する方法

目次1. 原因2. デバイス情報3. 準備4. Apacheをインストールする5. gitを設定する...