このチュートリアルでは、ローカルネットワーク上でファイルを共有するためにCentOS 8/RHEL8にSambaサーバーをインストールして構成する方法を学習します。 Sambaは、UnixおよびLinux用の無料のオープンソースSMB / CIFSプロトコル実装であり、ローカルエリアネットワーク内のLinux、Windows、およびmacOSマシン間でファイルおよび印刷を共有できます。
Sambaは通常、Linuxにインストールされて実行されます。これは、異なるが関連する目的を果たすいくつかのプログラムで構成されており、そのうちの最も重要な2つは次のとおりです。
- smbd :SMB / CIFSサービス(ファイル共有と印刷)を提供し、Windowsドメインコントローラーとしても機能します。
- nmbd :このデーモンはNetBIOSネームサービスを提供し、ネームサーバー要求をリッスンします。また、Sambaサーバーをネットワーク上の他のコンピューターで検出することもできます。
CentOS 8/RHEL8にSambaサーバーをインストールする方法
SambaはほとんどのLinuxディストリビューションに含まれています。 CentOS 8 / RHEL8にSambaをインストールするには、ターミナルで次のコマンドを実行します。
sudo dnf install samba
Sambaのバージョンを確認するには、
を実行します。smbd --version
サンプル出力:
Version 4.10.4
次に、次のコマンドを発行してsmbd
を開始します およびnmbd
サービス。
sudo systemctl start smb nmb
起動時に自動起動を有効にします。
sudo systemctl enable smb nmb
Sambaサービスが実行されているかどうかを確認するには、次のコマンドを発行します。
systemctl status smb nmb
開始すると、smb
デーモンはTCPポート139および445でリッスンします。nmbd
UDPポート137および138でリッスンします。
- TCP 139:ファイルとプリンターの共有およびその他の操作に使用されます。
- TCP 445:NetBIOSのないCIFSポート。
- UDP 137:NetBIOSネットワークブラウジングに使用されます。
- UDP 138:NetBIOSネームサービスに使用されます。
次のコマンドを実行して、ファイアウォールで上記のポートを開きます。
sudo firewall-cmd --permanent --add-service=samba
変更を有効にするためにファイアウォールデーモンをリロードします。
sudo systemctl reload firewalld
プライベートSamba共有を作成する
このセクションでは、アクセスするためにクライアントがユーザー名とパスワードを入力する必要があるプライベートSamba共有を作成する方法を説明します。メインのSamba構成ファイルは次の場所にあります:/etc/samba/smb.conf
。 nano
のようなコマンドラインテキストエディタを使用してターミナルで編集できます 。
sudo nano /etc/samba/smb.conf
デフォルトでは、4つのセクションがあります:
- グローバル
- 家
- プリンター
- print $
[global]
内 セクション、workgroup
デフォルトではSAMBAに設定されています。
workgroup = SAMBA
workgroup
の値を確認してください Windowsコンピュータのワークグループ設定と同じです。 Control Panel
に移動すると、Windowsコンピューターの設定を確認できます。>System and Security
>System
。
この記事では、Windowsのデフォルトのワークグループ名を使用します。
workgroup = WORKGROUP
hosts allow
を使用することをお勧めします 不正アクセスを防ぐためのIPアドレスホワイトリストを作成するパラメータ。 [global]
に次の行を追加します 192.168.0.0/24
のローカルホストとクライアントを許可するセクション Sambaサービスにアクセスするためのネットワーク。別のネットワーク範囲を使用している場合は、192.168.0
を置き換えてください 自分で。
hosts allow = 127. 192.168.0
ヒント:hosts allow = 127.0.0.1 192.168.0.0/24
のようなネットワーク範囲にCIDR表記を使用することもできます。
次に、ファイルの一番下までスクロールします。 (nanoテキストエディタでは、CTRL+W
を押すことでそれを実現できます 次にCTRL+V
。 )以下のような新しいセクションを追加します。
[Private] comment = needs username and password to access path = /srv/samba/private/ browseable = yes guest ok = no writable = yes valid users = @samba
場所:
Private
Windowsコンピュータに表示されるフォルダ名です。好きな名前を使用できます。- コメントは共有フォルダの説明です。
- pathパラメーターは、共有フォルダーへのパスを指定します。
/srv/samba/private/
を使用しています 例として。 -
browseable = yes
:ネットワーク内の他のコンピューターがSambaサーバーとSamba共有を表示できるようにします。 noに設定した場合、ユーザーはSambaサーバーの名前を知ってから、ファイルマネージャーに手動でパスを入力して共有フォルダーにアクセスする必要があります。 -
guest ok = no
:ゲストアクセスを無効にします。つまり、共有フォルダにアクセスするには、クライアントコンピュータでユーザー名とパスワードを入力する必要があります。 -
writable = yes
:クライアントに読み取りと書き込みの両方のアクセス許可を付与します。 valid users = @samba
:SambaグループのユーザーのみがこのSamba共有にアクセスできます。
ファイルを保存して閉じます。 (nanoテキストエディタでファイルを保存するには、Ctrl+O
を押します。 、次にEnterキーを押して、書き込むファイル名を確認します。ファイルを閉じるには、Ctrl+X
を押します 。)次に、Sambaユーザーを作成する必要があります。まず、次のコマンドを使用して標準のLinuxユーザーアカウントを作成する必要があります。 username
を置き換えます ご希望のユーザー名で。
sudo adduser username
Unixパスワードを設定するように求められます。その後、次のコマンドを使用して、新しいユーザーに個別のSambaパスワードを設定する必要もあります。
sudo smbpasswd -a username
samba
を作成します グループ。
sudo groupadd samba
そして、このユーザーをsamba
に追加します グループ。
sudo gpasswd -a username samba
プライベート共有フォルダを作成します。
sudo mkdir -p /srv/samba/private/
samba
グループには、共有フォルダーに対する読み取り、書き込み、および実行のアクセス許可が必要です。次のコマンドを実行して、これらの権限を付与できます。
sudo setfacl -R -m "g:samba:rwx" /srv/samba/private/
また、このディレクトリにsamba_share_t
というラベルを付ける必要があります。 SELinuxがSambaに読み取りと書き込みを許可するようにします。
sudo chcon -t samba_share_t /srv/samba/private/ -R
次に、次のコマンドを実行して、構文エラーがあるかどうかを確認します。
testparm
Samba構成ファイルは、変更された場合、1分ごとに自動的に再ロードされます。 smbd
を手動で再起動できます およびnmbd
変更をすぐに有効にするためのデーモン。
sudo systemctl restart smb nmb
認証なしでSambaパブリックシェアを作成する方法
ユーザー名とパスワードを必要とせずに公開共有を作成するには、次の条件を満たす必要があります。
-
security = user
を設定します Samba構成ファイルのグローバルセクションにあります。 -
map to guest = bad user
を設定します Samba構成ファイルのグローバルセクションにあります。これにより、smbd
が発生します ゲストアカウントを使用して、Sambaサーバーにアカウントを登録していないクライアントを認証します。ゲストアカウントであるため、Sambaクライアントはパスワードを入力する必要はありません。 -
guest ok = yes
を設定します 共有定義でゲストアクセスを許可します。 - パブリックフォルダの読み取り、書き込み、および実行のアクセス許可を
nobody
に付与します アカウント。デフォルトのゲストアカウントです。
Samba構成ファイルを開いて編集します。
sudo nano /etc/samba/smb.conf
[global]
内 セクションで、workgroup
の値を確認してください Windowsコンピュータのワークグループ設定と同じです。
workgroup = WORKGROUP
Control Panel
に移動すると、Windowsコンピューターの設定を確認できます。>System and Security
>System
。
[global]
に次の行を追加します セクション。
map to guest = bad user
次に、ファイルの一番下までスクロールして、次の行を貼り付けます。
[public] comment = public share, no need to enter username and password path = /srv/samba/public/ browseable = yes writable = yes guest ok = yes
ファイルを保存して閉じます。次に、/srv/public/
を作成します フォルダ。
sudo mkdir -p /srv/samba/public
パブリック共有での書き込み操作を許可する場合は、このフォルダーのアクセス許可を777に変更する必要があります。
sudo chmod 777 /srv/samba/public/ -R
また、このディレクトリにsamba_share_t
というラベルを付ける必要があります。 SELinuxがSambaに読み取りと書き込みを許可するようにします。
sudo chcon -t samba_share_t /srv/samba/public/ -R
smbdとnmbdを再起動します。
sudo systemctl restart smb nmb
WindowsからSamba共有フォルダにアクセスする
同じネットワーク内にあるWindowsコンピューターで、ファイルエクスプローラーを開き、[Network
]をクリックします。 左側のペイン。次のメッセージが表示された場合は、メッセージをクリックして、ネットワーク検出とファイル共有をオンにする必要があります。
File sharing is turned off. Some network computers and devices might not be visible.
次に、\\
と入力します \\192.168.0.102
のように、ファイルエクスプローラーのアドレスバーにSambaサーバーのIPアドレスが続きます。 。 Sambaサーバー上の共有リソースのリストが表示されます。
次に、共有フォルダをダブルクリックします。プライベート共有にアクセスするには、sambaのユーザー名とパスワードを入力する必要があります。パブリックシェアにアクセスするためにそうする必要はありません。
接続すると、Samba共有フォルダー内のファイルの読み取り、書き込み、および削除を行うことができます。
接続エラー
次のエラーが発生した場合:
You do not have permission to access \\hostname\share-name. Contact your network administrator to request access.
コマンドプロンプトからSamba共有に接続してみることができます。コマンドプロンプトを開き、次のコマンドを実行して現在のSambaセッションを閉じます。
net use \\samba-server-ip\share-name /delete
次に、次のコマンドを使用してSamaba共有に接続します。
net use \\samba-server-ip\share-name /user:samba-username password
上記のコマンドが正常に完了すると、ファイルエクスプローラーの[ネットワーク]タブに移動し、Samba共有にアクセスできるようになります。
ドライブマッピング
Windowsオペレーティングシステムの機能の1つは、ドライブ文字(S :など)をリモートディレクトリにマップする機能です。ドライブ文字をマップするにはS:
Samba共有に移動するには、Samba共有フォルダを右クリックして、ネットワークドライブのマッピングを選択します。 。次に、ドライブ文字を選択して[完了]をクリックします。
ドライブマッピングが確立されると、アプリケーションはドライブ文字S:
を介してSamba共有内のファイルにアクセスできます。 。また、このSamba共有は、Windowsコンピューターにログインすると自動的にマウントされます。
Linux上のNautilusファイルマネージャーでSamba共有フォルダーにアクセスする
Nautilusファイルマネージャーを使用している場合は、[Other Locations
]をクリックします 左側のペイン。下部に、サーバーに接続するオプションが表示されます。 。 Samba共有にアクセスするには、smb://
と入力します 続いてSambaサーバーのIPアドレスを入力し、Enterキーを押します。例:
- smb://192.168.0.102
Sambaサーバー上の共有リソースのリストが表示されます。
プライベート共有フォルダをクリックした場合は、Sambaのユーザー名とパスワードを入力する必要があります。パブリック共有フォルダをクリックした場合は、匿名で接続することを選択します。
LinuxのコマンドラインからSamba共有を自動的にマウントする
起動時にSamba共有を自動的にマウントする必要がある場合は、コマンドラインを使用してマウントし、/etc/fstab
にエントリを追加できます。 ファイル。これを行うには、cifs-utils
をインストールする必要があります パッケージ。
CentOS / RHEL
sudo dnf install cifs-utils
Debian / Ubuntu
sudo apt install cifs-utils
次に、Samba共有のマウントポイントを作成します。
sudo mkdir /mnt/samba-private
これで、次のコマンドを使用してプライベート共有フォルダをマウントできます。
sudo mount -t cifs -o username=your_samba_username //192.168.0.102/private /mnt/samba-private/
Sambaパスワードの入力を求められます。その後、/mnt/samba-private/
にマウントされます ディレクトリ。
Samba共有を自動的にマウントするには、/etc/fstab
を編集します ファイル。
sudo nano /etc/fstab
ファイルに次の行を追加します。
//192.168.0.102/private /mnt/samba-private cifs x-systemd.automount,_netdev,credentials=/etc/samba-credential.conf,uid=1000,gid=1000,x-gvfs-show 0 0
場所:
- //192.168.0.102/プライベート :SambaサーバーのIPアドレスと共有名。
- / mnt / samba-private :Samba共有のマウントポイント。
- cifs :ファイルシステムタイプ
- x-systemd.automount :このオプションは、ファイルシステムの自動マウントユニットを作成するようにsystemdに指示します。これを使用するのは、ネットワークにアクセスした後にリモートファイルシステムをマウントできるためです。
- _netdev :これは、マウントにネットワークが必要であることを指定します。
- クレデンシャル= :Linuxは、
/etc/samba-credential.conf
でクレデンシャルを探す必要があります ファイル。 - uid =1000、gid =1000 :デフォルトでは、マウントされたファイルシステムはrootユーザーが所有します。 uidを使用します およびgid ファイルシステムの所有権を変更します。通常、独自の uidを使用します およびgid 、デフォルトでは両方とも1000です。
- x-gvfs-show :GNOMEデスクトップ環境またはその派生物を使用している場合は、このオプションを使用して、マウントされたファイルシステムをファイルマネージャーに表示できます。
ファイルを保存して閉じます。次に、資格情報ファイルを作成します。
sudo nano /etc/samba-credential.conf
ファイルに次の行を追加します。
username=your_samba_username password=samba_password domain=WORKGROUP
ファイルを保存して閉じます。 rootユーザーのみがこのファイルを読み取ることができることを確認してください。
sudo chmod 600 /etc/samba-credential.conf
ここでLinuxコンピュータを再起動すると、Samba共有が自動的にマウントされます。
トラブルシューティングのヒント
Sambaサーバーが期待どおりに機能していない場合は、/var/log/samba/
の下にあるログファイルを確認できます。 ディレクトリ。より多くの情報をログに記録する場合は、/ etc / samba / smb.confファイルの[global]セクションに次の行を追加して、ログレベルを上げることができます。
log level = 2