Linux Samba サーバーの超詳細なインストールと構成 (問題解決付き)

Linux Samba サーバーの超詳細なインストールと構成 (問題解決付き)

組み込みシステム開発アプリケーション プラットフォームでは、tftp、nfs、samba サーバーが最もよく使用されるファイル転送ツールです。tftpと nfs は組み込み Linux 開発環境で頻繁に使用される転送ツールであり、samba は Linux と Windows 間のファイル転送ツールです。

Samba は、Windows ネットワーク コンピュータの SMB を模倣した通信プロトコルであり、Linux オペレーティング システムを Windows オペレーティング システムであるかのように「見せかけ」、ネットワーク コンピュータを介してファイルを転送します。

仮想マシンのバージョン: VMware10

Linux オペレーティング システムのバージョン: Red Hat Enterprise Linux 5

Samba サーバーの紹介

Samba は、Linux システム上で SMB (Session Message Block) プロトコルを実装し、ファイル共有とプリンター サービスの共有を実現するフリー ソフトウェアです。

Samba サーバー コンポーネント

Samba には、smbd と nmbd という 2 つの主要なプロセスがあります。 smbd プロセスはファイルおよび印刷サービスを提供しますが、nmbd は NetBIOS ネーム サービスとブラウジング サポートを提供し、SMB クライアントがサーバーを見つけるのを支援し、すべての UDP ベースのプロトコルを処理します。

Samba サーバー関連の設定ファイル

smb.conf は、
これは samba のメイン設定ファイルです。基本的にはこのファイルのみで、この設定ファイル自体の説明は非常に詳細です。主な設定には、ワークグループ、NetBIOS 名、パスワード レベルなどのサーバー グローバル設定と、実際のディレクトリ、共有リソース名、アクセス許可などの共有ディレクトリ関連の設定が含まれます。

samba_lmhosts は、
初期の NetBIOS 名には追加の構成が必要だったため、この lmhosts の NetBIOS 名に対応する IP ファイルが必要です。 実際のところ、これは /etc/hosts の動作と少し似ています。この lmhosts に対応するホスト名が NetBIOS 名であるだけです。 /etc/hosts と混同しないでください。現在、Samba はデフォルトでローカル ホスト名を NetBIOS 名として使用するため、このファイルが設定されていなくても問題ありません。

サンバ
smbd および nmbd を起動するときに追加するサービス パラメータを指定します。

/etc/samba/smbusers
WindowsとLinuxの管理者とゲストのアカウント名は、管理者(Windows)とルート(Linux)のように異なるため、両者のアカウント関係に対応するために、このファイルを使用して設定することができます。

/var/lib/samba/private/{passdb.tdb,secrets.tdb}
Samba ユーザー アカウント/パスワードを管理するために使用されるデータベース ファイル。

/usr/share/doc/samba-<バージョン>
このディレクトリには、SAMBA に関連するすべての技術マニュアルが含まれています。つまり、SAMBA をインストールすると、システムにはすでに非常に豊富で完全な SAMBA ユーザー マニュアルが含まれることになります。幸せになる価値はある! ^_^、では、急いで自分でも参考にしてください!

よく使われるスクリプトファイルは、サーバー機能とクライアント機能に分けると、主に以下のデータがあります。

  • /usr/sbin/{smbd,nmbd}: 権限管理 (smbd) と NetBIOS 名クエリ (nmbd) という 2 つの最も重要なサービス プログラムを含むサーバー機能。
  • /usr/bin/{tdbdump,tdbtool}: サーバー機能。Samba 3.0 以降のバージョンでは、ユーザー アカウントとパスワード パラメーターがデータベースを使用するように変換されました。 Samba で使用されるデータベース名は TDB (Trivial DataBase) です。 データベースを使用しているため、当然、データベースの制御命令を使用して処理する必要があります。 tdbdump を使用するとデータベースの内容を表示できますが、tdbtool を使用するとデータベース操作インターフェイスに入り、アカウントとパスワードのパラメータを手動で変更できます。ただし、tdb-tools ソフトウェアをインストールする必要があります。
  • /usr/bin/smbstatus: 各 Samba 接続の PID、共有リソース、使用されているユーザー ソースなど、現在の Samba 接続ステータスを一覧表示できるサーバー機能。これにより、Samba を簡単に管理できます。
  • /usr/bin/{smbpasswd,pdbedit}: サーバー機能。Samba のユーザー アカウントとパスワードを管理する場合、初期には smbpasswd コマンドが使用されていました。ただし、後に TDB データベースが使用されるようになったため、ユーザー データの管理には新しい pdbedit コマンドを使用することをお勧めします。
  • /usr/bin/testparm: サーバー機能。このコマンドは主に、設定ファイル smb.conf の構文が正しいかどうかを確認するために使用されます。smb.conf を編集した場合は、入力ミスによるトラブルを避けるために、必ずこのコマンドを使用して一度チェックしてください。
  • /sbin/mount.cifs: クライアント機能。Windows では、ホストに接続するための「ネットワーク ドライブ」を設定できます。 Linux では、マウント (mount.cifs) を使用して、リモート ホストによって共有されているファイルとディレクトリを自分の Linux ホストにマウントします。
  • /usr/bin/smbclient: クライアント機能。Linux ホストが「ネットワーク コンピュータ」機能を使用して他のコンピュータによって共有されているディレクトリやデバイスを表示する場合は、smbclient を使用して表示できます。このコマンドは、独自の SAMBA ホストで使用して、構成が成功したかどうかを確認することもできます。
  • /usr/bin/nmblookup: クライアント機能。nslookup に少し似ています。鍵となるのはNetBIOS名を見つけることです
  • /usr/bin/smbtree: クライアント機能。これは、Windows システムのネットワーク ネイバーフッドに表示される結果に少し似ており、「近くのコンピューター」などのデータを表示したり、ワークグループとコンピューター名のツリー ディレクトリ分布マップを検索したりできます。

Sambaをインストールする

まず、次のコマンドを使用して、Linux に Samba がインストールされているかどうかを確認します。

[root@localhost ~]# rpm -qa | grep samba 

その中で、samba、samba-common、samba-client が必須です。

インストールされていない場合は、次の 2 つの方法でインストールできます。

最初の方法: yum インストール

Yum は、プログラムの検索、インストール、更新、削除に使用される Linux ソフトウェア パッケージです。 RedHat、Fedora、SUSE、CentOS、Mandriva などの RPM パッケージ互換の Linux ディストリビューションで実行されます。

yum インストール -y samba

2番目の方法: インストールパッケージのインストール

インストール パッケージはすべて CD に収録されています。まずそれをマウントする必要があります。

[root@localhost ~]# /dev/cdrom /mnt をマウントします

このとき、次のような問題が発生します。

マウント: ブロックデバイス /dev/sr0 は書き込み禁止なので、読み取り専用でマウントします

プロンプト メッセージには、CD-ROM ドライブが仮想マシンにマウントされると読み取り専用になるというメッセージが表示されます。次のコマンドでこのエラーを解決できます。

マウント -o 再マウント、rw /dev/cdrom /mnt

この時点で、元々空だったフォルダー /mnt にさらに多くのファイルが含まれていることがわかります。

/mnt/Server フォルダに、Samba インストール パッケージがあります。

インストール パッケージを見つけたら、Samba をインストールします (インストールする必要があるのは、インストールしていないパッケージだけです)。コマンドを使用します:

rpm samba-3.0.25b-0.el5.4.i386.rpm
rpm samba-client-3.0.25b-0.el5.4.i386.rpm
rpm samba-commons-3.0.25b-0.el5.4.i386.rpm

インストールが完了したら、次のコマンドを使用してインストールが完了したかどうかを確認します。

[root@localhost ~]# rpm -qa | grep samba

Sambaの設定

設定ファイルを変更する

実際には、Samba サーバーの主な設定ファイルは /etc/samba/samba.conf の 1 つだけです。この設定ファイルは 2 つの部分に分けられ、1 つはグローバル パラメータ、もう 1 つは共有リソース関連のパラメータです。

#1. グローバルパラメータ設定:
[グローバル]
        #ホスト名に関する設定workgroup = zkhouse <==ワークグループ名netbios name = zkserver <==ホスト名。hostnameと同じではありません。同じグループ内では、netbios名は一意である必要がありますserverstring = これはテスト用のsambaサーバーです <==説明文。内容は無関係です#ログインファイルに関する設定log file = /var/log/samba/log.%m <==ログファイルの保存ファイル名。%mはクライアントのインターネットホスト名、つまりhostnameを表します
        最大ログサイズ = 50 <==ログファイルの最大サイズは50Kbです
        #パスワード関連の設定 security = share <== はパスワードが不要であることを意味します。設定可能な値は、share、user、server です。
        パスデータベースバックエンド = tdbsam
        #プリンターロードモード load printer = no <==プリンターをロードしない--------------------------------------------------------
#2. 共有リソース設定: 古いものをコメントアウトして新しいものを追加します #まず、[homes] と [printers] 項目をキャンセルし、[temp] 項目を次のように追加します [temp] <==共有リソース名 コメント = 一時ファイル領域 <==簡単な説明、内容は無関係です パス = /tmp <==実際の共有ディレクトリ writable = yes <==書き込み可能に設定 browseable = yes <==リソース名はすべてのユーザーが参照できます、
        guest ok = yes <== ユーザーが自由にログインできるようにします

つまり、上記の「#2 共有リソース設定」を設定ファイルの末尾に追加するだけです。

ユーザーを追加してパスワードを設定する

samba サーバーにログインするためのアカウントを設定し、パスワードを設定します。特定のコマンド:

[root@localhost ~]# useradd sambauser
[root@localhost ~]# smbpasswd -a sambauser
新しい SMB パスワード:
新しい SMB パスワードを再入力してください:

Sambaサーバーを再起動する

[root@localhost ~]# /etc/init.d/smbを再起動します

このコマンドが機能しない場合は、Samba が正しくインストールされていません。

Sambaにログイン

Windows ネットワークと Linux ネットワークの両方が接続されている場合、Windows で Samba サーバーにログインします。 Samba の IP アドレスを表示するには、次のコマンドを使用します。

[root@localhost ~]# ifconfig 

Windows では、\\223.3.119.170 (Samba に対応する IP アドレス) を入力します。

このとき、ログイン インターフェイスがポップアップ表示されます。以前に設定したログイン アカウントとパスワードを入力するだけです。

質問と補足事項の要約

以前は、Samba は問題なく段階的にインストールおよび構成されていました。しかし、多くの場合、Windows の実行中に \\IP アドレスを入力しても何も起こりません。何が原因か分からないので、これが最も厄介な部分です。問題が発生する可能性のある領域をいくつか示します。

ネットワークの選択

Samba サーバーを構成するときに、ネットワークはブリッジ接続として選択されます。

その理由は、 Linux の IP と Windows の IP が同じネットワーク セグメントにあり、相互に ping できることを確認する必要があるためです。

確認方法は?

Windows のコマンド ラインで、ipconfig コマンドを入力します。

同時に、Linux で ifconfig コマンドを入力します (2 つのコマンドは異なりますので注意してください)。

2 つの IP アドレス 223.3.119.239 と 223.3.119.170 の最初の 3 文字は同じで、最後の 1 文字のみが異なることがわかります。これにより、これらが同じネットワーク セグメント内にあることが保証されます。最初の 3 桁が異なる場合は、Linux で次のコマンドを使用できます。

[root@localhost ~]# ifconfig eth0 223.3.119.130

最後の 1 つだけが異なることを確認してください。

次に、Windows と Linux 間の ping が成功することを確認します。Windows のコマンド ラインに ping Linux IP アドレスを入力します

結果がタイムアウトでない場合は、両者が相互に正常に ping を実行できることを意味します。

ファイアウォールの問題

ファイアウォールが無効になっていない場合、Windows と Samba 間の通信がブロックされる可能性があります。

Windows でファイアウォールをオフにします: コントロール パネル -> システムとセキュリティ -> Windows ファイアウォール -> Windows ファイアウォールの有効化または無効化。

Linux でファイアウォールを無効にします。

[root@localhost ~]# setenforce 0
[root@localhost ~]# サービスiptables停止

Samba サーバーを必ず再起動してください。

権限の問題

権限不足の問題がある可能性があります。必要なファイルの権限を変更してください。

[root@localhost ~]# chmod 777 /home

アクセス不可

Windows を使用して Samba にアクセスすると、次のダイアログ ボックス エラーが表示されます。

アクセスできません。ネットワーク リソースを使用する権限がない可能性があります。アクセス権限があるかどうかを確認するには、このサーバーの管理者に問い合わせてください。

複数のユーザー名を使用して単一のユーザーによるサーバーまたは共有リソースへの複数の接続は許可されません。このサーバーまたは共有リソースへのすべての接続を切断して再試行するか、Windows を再起動してください。

切断するには(つまり、Samba サーバーを終了するには)どうすればいいですか?

Windows のコマンド ラインで次のように入力します。

ネット使用 * /削除 /y

自動接続

Linux を起動するたびに smba サーバーを自動的に実行するには:

ターミナルで、setup->system service->find smb と入力し、スペース バーを押して選択し、exit して完了します (切り替えには Tab キーを使用することに注意してください)。

他にご質問がある場合は、次のリンクも参照してください: [Linux] samba サーバーのインストールと構成、159 samba にアクセスできません。ネットワーク リソースの net use コマンドを使用する権限がない可能性があります。

Linux Samba サーバーの超詳細なインストールと構成 (問題解決を含む) に関するこの記事はこれで終わりです。Linux Samba サーバーのインストールと構成に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Samba を使用して Linux サーバー上で共有ファイル サービスを構築する方法
  • Linux で samba サーバーをインストールして設定する方法
  • Linux システムファイル共有 samba 設定チュートリアル

<<:  初心者向けウェブサイト構築チュートリアル: 10 日間でウェブサイトの構築方法を学ぶ

>>:  Vueのインストール方法の紹介

推薦する

Linuxでユーザーが所属するグループを変更する方法

Linuxでユーザーが所属するグループを変更する1. ユーザーのグループを設定する usermod ...

Ubuntu で XFS ファイルシステム用の LVM を作成する方法

序文lvm (論理ボリューム マネージャー) 論理ボリューム管理は、Linux システムのニーズを満...

JavaScriptでポインターの位置を取得する方法を教えます

JavaScript でポインターの位置を取得する方法は、イベント オブジェクトの pageX と ...

webpackを使用してTypeScriptコードをパッケージ化およびコンパイルする方法を教えます

TypeScript バンドルwebpack 統合通常、実際の開発では、ビルド ツールを使用してコー...

JSメモリ空間の詳細な説明

目次概要1. スタックとヒープ2. 変数オブジェクトと基本データ型3. 参照データ型とヒープメモリメ...

Webpack5-react スキャフォールディングをゼロから構築するための実装手順 (ソースコード付き)

目次ウェブパック5公式スタート建築ガイド構築を開始する依存する準備が完了したら、プロジェクトの構築を...

HTML テーブル データを Json 形式に変換するサンプル コード

<table>テーブルデータをJSON形式に変換するJavaScript関数は次のとおり...

MySQL はリレーショナルデータベースですか?

MySQL はリレーショナル データベース管理システムです。リレーショナル データベースは、すべて...

MySQL マスタースレーブの原理と構成の詳細

MySQLのマスタースレーブ構成と原理、参考までに具体的な内容は以下のとおりです。 1. 環境の選択...

初心者向けMySQLインデックス

序文MySQL インデックスで最も重要なデータ構造は B+ ツリーなので、まずは B+ ツリーの原理...

mysql-8.0.11-winx64.zip の詳細なインストール チュートリアル

zip インストール パッケージをダウンロードします。 MySQL8.0 For Windows z...

MySQL における distinct と group by の違い

簡単に言うと、distinct は重複を削除するために使用され、group by は統計を集計するよ...

HTML テーブル マークアップ チュートリアル (29): セルのライト境界線の色属性 BORDERCOLORLIGHT

セルでは、明るい境界線の色を個別に定義できます。 > 基本構文<TD ボーダーカラーライ...

jQueryはショッピングカート機能を実装します

この記事の例では、ショッピングカート機能を実装するためのjQueryの具体的なコードを参考までに共有...

js キャンバスはスライダー検証を実現します

この記事の例では、スライダー検証を実装するためのjsキャンバスの具体的なコードを参考までに共有してい...