インストール - Samba

提供:MochiuWiki : SUSE, EC, PCB
2022年7月28日 (木) 16:37時点におけるWiki (トーク | 投稿記録)による版 (→‎Sambaの設定)
ナビゲーションに移動 検索に移動

概要

ここでは、Sambaを使用してファイルサーバを構築する。
ネットワークに接続していないと、Sambaをインストールしても外部からアクセスができないので、既存のネットワークに接続すること。
必ず、Linuxを固定IPアドレスに設定すること。(ここでは192.168.1.5とする)


Sambaをインストール

まず、最新パッケージリストを取得するため、以下のコマンドを実行する。

# CentOS
sudo yum update

# SUSE
sudo zypper update

# Raspberry Pi
sudo apt-get update


次に、Sambaをインストールするため、以下のコマンドを実行する。

# CentOS
sudo yum install samba samba-client

# SUSE
sudo zypper install samba samba-client

# Raspberry Pi
sudo apt-get install samba



Sambaの設定

ホームディレクトリにSambaで使用する共有ディレクトリを作成する。

mkdir ~/Common


Samba の設定ファイルであるsmb.confを編集する。

sudo vi /etc/samba/smb.conf


smb.confの末尾に以下の記述を追加して保存する。

# [global]セクションの直下に、以下の2行を追記する
unix charset = UTF-8
dos charset = CP932

# [global]セクションのworkgroupキー
# ドメインを設定している場合は変更する
workgroup = WORKGROUP

# [global]セクションのhosts allowキーおよび各共有設定のセクションに追記
# アクセス制限を行う場合は、アクセスを許可するIPアドレスを指定する
hosts allow = 192.168.2. 192.168.1.20/24

# 126行目あたり : 認証なしでアクセスする場合は追記する
security = <ユーザ名>
passdb backend = tdbsam
map to guest = Bad User

# 末尾に以下を追記する
[Common]
comment = Shared Directory on Samba
path = /home/<ユーザ名>/Common
read only = no
browsable = yes
public = no
guest ok = no
available = yes
valid users = <Sambaに登録したユーザ名1> <Sambaに登録したユーザ名2> <Sambaに登録したユーザ名3> ...
#force user = <サーバのユーザ名>


設定項目の意味を、以下に示す。

  • available, valid users
    以下の2つをセットで設定する時、hogeユーザ以外はログインできない。
    available = yes
    valid users = hoge

  • force user
    どのユーザでログインしても、内部的にhogeでログインして接続する。この時、そのユーザ名とパスワードが求められる。
    force user = hoge

  • public, guest ok
    パスワードなしでアクセスするためguestを許可する。publicキーとguest okキーは同じ意味のキーである。
    public = yes
    guest ok = yes

  • map to guest
    Sambaにアクセスする時、有効なユーザとして認証されなかった場合の動作を指定するパラメータである。

    設定値を以下に示す。
    • Never
      不正なパスワードによるユーザのログイン要求を拒否して、ゲスト認証は許可しない。
    • Bad User
      存在するユーザに対する不正なパスワードによるログイン要求は拒否する。
      存在しないユーザを指定された場合は、ゲスト認証であるとみなして、guest accountパラメータに定義されたユーザでログインする。
    • Bad Password
      存在しないユーザを指定された場合に加えて、存在するユーザに対する不正なパスワードによるログイン要求も、ゲスト認証であるとみなして、
      guest accountパラメータに定義されたユーザでログインする。
    • Bad Uid
      Sambaがドメインモードのセキュリティで構成されている環境において、認証が成功したにも関わらずUNIX側のユーザアカウントが存在しない場合に、
      guest accountパラメータに定義されたユーザでログインする。


Sambaを再起動する。

sudo systemctl restart smbd
sudo systemctl restart nmbd


ファイアーウォールを有効にしている場合は、Sambaサービスの許可が必要である。

sudo firewall-cmd --permanent --add-service=samba
または
sudp firewall-cmd --permanent --add-port=445/tcp

sudo firewall-cmd --reload


SELinuxを有効にしている場合は、SELinuxコンテキストの変更が必要である。

sudo setsebool -P samba_enable_home_dirs on
sudo restorecon -R /home/<ユーザ名>/Common



動作の確認

エクスプローラまたは[ファイル名を指定して実行]にて、
下記のように、IPアドレスまたはホスト名を入力して、共有ディレクトリが表示できるか確認する。

\\192.168.1.5
または
\\RASPBERRYPI



Sambaへのユーザ登録

Sambaは独自でユーザの管理をするので、Sambaへのユーザ登録をすることができる。

Sambaと通常サーバは、別々にユーザを管理するが、同一のユーザ名とパスワードで問題ない。
クライアントからSambaにアクセスしたときに、認証画面において、ユーザ名とパスワードを入力することになる。

Sambaのユーザ名とパスワードを登録する方法を、以下に示す。
ただし、登録できるユーザは、既にサーバに存在するユーザのみである。

また、Sambaのユーザ登録のコマンドは、Samba2.xではsmbpasswdコマンド、Samba3.xではpdbeditコマンドとなる。

# Sambaのユーザ名の一覧を表示
sudo pdbedit -L

# 詳細なユーザ名の一覧を表示
sudo pdbedit -L -v

# ユーザを登録する (パスワードを2回入力して設定する)
sudo pdbedit -a <ユーザ名>

# Sambaのユーザを削除する
sudo pdbedit -x <ユーザ名>


Sambaユーザのパスワードを変更する場合、smbpasswdコマンドを使用する。

sudo smbpasswd <ユーザ名>


次に、/etc/samba/smb.confファイルを以下のように編集する。

sudo vi /etc/samba/smb.conf


# /etc/samba/smb.confファイル

public = no
# force user = pi  # コメントする
valid users = <登録するユーザ名>


最後に、Sambaを再起動する。

sudo systemctl restart smbd
sudo systemctl restart nmbd


Sambaユーザのパスワードがサーバとは別管理になる理由は、
Linuxのパスワード管理の暗号化方式と、Sambaのパスワード管理の暗号化方式が異なるためである。
Sambaは、Windowsのパスワード管理の暗号化に合わせているため、同一のユーザ名とパスワードであっても、Sambaに登録をする。

暗号化方式を統一することもできるが、セキュリティ面から標準の設定の方がよい。