「インストール - Samba」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(文字列「presire220a-22」を「presire2-22」に置換)
 
(同じ利用者による、間の77版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
ここでは、Sambaを使用してファイルサーバを構築する。<br>
Sambaは、Linux上でWindowsのネットワーク機能を実現するソフトウェアである。<br>
ネットワークに接続していないと、Sambaをインストールしても外部からアクセスができないので、既存のネットワークに接続すること。<br>
Sambaを導入すると、Windowsのファイルサーバと同じ役割を果たす、または、WindowsファイルサーバをLinuxから利用することもできる。<br>
必ず、Linuxを固定IPアドレスに設定すること。(ここでは192.168.1.5とする)<br>
つまり、Windowsファイルサーバのクライアント機能も持っている。<br>
<br>
その他、プリンタサーバの機能や、企業で使用されるWindowsドメイン(Active Directory)のサーバになる機能も持つ。<br>
Samba 4以降において、Windowsのドメインコントローラとなることができるため、既存のWindowsサーバを丸ごと置き換えることも可能である。<br>
<br>
Sambaを使用してファイルサーバを構築するには、クライアント端末からアクセスができるようにするため、既存のネットワークに接続する必要がある。<br>
また、サーバを静的IPアドレスに設定することが必要である。<br>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|-
! style="text-align: center;background-color:#66CCFF;" | サーバプロセス
! style="text-align: center;background-color:#66CCFF;" | 説明
|-
| smbd || ファイル共有、認証等
|-
| nmbd || ブラウジング機能、NetBIOS名前解決、WINSサーバ等
|-
| winbindd || Winbind機能
|}
</center>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|-
! style="text-align: center;background-color:#66CCFF;" | ポート番号
! style="text-align: center;background-color:#66CCFF;" | 説明
|-
| 137 / UDP || NetBIOS名前解決やブラウジング
|-
| 138 / UDP || NetBIOS名前解決やドメインログオン
|-
| 139 / TCP || ファイル共有
|-
| 445 / TCP || ファイル共有
|}
</center>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|-
! style="text-align: center; background-color:#44CC99;" | 参考書
|- style="text-align: center;"
| <html><a href="https://www.amazon.co.jp/%E3%80%90%E6%94%B9%E8%A8%82%E6%96%B0%E7%89%88%E3%80%91%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89%E3%81%AE%E5%AE%9F%E4%BE%8B%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8BSamba%EF%BC%BB%E5%AE%9F%E8%B7%B5%EF%BC%BD%E5%85%A5%E9%96%80-%E9%AB%99%E6%A9%8B%E5%9F%BA%E4%BF%A1-ebook/dp/B01CXL8NL6?_encoding=UTF8&linkCode=ll1&tag=presire2-22&linkId=817d35d06e681134e6e05d318abbc814&language=ja_JP&ref_=as_li_ss_tl" target="_blank"><img style="width: 250px; height: auto;" src="https://m.media-amazon.com/images/I/81wRPjbdhML._SL1500_.jpg" ></a><br>
<center><a target="_blank" href="https://www.amazon.co.jp/%E3%80%90%E6%94%B9%E8%A8%82%E6%96%B0%E7%89%88%E3%80%91%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89%E3%81%AE%E5%AE%9F%E4%BE%8B%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8BSamba%EF%BC%BB%E5%AE%9F%E8%B7%B5%EF%BC%BD%E5%85%A5%E9%96%80-%E9%AB%99%E6%A9%8B%E5%9F%BA%E4%BF%A1-ebook/dp/B01CXL8NL6?_encoding=UTF8&linkCode=ll1&tag=presire2-22&linkId=70fb1fa0ce0f5de14e7027fb004dc83e&language=ja_JP&ref_=as_li_ss_tl">Samba[実践]入門<br>サーバ構築の実例がわかる</a></center></html>
|}
</center>
<br><br>
<br><br>


8行目: 54行目:
==== パッケージ管理システムからインストール ====
==== パッケージ管理システムからインストール ====
最新パッケージリストを取得する。<br>
最新パッケージリストを取得する。<br>
  # CentOS
  # RHEL
  sudo yum update
  sudo dnf update
   
   
  # SUSE
  # SUSE
15行目: 61行目:
   
   
  # Raspberry Pi
  # Raspberry Pi
  sudo apt-get update
  sudo apt update
<br>
<br>
Sambaをインストールする。<br>
Sambaをインストールする。<br>
  # CentOS
  # RHEL
  sudo yum install samba samba-client
  sudo dnf install samba samba-client
   
   
  # SUSE
  # SUSE
25行目: 71行目:
   
   
  # Raspberry Pi
  # Raspberry Pi
  sudo apt-get install samba
  sudo apt install samba
<br>
<br>
==== ソースコードからインストール ====
==== ソースコードからインストール ====
Sambaのビルドに必要なライブラリをインストールする。<br>
Sambaのビルドに必要なライブラリをインストールする。<br>
Kerberos 1.15.1以降が必要となることに注意する。<br>
Kerberos 1.15.1以降が必要となることに注意する。<br>
  # CentOS
  # RHEL
  sudo yum install tar gcc gdb rpcgen docbook-style-xsl dbus-devel readline-devel zlib-devel gnutls-devel systemd-devel \
  sudo dnf install tar gcc gdb rpcgen docbook-style-xsl dbus-devel readline-devel zlib-devel gnutls-devel systemd-devel \
                   gpgme-devel keyutils-libs-devel krb5-workstation jansson-devel libacl-devel libaio-devel cups-devel \
                   gpgme-devel keyutils-libs-devel krb5-workstation jansson-devel libacl-devel libaio-devel cups-devel \
                   libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools libxml2-devel libxslt \
                   libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools libxml2-devel libxslt \
38行目: 85行目:
   
   
  # SUSE
  # SUSE
  sudo zypper install tar gcc gdb rpcgen gnutls-devel gpgme-devel zlib-devel dbus-1-devel \
  sudo zypper install tar acl attr autoconf bison flex ccache hostname gawk sed rsync pkgconfig htop lcov intltool rpcgen rpcsvc-proto-devel \
                     readline-devel libjansson-devel keyutils-devel krb5-server krb5-devel libacl-devel \
                    tree patch procps psmisc rng-tools gcc gdb glib2-devel glibc-locale ncurses-devel readline-devel zlib-devel dbus-1-devel \
                     libaio-devel libarchive-devel libattr-devel libblkid-devel libtasn1-devel systemd-devel \
                     libicu-devel libcap-devel libpcap-devel libtevent-devel liburing2-devel \
                     libxml2-devel libxslt-devel docbook5-xsl-stylesheets lmdb lmdb-devel openldap2-devel pam-devel \
                    libjansson-devel keyutils-devel krb5-server krb5-client krb5-devel \
                     perl perl-ExtUtils-MakeMaker perl-Parse-Yapp popt-devel cups-devel \
                     libacl-devel libaio-devel libarchive-devel libattr-devel libblkid-devel libtasn1-devel systemd-devel \
                     python3-devel python3-cryptography python3-dnspython python3-gpg python3-Markdown \
                     libxml2-devel libxslt libxslt-devel docbook_4 docbook5-xsl-stylesheets lmdb lmdb-devel openldap2-devel pam-devel \
                     python3-talloc-devel libtalloc-devel libcmocka-devel libtdb-devel tracker-devel libnscd-devel \
                    gnutls-devel gpgme-devel popt-devel cups-devel libbsd-devel libnsl-devel liburing2-devel libbd_dm-devel \
                     glusterfs-devel libtirpc-devel libntirpc-devel libavahi-devel
                     perl perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Archive-Tar-Wrapper perl-JSON perl-JSON-XS perl-Test-Base \
                     python3-devel python3-cryptography python3-dnspython python3-gpg python3-Markdown python3-semanage \
                     python3-talloc-devel python3-iso8601 python3-pyasn1 python3-setproctitle policycoreutils-python \
                    libtalloc-devel libcmocka-devel libtdb-devel tracker-devel libnscd-devel libuuid-devel libunwind-devel \
                     xfsprogs-devel glusterfs-devel libtirpc-devel libntirpc-devel libavahi-devel chrpath libcephfs-devel \
                    lsb-release system-user-nobody dnf-utils \
                    bind-utils  # 内部DNSサーバを使用する場合
   
   
  # Raspberry Pi
  # Raspberry Pi
51行目: 104行目:
  # もし、Sambaにおいて、内部DNSサーバを使用する場合、BINDパッケージは省略できる
  # もし、Sambaにおいて、内部DNSサーバを使用する場合、BINDパッケージは省略できる
  # ただし、ダイナミックDNSのサポートを有効にするため、nsupdateを含むパッケージが必要となる
  # ただし、ダイナミックDNSのサポートを有効にするため、nsupdateを含むパッケージが必要となる
  sudo apt-get install acl attr autoconf bison flex pkg-config \
  sudo apt install acl attr autoconf bison flex pkg-config \
                      build-essential gdb libncurses5-dev libreadline-dev \
                  build-essential gdb libncurses5-dev libreadline-dev \
                      debhelper dnsutils docbook-xml docbook-xsl xsltproc krb5-user \
                  debhelper dnsutils docbook-xml docbook-xsl xsltproc krb5-user \
                      libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev \
                  libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev \
                      libcap-dev libcups2-dev libgnutls28-dev nettle-dev libgpgme-dev libjansson-dev \
                  libcap-dev libcups2-dev libgnutls28-dev nettle-dev libgpgme-dev libjansson-dev \
                      libldap2-dev libpam0g-dev libpopt-dev \
                  libldap2-dev libpam0g-dev libpopt-dev \
                      perl perl-modules libparse-yapp-perl libjson-perl \
                  perl perl-modules libparse-yapp-perl libjson-perl \
                      python-all-dev python-crypto python-dbg python-dev python-dnspython \
                  python-all-dev python-dev python3-dev python-crypto python-dbg python-dnspython \
                      python3-dnspython python-gpgme python3-gpgme python-markdown python3-markdown \
                  python3-dnspython python-gpgme python3-gpgme python-markdown python3-markdown \
                      python3-dev zlib1g-dev liblmdb-dev lmdb-utilsa \
                  zlib1g-dev liblmdb-dev lmdb-utilsa \
                      bind9utils  # 内部DNSサーバを使用する場合
                  bind9utils  # 内部DNSサーバを使用する場合
 
  python3-dev xsltproc zlib1g-dev liblmdb-dev lmdb-utilsa
<br>
<br>
[https://download.samba.org/pub/samba/ Sambaの公式Webサイト]にアクセスして、ソースコードをダウンロードする。<br>
[https://download.samba.org/pub/samba/ Sambaの公式Webサイト]または[https://github.com/samba-team/samba SambaのGithub]にアクセスして、ソースコードをダウンロードする。<br>
ダウンロードしたファイルを解凍する。<br>
ダウンロードしたファイルを解凍する。<br>
  tar xf samba-<バージョン>.tar.gz
  tar xf samba-<バージョン>.tar.gz
72行目: 123行目:
Sambaをビルドおよびインストールする。<br>
Sambaをビルドおよびインストールする。<br>
<u>ビルドディレクトリを作成する場合、Sambaのビルドに失敗することに注意する。</u><br>
<u>ビルドディレクトリを作成する場合、Sambaのビルドに失敗することに注意する。</u><br>
  ./configure --prefix=<Sambaのインストールディレクトリ> --enable-cups --with-systemd --systemd-install-services
  ./configure --prefix=<Sambaのインストールディレクトリ> --enable-cups --with-systemd \
            --systemd-install-services # Sambaの管理向けデーモンをインストールする場合
  make -j $(nproc)
  make -j $(nproc)
  make install
  make install
<br>
Sambaの設定ファイルを作成する。<br>
vi /<Sambaのインストールディレクトリ>/etc/smb.conf
<br>
# /<Sambaのインストールディレクトリ>/etc/smb.confファイル
[global]
unix charset = EUC-JP
dos charset = CP932
display charset = CP932
workgroup = WORKGROUP
server string = Samba Server
security = USER
encrypt passwords = Yes
smb passwd file = /etc/samba/smbpasswd
guest account = nobody
unix password sync = no
log file = /var/log/samba/log.%m
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = No
<br>
<br>
SambaのSystemdサービスファイルを、/etc/systemd/systemディレクトリにコピーする。<br>
SambaのSystemdサービスファイルを、/etc/systemd/systemディレクトリにコピーする。<br>
102行目: 133行目:
SambaのSystemdサービスファイルを読み込む。<br>
SambaのSystemdサービスファイルを読み込む。<br>
  sudo systemctl daemon-reload
  sudo systemctl daemon-reload
<br>
Sambaを起動する。<br>
sudo systemctl start smb nmb
<br>
もし、Sambaが起動しない場合、/<Sambaのインストールディレクトリ>/var/run/ncalrpcディレクトリを削除する。<br>
sudo rm -r /<Sambaのインストールディレクトリ>/var/run/ncalrpc
<br><br>
<br><br>


== Sambaの設定 ==
== Sambaの設定 ==
ホームディレクトリにSambaで使用する共有ディレクトリを作成する。<br>
Sambaの設定ファイルを作成する。<br>
  mkdir ~/Common
  # パッケージ管理システムからSambaをインストールしている場合
<br>
Samba の設定ファイルであるsmb.confを編集する。<br>
  sudo vi /etc/samba/smb.conf
  sudo vi /etc/samba/smb.conf
# ソースコードからSambaをインストールしている場合
vi /<Sambaのインストールディレクトリ>/etc/smb.conf
<br>
<br>
smb.confの末尾に以下の記述を追加して保存する。<br>
<syntaxhighlight lang="ini">
  # [global]セクションの直下に、以下の2行を追記する
# /<Sambaのインストールディレクトリ>/etc/smb.confファイル
unix charset = UTF-8
dos charset = CP932
# smb.conf is the main Samba configuration file.
  # Samba全体の設定例
[global]
    unix charset = UTF-8
    dos charset = CP932
    server string = Samba Server %v
    workgroup = <Windowsネットワーク名またはドメイン名)  例. WORKGROUP>
    passdb backend = tdbsam
    printing = cups
    printcap name = cups
    printcap cache time = 750
    cups options = raw
    map to guest = Bad User
    logon path = \\%L\profiles\.msprofile
    logon home = \\%L\%U\.9xprofile
    logon drive = P:
    usershare allow guests = Yes
    security = USER
    smb passwd file = <Sambaのユーザパスワードファイルのパス(smbpasswdコマンドを使用する場合)  例. /<Sambaのインストールディレクトリ>/etc/samba/smbpasswd>
    guest account = nobody
    unix password sync = no
    log file = <Sambaのログファイルのパス  例. /var/log/samba/log.%m>
    max log size = 50
    socket options = <ソケットプオプション  例. TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192>
    dns proxy = No
    # アクセス制限(許可する範囲)
    hosts allow = <許可するIPアドレスまたはドメイン名>
                  # 例1. 192.168.1. 127.0.
                  # 例2. 192.168.1.20/24 192.168.1.30/255.255.255.0
                  # 例3. myhost.mynet.edu.au
# Linuxユーザの各ホームディレクトリを一括して共有するためのセクションの設定例
# 各ユーザごとにホームディレクトリの共有を定義する必要がない
[homes]
    comment = Home Directories
    valid users = %S, %D%w%S
    browseable = No
    read only = No
    inherit acls = Yes
    guest ok = No
# 特定のロービングプロファイルシェアを提供する
# デフォルトでは、ユーザのホームディレクトリを使用する
[profiles]
    comment = Network Profiles Service
    path = %H
    read only = No
    store dos attributes = Yes
    create mask = 0600
    directory mask = 0700
    guest ok = No
# ファイルに記述されたプリンタに接続できる (ユーザ名はprintcap)
# 共有名が存在するプリンタ名に設定される
# サービスにゲストのアクセス許可が無く、クライアントからユーザ名が与えられていない場合は、ユーザ名はプリンタの名前に設定される
[printers]
    comment = All Printers
    path = /var/tmp
    printable = Yes # プリンタ共有として利用する
    print ok = Yes  # プリンタ共有として利用する
    browseable = No
    writeable = No
    guest ok = No
    create mask = 0600
# Windowsがプリンタドライバの自動ダウンロードを行う際の共有名を指定する特殊なセクション
# Windows側でプリンタドライバが無い場合、[print$]セクションからドライバを検索する
[print$]
    comment = Printer Drivers
    path = /var/lib/samba/drivers
    write list = @ntadmin root
    force group = ntadmin
    create mask = 0664
    directory mask = 0775
# 任意の共有ディレクトリ 1
# 個々のユーザごとのホームディレクトリを共有するための設定を定義する
# ユーザ名ごとに適用するプロファイルや追加の設定を指定できる
# 各ユーザは自分のホームディレクトリにアクセスでき、他のユーザのホームディレクトリにはアクセスできない
[users]
    comment = All users
    path = /home/%U
    read only = No
    create mask = 0700    # 新しいファイルが作成された時のデフォルトのアクセス許可を指定する
    directory mask = 0700  # 新しいディレクトリが作成された時のデフォルトのアクセス許可を指定する
    inherit acls = Yes
    veto files = /aquota.user/groups/shares/
    browseable = no        # 共有フォルダがネットワーク上で見えるかどうかを指定します。
    valid users = %U      # この共有フォルダにアクセスできるユーザ名を指定する
                          # 例えば、%Uは現在のユーザ名に置き換えられる
   
   
  # [global]セクションのworkgroupキー
  # 任意の共有ディレクトリ 2
  # ドメインを設定している場合は変更する
# グループ単位で共有フォルダを設定する
workgroup = WORKGROUP
# 特定のグループに属するユーザがアクセスできる共有フォルダを定義する
[groups]
    comment = All groups
    path = /srv/samba/groups/%G # 共有フォルダのパスを指定する
                                # 例えば、%Gは現在のグループ名に置き換えられる
    read only = No
    create mask = 0770          # 新しいファイルが作成されたときのデフォルトのアクセス許可を指定する
    directory mask = 0770        # 新しいディレクトリが作成されたときのデフォルトのアクセス許可を指定する
    guest ok = No
   
   
  # [global]セクションのhosts allowキーおよび各共有設定のセクションに追記
  # 任意の共有ディレクトリ 3
  # アクセス制限を行う場合は、アクセスを許可するIPアドレスを指定する
[<共有ディレクトリ名  例. Share>]
  hosts allow = 192.168.2. 192.168.1.20/24
  comment = Samba on Linux
  path = <共有ディレクトリのパス  例. /home/<ユーザ名>/Public> # 共有ディレクトリのパスを指定する
  read only = No                        # 読み込みのみにするかどうかを指定する
  writable = Yes                        # 書き込みを許可するかどうかを指定する
  #read list = <ユーザ名またはグループ名>    # 読み込みが例外的に許可されるユーザを指定する (グループを指定する時は@<グループ名>を使用する)
  #write list = <ユーザ名またはグループ名>    # 書き込みが例外的に許可されるユーザを指定する (グループを指定する時は@<グループ名>を使用する)
  browsable = Yes                        # ブラウジングした時に表示されるかどうかを指定する
                                          # ただし、共有名を直接指定する場合もアクセスすることができる
  public = Yes                          # ゲストログインを許可するかどうかを指定する (publicキーとguest okキーは同じ意味)
  guest ok = Yes                        # ゲストログインを許可するかどうかを指定する (publicキーとguest okキーは同じ意味)
  #force user = <ユーザ名>                # 共有内に作成するファイルおよびディレクトリにおいて、所有者を強制的に指定したユーザにする
  #force group = <グループ名>              # 共有内に作成するファイルおよびディレクトリにおいて、所有グループを強制的に指定したグループにする
  #inherit acls = Yes                    # 新しく作成されたファイルが、親ディレクトリのACL (アクセス制御リスト) を継承するかどうかを制御する
  #veto files = <ファイル名およびディレクトリ名> # 表示およびアクセスさせないファイルやディレクトリを指定する
  #hide dot files = No                  # 隠し属性を適用するかどうかを指定する
  #hide files = <ファイル名およびディレクトリ名>  # ファイルおよびディレクトリを表示させないファイル名またはディレクトリ名を指定する
                                          # ただし、アクセスは可能である
  #available = Yes
  #valid users = <Sambaのユーザ名1またはグループ名1> <Sambaのユーザ名2またはグループ名2> ... # アクセス可能なユーザを指定する (グループを指定する時は@<グループ名>を使用する)
</syntaxhighlight>
<br><br>
 
== 設定ファイルの確認 ==
Sambaの設定ファイルが正常に設定されているかどうかを確認する。<br>
testparm または sudo testparm
   
   
  # 126行目あたり : 認証なしでアクセスする場合は追記する
  # 設定ファイルのパスを指定する場合
security = <ユーザ名>
testparm <smb.confファイルのパス>
  passdb backend = tdbsam
または
  map to guest = Bad User
sudo testparm <smb.confファイルのパス>
<br>
testparmのオプションを以下に示す。<br>
* -sオプション
*: 設定ファイルにおいて、有効な設定のみを表示する。
* -vオプション
*: 詳細な出力を表示する。
* --show-all-parametersオプション
*: 全てのパラメータとその値を表示する。
* --suppress-promptオプション
*: プロンプトを表示せずに実行する。
<br><br>
 
== Sambaの設定項目 ==
Sambaの設定ファイル (smb.confファイル) では、各セクション ([global]セクションを除く) は、共有リソースを記述する。<br>
<br>
設定ファイルには、[global]セクション、[homes]セクション、[printers]セクションの3つの特別なセクションがある。<br>
それ以外のセクションは、ユーザ定義のセクションである。<br>
<br>
Sambaの設定ファイルのセクション名において、大文字・小文字は区別されない。<br>
そのため、以下に示すような記述は同じように認識される。<br>
<br>
<u>ただし、一般的な慣習としては、小文字のセクション名が最も広く使われており、設定ファイルの可読性や保守性の観点からも、小文字で統一することを推奨する。</u><br>
  <syntaxhighlight lang="ini">
  # [global]セクションの記述例
   
   
  # 末尾に以下を追記する
  [global]
  [Common]
  [GLOBAL]
  comment = Shared Directory on Samba
  [Global]
  path = /home/<ユーザ名>/Common
  </syntaxhighlight>
read only = no
<br>
browsable = yes
==== [global]セクション ====
public = no
Sambaサーバ全体に適用される設定を記述する特殊なセクションである。<br>
guest ok = no
available = yes
valid users = <Sambaに登録したユーザ名1> <Sambaに登録したユーザ名2> <Sambaに登録したユーザ名3> ...
#force user = <サーバのユーザ名>
<br>
<br>
設定項目の意味を、以下に示す。<br>
<center>
* available, valid users
{| class="wikitable" | style="background-color:#fefefe;"
*: 以下の2つをセットで設定する時、hogeユーザ以外はログインできない。
|+ [global]セクションの設定項目
*: available = yes
|-
*: valid users = hoge
! style="background-color:#66CCFF;" | キー
! style="background-color:#66CCFF;" | 意味
|-
| server string || サーバ名等の説明を記述する。<br>ブラウズリストでコンピュータ名の隣、および、プリンタマネージャにおけるプリンタのコメント欄等に表示される。<br><br>デフォルト値は、<code>Samba %v</code><br>%vは、Sambaのバージョンを表すマクロである。
|-
| netbios name || SambaサーバのNetBIOS名を指定する。<br><br>デフォルト値は、システムのホスト名である。<br>明示的なデフォルト値は無く、システムのホスト名が使用される。
|-
| workgroup || Sambaサーバが、所属するワークグループ名もしくはドメイン名を指定する。<br><br>デフォルト値は、<code>WORKGROUP</code>
|-
| server role || Sambaサーバーの動作モードを指定する。<br><br>デフォルト値は、<code>auto</code>
|-
| hosts allow || 接続を許可するIPアドレスまたはホスト名を指定する。(未指定のIPアドレスまたはホスト名は拒否される)<br><br>デフォルト値は無く、デフォルトで全てのホストからのアクセスを許可する。<br><br>
* 例1. 指定したIPアドレスの範囲内にあるPCからのアクセスを許可する場合
*: <code>192.168.1. 127.0.</code>
*: <br>
* 例2. 指定したIPアドレスとサブネットマスクの組み合わせの範囲内にあるPCからのアクセスを許可する場合
*: <code>192.168.1.20/24 192.168.1.30/255.255.255.0</code>
*: <br>
*: <br>
* force user
* 例3. 指定したドメインの範囲内にあるPCからのアクセスを許可する場合
*: どのユーザでログインしても、内部的にhogeでログインして接続する。この時、そのユーザ名とパスワードが求められる。
*: <code>myhost.mynet.edu.au</code>
*: force user = hoge
*: <br>
*: <br>
* public, guest ok
* 例4. 192.168.* 内の全てのIPアドレスを許可、ただし、192.168.1.30は禁止する場合
*: パスワードなしでアクセスするためguestを許可する。publicキーとguest okキーは同じ意味のキーである。
*: <code>192.168.* EXCEPT 192.168.1.30</code>
*: public = yes
|-
*: guest ok = yes
| guest account || アカウントが存在しないユーザはゲストとしてアクセスできる。<br>nobody以外を使用する場合は、予め、/etc/passwdファイルに該当ユーザを作成する必要がある。<br><br>デフォルト値は、<code>nobody</code>
|-
| Bad User || 存在しないユーザがアクセスする場合は、ゲスト認証であるとみなして、<code>guest account</code>キーで定義されたユーザでログインする。
|-
| Bad Password || 上記に加えて、パスワード入力ミスの場合もゲスト認証であるとみなす。
|-
| Never || ゲスト認証を許可しない。
|-
| map to guest || Sambaユーザとして認証できない場合の動作を指定する。<br><br>デフォルト値は、<code>Never<br>"Bad User"と"Bad Password"は独立した設定ではなく、"map to guest"キーの選択肢である。</code><br><br>設定値<br>
* Never
*: 不正なパスワードによるユーザのログイン要求を拒否して、ゲスト認証は許可しない。
* Bad User
*: 存在するユーザに対する不正なパスワードによるログイン要求は拒否する。
*: 存在しないユーザを指定された場合は、ゲスト認証であるとみなして、guest accountパラメータに定義されたユーザでログインする。
* Bad Password
*:存在しないユーザを指定された場合に加えて、存在するユーザに対する不正なパスワードによるログイン要求も、ゲスト認証であるとみなして、
*: guest accountキーに定義されたユーザでログインする。
* Bad Uid
*: Sambaがドメインモードのセキュリティで構成されている環境において、認証が成功したにも関わらずUnix側のユーザアカウントが存在しない場合、
*: guest accountキーで定義されたユーザでログインする。
*: <br>
*: <br>
* map to guest
*: ただし、SambaでWinBinddが機能している場合、WindowsユーザがUnixのユーザとして動作できるようになるため、
*: Sambaにアクセスする時、有効なユーザとして認証されなかった場合の動作を指定するパラメータである。
*: 認証に成功したにも関わらずUnix側のユーザアカウントが存在しない、ということは発生しない。
*: そのため、winbinddが機能するSamba 3以降ではBad Uidはほとんど利用されていない。
*: <br>
*: <br>
*: 設定値を以下に示す。
*: なお、Samab 2では、Bad Uidがデフォルトとして設定されている。
** Never
|-
**: 不正なパスワードによるユーザのログイン要求を拒否して、ゲスト認証は許可しない。
| log file || ログファイルのパスを指定する。<br>接続元ホストを示す変数<code>%m</code>を使用する場合、接続元ホストごとにログファイルを分けることができる。<br><br>デフォルト値は、<code>/var/log/samba/log.%m</code><br>%mはクライアントのNetBIOS名を表すマクロである。
** Bad User
|-
**: 存在するユーザに対する不正なパスワードによるログイン要求は拒否する。
| max log size || ログファイルの最大サイズを指定する。<br>値が0の場合は、サイズは無制限となる。<br><br>デフォルト値は、<code>1000</code>[kB]
**: 存在しないユーザを指定された場合は、ゲスト認証であるとみなして、guest accountパラメータに定義されたユーザでログインする。
|-
** Bad Password
| passdb backend || ユーザアカウント情報を格納するバックエンドを指定する。<br><br>デフォルト値は、<code>tdbsam</code>であり、TDB (Trivial Database) ファイルを使用する。<br><br>
**:存在しないユーザを指定された場合に加えて、存在するユーザに対する不正なパスワードによるログイン要求も、ゲスト認証であるとみなして、
* tdbsam
**: guest accountパラメータに定義されたユーザでログインする。
*: TDBデータベースを使用する方式であり、最も一般的に使用される。
** Bad Uid
*: 小〜中規模の環境に適している。
**: Sambaがドメインモードのセキュリティで構成されている環境において、認証が成功したにも関わらずUNIX側のユーザアカウントが存在しない場合に、
* smbpasswd
**: guest accountパラメータに定義されたユーザでログインする。
*: レガシーな従来型のパスワードファイル方式である。
**: ただし、Sambaでwinbinddが機能している場合、WindowsのユーザがUnixのユーザとして動作できるようになるため、
*: /etc/smbpasswdファイルを使用する。
**: 認証に成功したにも関わらずUNIX側のユーザアカウントが存在しない、ということは発生しない。
* ldapsam
**: そのため、winbinddが機能するSamba 3以降ではBad Uidはほとんど利用されていない。
*: LDAPを使用する方式であり、大規模環境に適している。
**: <br>
*: Active Directoryとの統合が可能。
**: なお、Samab 2.x系では、Bad Uidがデフォルトとして設定されている。
* guest
*: ゲストアクセス用の特別な設定である。
* built-in
*: Sambaの内蔵データベースを使用する。
<br>
なお、複数のバックエンドを組み合わせて使用することも可能である。<br>
<syntaxhighlight lang="ini">
[global]
passdb backend = tdbsam guest
</syntaxhighlight>
|-
| usershare allow guests || ゲストアクセスを持つユーザがユーザ共有を作成することを許可するかどうかを指定する。<br><br>デフォルト値は、<code>no</code><br>"no"は、セキュリティ上の理由からゲストユーザによる共有作成を禁止する。
|-
| logon path || ユーザのローミングプロファイルの場所を指定する。<br>デフォルト値は相対パスを使用しており、実際の場所はサーバ設定に依存する。<br><br>デフォルト値は、<code>\%N%U\profile</code><br>%Nは、このパラメータが使用されるサーバ名<br>%Uは、現在のUNIXユーザ名
|-
| logon home || ユーザのホームディレクトリの場所を指定する。<br>これもデフォルトでは相対パスを使用している。<br><br>デフォルト値は、<code>\%N%U</code><br>%Nは、このパラメータが使用されるサーバ名<br>%Uは、現在のUNIXユーザ名
|-
| logon drive || Windowsクライアントでホームディレクトリをマップするドライブ文字を指定する。<br><br>デフォルトでは設定されていない。
|-
| logon script || ユーザがログインする時に実行するスクリプトを指定する。<br><br>デフォルトでは設定されていない。
|-
| smb passwd file || smbpasswd方式でパスワード認証を行う場合のパスワードファイルのパスを指定する。
|-
| unix password sync || SambaのパスワードとLinuxのパスワードを同期させるかどうかを指定する。<br>この設定を有効にする場合、Sambaのパスワードを変更した後、Linuxユーザのパスワードも変更する必要がある。<br><br>デフォルト値は、<code>no</code><br><br>yesを指定する場合、Sambaを通じてシステムのパスワードが変更されるため、セキュリティリスクが高まる可能性がある。<br>そのため、システムのセキュリティポリシーと整合性があることを確認することが必要となる。
|-
| passwd program || unix password syncキーを有効にした場合、Unixパスワードを変更するために使用するプログラムを指定する。<br><br>デフォルト値は、<code>/usr/bin/passwd %u"</code><br>%uは、変更対象のユーザ名を表す。
|-
| passwd chat || unix password syncキーを有効にした場合、パスワード変更プログラムとの対話を定義する。<br><br>デフォルト値は、一般的なパスワード変更プロンプトに対応している。
|-
| username map || Linuxユーザを別のユーザとマッピングさせて、複数のユーザで共有する。<br><br>デフォルトでは設定されていない。
|-
| wins support || nmbdのWINSサーバとして動作させるかどうかを設定する。
|-
| wins server || WINSサーバのIPアドレスを指定する。
|-
| mangled names || Sambaサーバ上のDOS非互換のファイル名を、DOS互換の名前に置き換えてアクセス可能にする、または、無視するかどうかを制御する。<br>Windowsクライアントで作成したファイルにおいて、大文字 / 小文字の区別や日本語を正しく表示させる。
|-
| mangle case || Windowsクライアントにおいて、長いファイル名に対応する短縮名を作る。<br>よほど古いWindows OSでない限り、この値は<code>No</code>にする。
|-
| short preserve case || DOS 8.3形式のファイル名を、そのまま使用する(<code>Yes</code>)、または、デフォルトの設定に従う(<code>no</code>)かを設定する。
|-
| case sensitive || ファイル名の大文字と小文字を異なる文字として認識するかどうかを設定する。
|-
| default case || 新規ファイルを作成する場合、デフォルトファイル名を大文字(upper)にする、または、小文字(lower)にするかどうかを設定する。<br>デフォルトの値は、<code>lower</code>である。
|-
| username level || 大文字および小文字が混在したユーザ名の扱いを設定する。
|-
| password level || このパラメータの値を大きくするほど、大文字と小文字の混在したパスワードが大文字、または、小文字のみのパスワードと一致するようになる。
|-
| security || Sambaサーバと同じユーザ名を使用する場合は、パラメータ値を<code>User</code>に設定する。
|-
| local master || Sambaをネットワークにおけるマスタブラウザにするかどうかを設定する。
|-
| domain master || Sambaをドメインマスタブラウザにするかどうかを設定する。<br>これにより、Sambaはサブネット間のブラウズリストの照合を行う。<br><br><u>もし、既にWindows NTドメインコントローラが存在する場合は、このオプションを使用しないこと。</u>
|-
| domain logons || クライアントPCに対するドメインログオンサーバにするかどうかを設定する。
|}
</center>
<br>
 
==== [homes]セクション ====
[homes]セクションは、ユーザのホームディレクトリを自動的に共有するために使用する特別なセクションである。<br>
<br>
[homes]セクションは特別な意味を持つため、一部のキーは、通常のセクションの同名のキーとは異なる振る舞いをすることがある。<br>
例えば、valid users = %Sは現在接続しているユーザーのみがそのホームディレクトリにアクセスできるようにする設定である。<br>
<br>
ただし、必ずしも全てのsmb.confファイルに存在するわけではない。<br>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ [homes]セクションの設定項目
|-
! style="background-color:#66CCFF;" | キー
! style="background-color:#66CCFF;" | 意味
|-
| browseable || この共有をネットワーク上で表示するかどうかを制御する。<br>値: <code>yes</code> または <code>no</code><br><br>例: browseable = no
|-
| read only || 共有を読み取り専用にするかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: read only = no
|-
| writable || ユーザに書き込み権限を与えるかどうかを指定する。<br>一般的には read onlyがよく使用されている。<br>値: <code>yes</code> または <code>no</code><br><br>例: writable = yes
|-
| create mask || 新しく作成されるファイルのパーミッションを指定する。<br>値: 8進数のパーミッション値<br><br>例: create mask = 0700
|-
| directory mask || 新しく作成されるディレクトリのパーミッションを指定する。<br>値: 8進数のパーミッション値<br><br>例: directory mask = 0700
|-
| valid users || この共有にアクセスできるユーザを指定する。<br><br>例: valid users = %S
|-
| guest ok || ゲストユーザのアクセスを許可するかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: guest ok = no
|-
| hide dot files || ドットで始まるファイルを隠すかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: hide dot files = yes<br><br><u>[homes]セクションでも一般的に使用される。</u>
|- style="background-color:#e0e0e0;"
| path || Sambaが自動的にユーザのホームディレクトリの基本パスを指定する。<br><br>例: path = /home/%S<br><br><u>[homes]セクションでは一般的に使用されない。</u><br><u>他の共有セクションで指定する。</u>
|-
| veto files || アクセスを拒否するファイルパターンを指定する。<br><br>例: veto files = /.*/.*/<br><br><u>[homes]セクションでも使用可能であるが、</u><br><u>[global]セクションや他の共有セクションでもよく使用される。</u>
|-
| hide files || 特定のファイルやディレクトリを非表示にする。<br><br>例: hide files = /lost+found/*/<br><br><u>[homes]セクションでも使用可能であるが、</u><br><u>[global]セクションや他の共有セクションでもよく使用される。</u>
|- style="background-color:#e0e0e0;"
| follow symlinks || シンボリックリンクをたどるかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: follow symlinks = yes<br><br><u>[homes]セクションでも使用可能であるが、</u><br><u>[global]セクションでより一般的に指定される。</u>
|-
| strict sync || 同期書き込みを厳密に行うかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: strict sync = no<br><br><u>[homes]セクションで使用可能であるが、</u><br><u>パフォーマンスに影響を与える可能性があるため、使用を検討する必要がある。</u>
|- style="background-color:#e0e0e0;"
| case sensitive || ファイル名の大文字小文字を区別するかどうかを指定する。<br>値: <code>yes</code> または <code>no</code> または <code>auto</code><br><br>例: case sensitive = auto<br><br><u>[homes]セクションでも使用可能であるが、</u><br><u>[global]セクションでより一般的に指定される。</u>
|- style="background-color:#e0e0e0;"
| dos filetimes || DOSスタイルのファイルタイムスタンプを使用するかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: dos filetimes = yes<br><br>例: case sensitive = auto<br><br><u>[homes]セクションでも使用可能であるが、</u><br><u>[global]セクションでより一般的に指定される。</u>
|}
</center>
<br>
==== [printers]セクション ====
Sambaで利用可能な全てのプリンタを共有するための特別なセクションである。<br>
このセクションを使用する場合、システムに設定されているプリンタが自動的に共有される。<br>
<br>
[printers]セクションは、全てのプリンタに適用される基本的な設定のみを含み、より具体的または高度な設定は別のセクションで行われることが多い。<br>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ [printers]セクションの設定項目
|-
! style="background-color:#66CCFF;" | キー
! style="background-color:#66CCFF;" | 意味
|-
| comment || [printers]セクションの説明文である。<br><br>例: comment = All Printers
|-
| path || スプールファイルを保存するディレクトリを指定する。<br><br>例: path = /var/spool/samba
|-
| browseable || プリンタ共有をネットワーク上で表示するかどうかを設定する。<br><br>値: <code>yes</code> または <code>no</code><br><br>例: browseable = yes
|-
| guest ok || ゲストユーザのアクセスを許可するかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: guest ok = no
|-
| print ok || この共有をプリンタ共有として使用可能にするかどうかを指定する。<br>[printers]セクションでは、一般的に、<code>yes</code>に設定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: print ok = yes<br><br><u>※注意</u><br><u>このオプションは、printableキーのエイリアス (別名) である。<br>どちらを使用しても同じ効果がある。</u>
|-
| printable || この共有をプリンタ共有として使用可能にするかどうかを指定する。<br>[printers]セクションでは、一般的に、<code>yes</code>に設定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: print ok = yes<br><br><u>※注意</u><br><u>このオプションは、print okキーのエイリアス (別名) である。<br>どちらを使用しても同じ効果がある。</u>
|-
| print command || 印刷ジョブを処理するコマンドを指定する。<br><br>例: print command = /usr/bin/lpr -P %p %s
|-
| lpq command || プリンタキューの状態を表示するコマンドを指定する。<br><br>例: lpq command = /usr/bin/lpq -P %p
|-
| lprm command || 印刷ジョブを削除するコマンドを指定する。<br><br>例: lprm command = /usr/bin/lprm -P %p %j
|- style="background-color:#e0e0e0;"
| load printer || <u>主に[global]セクションで設定されるため、[printers]セクションでは一般的には使用されない。</u><br><br>システムに設定されている全てのプリンタを自動的に共有するかどうかを指定する。
|- style="background-color:#e0e0e0;"
| printing || <u>主に[global]セクションで設定されるため、[printers]セクションでは一般的には使用されない。</u><br><br>使用する印刷システムを指定する。
|- style="background-color:#e0e0e0;"
| printer admin || <u>この設定は、古いバージョンのSambaで使用されていたが、現在は非推奨である。</u><br>[printers]セクションでの使用は一般的には使用されない。<br><br>プリンタ管理者として指定するユーザやグループを設定する。
|- style="background-color:#e0e0e0;"
| min print space || <u>これは個々のプリンタ共有で設定、または、必要な場合は[global]セクションで設定する。</u><br><br>印刷を許可するために必要な最小のディスク空き容量を指定する。
|- style="background-color:#e0e0e0;"
| use client driver || <u>これは個々のプリンタ共有で設定、または、必要な場合は[global]セクションで設定する。</u><br><br>クライアント側のプリンタドライバを使用するかどうかを指定する。
|}
</center>
<br>
 
==== [profiles]セクション ====
[profiles]セクションは、最初から予約されているわけではない。<br>
これは、Sambaの特定の機能に関連する慣例的なセクション名である。<br>
<br>
最初から予約されていないが、Windowsドメイン環境でよく使用される慣例的な名前である。<br>
多くのLinuxディストリビューションでは、ローミングプロファイルを格納するために使用される。<br>
<br>
このセクション名は、Sambaの特定の機能と密接に関連しているため、多くの設定例や文書で見かけることがある。<br>
ユーザが別の名前を使用することも可能である。<br>
<br>
ただし、これらの慣例的な名前を使用することにより、設定の意図が明確になり、他の管理者も理解しやすくなるというメリットがある。<br>
<br>
また、一部のSamba関連ツールやスクリプトが、これらの名前を期待している可能性もある。<br>
<br>
これらのキーを使用して、ユーザプロファイルの共有動作をカスタマイズできる。<br>
<br>
<u>※注意</u><br>
* セキュリティ
*: プロファイルには個人情報が含まれる可能性があるため、適切なアクセス制御が重要である。
* パフォーマンス
*: プロファイルが大きくなると、ログオン/ログオフ時間に影響を与える可能性がある。
* 互換性
*: Windowsのバージョンによっては、プロファイルの扱いが異なる場合がある。
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ [profiles]セクションの設定項目
|-
! style="background-color:#66CCFF;" | キー
! style="background-color:#66CCFF;" | 意味
|-
| comment || [profiles]セクションの説明文である。<br><br>例: comment = Network Profiles Service
|-
| path || プロファイルの保存場所を指定する。<br><br>例: path = %H
|-
| read only || 共有を読み取り専用にするかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: read only = no
|-
| create mask || 新しく作成されるファイルのパーミッションを指定する。<br>値: 8進数のパーミッション値<br><br>例: create mask = 0600
|-
| directory mask || 新しく作成されるディレクトリのパーミッションを指定する。<br>値: 8進数のパーミッション値<br><br>例: directory mask = 0700
|-
| profile acls || プロファイルのACL (アクセス制御リスト) を有効にするかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: profile acls = yes
|-
| strict sync || 同期書き込みを厳密に行うかどうかを指定する。<br><br><code>yes</code>の場合<br>各書き込み操作後に即座にディスクに同期する。<br>データの一貫性は高まるが、パフォーマンスが低下する可能性がある。<br><br><code>no</code>の場合<br>即座の同期を行わず、システムの標準的なバッファリングを使用する。<br>パフォーマンスは向上するが、突然のシャットダウン時にデータが失われるリスクが高まる。<br>値: <code>yes</code> または <code>no</code><br><br>例: strict sync = no
|-
| store dos attributes || WindowsのDOS属性 (読み取り専用、隠しファイル、システムファイル、アーカイブ)をUNIXファイルシステム上に保存するかどうかを制御する。<br><br>値 : <code>yes</code> (または、trueもしくは1) / <code>no</code> (または、falseもしくは0)<br><br>デフォルト値は、<code>no</code><br><br>有効にする場合、Sambaは、WindowsクライアントがファイルのDOS属性を変更した時に、それをUNIXファイルシステム上に保存する。<br>これにより、Windows固有の属性情報がUNIXシステム上でも維持される。<br>属性は、ファイルのEAバック (Extended Attributes) や特別なストリームに保存される。<br><br>無効にする場合、DOS属性はUNIXファイルシステム上に直接保存されない。<br>代わりに、SambaはUNIXのパーミッションを基にしてDOS属性をシミュレートする。<br><br><u>※注意</u><br><u>全てのUNIXファイルシステムがEAバックをサポートしているわけではない。</u><br><u>Windows統合が重要な環境では、このオプションを有効にすることにより、Windowsライクな動作を実現できる。</u><br><br><u>この設定は、WindowsとUNIX/Linux間でのファイル属性の一貫性を維持したい場合に特に有効である。</u>
|- style="background-color:#e0e0e0;"
| csc policy || クライアント側のキャッシュポリシーを指定する。<br>値: <code>manual</code>, <code>documents</code>, <code>programs</code>, <code>disable</code><br><br>例: csc policy = disable<br><br><u>[profiles]セクションでは使用せず、一般的には、個別の共有セクションで指定する。</u>
|- style="background-color:#e0e0e0;"
| roaming profiles || ローミングプロファイルの動作を制御する。<br>ローミングプロファイルは、ユーザが異なるPCにログインしても同じ設定やデスクトップ環境を維持できるようにする機能である。<br>値: <code>yes</code> または <code>no</code><br><br>例: roaming profiles = yes<br><br><code>yes</code>の場合<br>ユーザがログアウトする時にプロファイルがサーバに保存されて、別のPCでログインする時にそのプロファイルがロードされる。<br><br><code>no</code>の場合<br>ローカルプロファイルのみが使用されて、プロファイルはサーバに保存されない。<br><br><u>[profiles]セクションで使用することがあるが、一般的には、[global]セクションで指定する。</u>
|}
</center>
<br>
 
==== [netlogon]セクション ====
[netlogon]セクションは、最初から予約されているわけではない。<br>
これは、Sambaの特定の機能に関連する慣例的なセクション名である。<br>
<br>
最初から予約されていないが、Windowsドメインコントローラの機能を模倣する時によく使用される慣例的な名前である。<br>
多くのLinuxディストリビューションでは、ドメインのログオンスクリプトやポリシーファイルを格納するために使用される。<br>
<br>
このセクション名は、Sambaの特定の機能と密接に関連しているため、多くの設定例や文書で見かけることがある。<br>
ユーザが別の名前を使用することも可能である。<br>
<br>
ただし、これらの慣例的な名前を使用することにより、設定の意図が明確になり、他の管理者も理解しやすくなるというメリットがある。<br>
<br>
また、一部のSamba関連ツールやスクリプトが、これらの名前を期待している可能性もある。<br>
<br>
一般的な共有セクションで使用されるような多くのキー (write list、hide files、create mask、directory mask等)は、一般的には[netlogon]セクションでは使用されない。<br>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ [netlogon]セクションの設定項目
|-
! style="background-color:#66CCFF;" | キー
! style="background-color:#66CCFF;" | 意味
|-
| path || ネットログオンスクリプトを格納するディレクトリのパスを指定する。<br><br>例: path = /var/lib/samba/netlogon
|-
| read only || ネットログオンディレクトリを読み取り専用にするかどうかを設定する。<br><br>値: <code>yes</code> または <code>no</code><br><br>例: read only = yes
|-
| guest ok || ゲストアクセスを許可するかどうかを設定する。<br>セキュリティ上の理由から、通常は<code>no</code>に設定される。<br>値: <code>yes</code> または <code>no</code><br><br>例: guest ok = no
|-
| browseable || このセクションをネットワーク上で表示するかどうかを制御する。<br>通常は<code>no</code>に設定される。<br>値: <code>yes</code> または <code>no</code><br><br>例: browseable = no
|}
</center>
<br>
 
==== [print$]セクション ====
<u>[print$]セクションは、最初から予約されているわけではない。</u><br>
<u>これは、Sambaの特定の機能に関連する慣例的なセクション名である。</u><br>
<br>
最初から予約されていないが、Sambaがプリンタサーバとして機能する時によく使用される慣例的な名前である。<br>
多くのLinuxディストリビューションでは、Windowsクライアント向けのプリンタドライバを格納するために使用される。<br>
<br>
このセクション名は、Sambaの特定の機能と密接に関連しているため、多くの設定例や文書で見かけることがある。<br>
ユーザが別の名前を使用することも可能である。<br>
<br>
ただし、これらの慣例的な名前を使用することにより、設定の意図が明確になり、他の管理者も理解しやすくなるというメリットがある。<br>
<br>
<br>
Sambaを再起動する。<br>
また、一部のSamba関連ツールやスクリプトが、これらの名前を期待している可能性もある。<br>
  sudo systemctl restart smbd
<br>
  sudo systemctl restart nmbd
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ [print$]セクションの設定項目
|-
! style="background-color:#66CCFF;" | キー
! style="background-color:#66CCFF;" | 意味
|-
| comment ||  共有の説明を提供する。<br><br>例: comment = Printer Drivers
|-
| path || プリンタドライバやスプーラファイルを格納されているディレクトリのパスを指定する。<br><br>例: path = /var/lib/samba/printers
|-
| browseable<br>または<br>browsable || この共有がネットワーク上でブラウズ可能かどうかを制御する。<br>値: <code>yes</code> または <code>no</code><br><br>例: browseable = yes
|-
| guest ok || ゲストユーザのアクセスを許可するかどうかを指定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: guest ok = no
|-
| read only || 共有を読み取り専用にするかどうかを指定する。<br>一般ユーザがプリンタドライバファイルを変更できないようにするため、通常、<code>yes</code>に設定する。<br>値: <code>yes</code> または <code>no</code><br><br>例: read only = yes
|-
| write list || 共有への書き込み権限を持つユーザやグループを指定する。<br><br>例: write list = @printadmin
|-
| create mask || 新しく作成されるファイルのパーミッションを指定する。<br>値: 8進数のパーミッション値<br><br>例: create mask = 0644
|-
| directory mask || 新しく作成されるディレクトリのパーミッションを指定する。<br>値: 8進数のパーミッション値<br><br>例: directory mask = 0755
|- style="background-color:#e0e0e0;"
| writable || [print$]セクションでは一般的には使用されない。<br>代わりに、<code>read only = yes</code>キーと<code>write list</code>キーの組み合わせを使用して、<br>特定のユーザにのみ書き込み権限を与えることが一般的である。<br><br>共有への書き込みを許可するかどうかを指定する。(read onlyの逆である)
|- style="background-color:#e0e0e0;"
| hide files || プリンタドライバーファイルを隠す必要性は無いため、[print$]セクションでは一般的には使用されない。<br><br>特定のファイルやディレクトリを非表示にする。
|- style="background-color:#e0e0e0;"
| veto files || プリンタドライバファイルの中で特定のファイルを拒否する必要性は無いため、[print$]セクションでは一般的には使用されない。<br><br>アクセスを拒否するファイルパターンを指定する。
|- style="background-color:#e0e0e0;"
| printer admin || 古いバージョンのSambaで使用されていが、現在は使用されない。<br>代わりに、<code>write list</code>キーが推奨される。<br><br>プリンタ管理者として指定するユーザやグループを設定する。
|- style="background-color:#e0e0e0;"
| valid users || [print$]セクションで使用されることがあるが、一般的ではない。<br>多くの場合、アクセス制御は<code>read only</code>キーと<code>write list</code>キーの組み合わせで行う。<br><br>この共有にアクセスできるユーザを指定する。
|}
</center>
<br>
 
==== 独自のセクション ====
以下の例では、ユーザが任意で作成できるセクションの設定を示している。<br>
<br>
<syntaxhighlight lang="ini">
# ユーザが任意で指定するセクションの設定例
; 以下に示す設定では、ユーザは自分のホームディレクトリと所属するグループの共有ディレクトリにアクセスでき、それぞれの領域で読み書きが可能になる
; また、ACLの継承により、適切なアクセス権限の管理が容易になる
; 全ユーザに関する共有設定を定義する
[users]
; この共有の説明文
; クライアントがネットワーク上で共有を参照する時に表示される
comment = All users
; この共有のルートディレクトリを指定する
; ここでは全ユーザのホームディレクトリがある/homeを指定する。
path = /home
; この設定により、ユーザは共有内のファイルを編集・削除・作成できる
; Noは書き込み可能を意味する
read only = No
; 新しく作成されたファイルやディレクトリが、親ディレクトリのACL (アクセス制御リスト) を継承することを指定する
inherit acls = Yes
; これらのファイルやディレクトリをクライアントから非表示にする
; この設定例では、quotaファイル、groupsディレクトリ、sharesディレクトリを非表示にしている
veto files = /aquota.user/groups/shares/
; グループに関する共有設定を定義する
[groups]
; この共有の説明文
; クライアントがネットワーク上で共有を参照する時に表示される
comment = All
; グループ共有のルートディレクトリを指定する
groups path = /home/groups
; ユーザがこの共有内でファイルの編集・削除・作成を行えるようにする
read only = No
  ; 新しく作成されたファイルやディレクトリが、親ディレクトリのACLを継承することを指定する
  inherit acls = Yes
</syntaxhighlight>
<br>
下表に、ユーザが任意で作成するセクションにおいて、指定できるキーとその値を示す。<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ その他のセクションの設定項目
|-
! style="background-color:#66CCFF;" | キー
! style="background-color:#66CCFF;" | 意味
|-
| path || 共有ディレクトリのパスを指定する。
|-
| comment || コメントを指定する。
|-
| browseable || ブラウジングする時に表示されるかどうかを指定する。<br>ただし、設定を無効にした場合でも、共有名を直接指定する場合はアクセスすることができる。
|-
| read only || ファイルおよびディレクトリを読み取り専用にする。
|-
| read list || 読み取りが例外的に許可されるユーザを指定する。<br>(グループを指定する時は@<グループ名>を使用する)
|-
| writable || 書き込みを許可するかどうかを指定する。<br>一般的には read onlyがよく使用されている。
|-
| write list || 書き込みが例外的に許可されるユーザを指定する。<br>(グループを指定する時は@<グループ名>を使用する)
|-
| hide dot files || 隠しファイルおよび隠しディレクトリを表示するかどうかを指定する。
|-
| hide files || 非表示にするファイル名またはディレクトリ名を指定する。<br>ただし、アクセスは可能である。
|-
| veto files || 表示およびアクセスさせないファイル名およびディレクトリ名を指定する。
|-
| force user || 共有ディレクトリに作成するファイルやディレクトリの所有者または所有グループを、強制的に指定したユーザにする。<br><br>これは、他のSambaユーザでログインした場合でも、内部的に<code>force user</code>キーで指定したユーザ名としてログインする。<br>この時、<code>force user</code>キーで指定したユーザ名のパスワードが求められる。
|-
| force group || 共有ディレクトリに作成するファイルやディレクトリの所有者または所有グループを、強制的に指定したグループにする。
|-
| available<br>valid users || アクセス可能なユーザを指定する。(グループを指定する時は@<グループ名>を使用する)<br><br>以下の2つのキーを指定する場合、hogeユーザ以外はログインできない。<br>
* available = yes
* valid users = hoge
|-
| guest ok || ゲストログインを許可するかどうかを指定する。<br>(<code>public</code>キーと<code>guest ok</code>キーは同じ意味)
|-
| public || ゲストログインを許可するかどうかを指定する。<br>(<code>public</code>キーと<code>guest ok</code>キーは同じ意味)
|-
| create mask || ファイルに適用可能なパーミッションを指定する。(指定しない場合は、0744)
|-
| directory mask || ディレクトリに適用可能なパーミッションを指定する。(指定しない場合は、0755)
|-
| force create mask || 強制的にファイルに適用されるパーミッションを指定する。(指定しない場合は、0000)
|-
| force directory mask || 強制的にディレクトリに適用されるパーミッションを指定する。(指定しない場合は、0000)
|}
</center>
<br>
 
==== 変数 ====
設定ファイル中に、下表に示す変数を使用することができる。<br>
<br>
例えば、オプション"path = /tmp/%u"は、任意のユーザ(hoge)で接続した場合、"path = /tmp/hoge"として解釈される。<br>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;
|-
! style="background-color:#66CCFF;" | 変数
! style="background-color:#66CCFF;" | 説明
|-
| %S || 現在のサービス名
|-
| %P || 現在のサービスのルートディレクトリ
|-
| %u || 現在のサービスのユーザ名
|-
| %g || %uの本来(primary)のグループ名
|-
| %U || セッションのユーザ名
|-
| %G || %Uの本来(primary)のグループ名
|-
| %H || %uで与えられたユーザのホームディレクトリ
|-
| %v || Sambaのバージョン
|-
| %h || Sambaが動作しているホストの名前
|-
| %m || クライアントPCのNetBIOS名
|-
| %L || サーバのNetBIOS名
|-
| %M || クライアントPCのネットワーク名
|-
| %N || NISのホームディレクトリサーバ名。<br>Sambaを<code>--with-automount</code>オプションを付加せずにビルドしている場合、この値は<code>%L</code>と同じになる。
|-
| %p || サーバのホームディレクトリのパス
|-
| %R || プロトコルレベル<br>CORE、COREPLUS、LANMAN1、LANMAN2、NT1のうち、いずれかの値を取る。
|-
| %d || 現在のサーバプロセスのプロセスID
|-
| %a || リモートPCのアーキテクチャ名。<br>現状では、Samba、WfWg、WinNT、Win95のいずれか、または、それら以外の場合はUNKNOWNと識別される。
|-
| %I || クライアントPCのIPアドレス
|-
| %T || 現在の日付と時刻
|}
</center>
<br>
==== マスターブラウザの設定 ====
マスターブラウザは、ワークグループ単位とドメイン単位で存在する。<br>
どのホストがマスターブラウザになるかは、OSの種類による優先度に基づいて選出される。<br>
<br>
Samba自身をドメインコントローラにする場合、33以上にすれば優先的に選出される。<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ マスターブラウザの設定
|-
! style="background-color:#66CCFF;" | キー
! style="background-color:#66CCFF;" | 意味
|-
| local master || ローカルマスターブラウザのブラウザ選出に参加する。(選出されるかどうかは限らない)
|-
| domain master || ドメインマスターブラウザに選出されるようになる。
|-
| preferred master || ブラウザ選定を促す。
|-
| os level || 優先度
|}
</center>
<br>
<br>
==== 認証の設定 ====
クライアントがどのようにSambaに応答するかを指定する。<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ 認証の設定 (securityセクション)
|-
! style="background-color:#66CCFF;" | キー
! style="background-color:#66CCFF;" | 意味
|-
| user || ユーザ名とパスワードでローカル認証を行う。(初期設定)
|-
| domain master || ドメインマスターブラウザに選出されるようになる。
|-
| share || パスワードだけで認証を行う。<br><code>guest ok = yes</code>の設定と共に使用することにより、全てのユーザがゲストアカウントになり、パスワード無しでプリンタを共有する時に使用される。
|-
| domain || ドメインコントローラにより認証を行う。
|-
| server || 他のSMBサーバにより認証を行う。
|-
| ads || ADドメインのドメインコントーローラで認証を行う。
|}
</center>
<br><br>
== ファイヤーウォールの設定 ==
ファイアーウォールを有効にしている場合は、Sambaサービスの許可が必要である。<br>
ファイアーウォールを有効にしている場合は、Sambaサービスの許可が必要である。<br>
<br>
Samba / NMBのデフォルトポートは、TCPとUDPの両方を使用する。<br>
これにより、Sambaの完全な機能 (ファイル共有、名前解決、ブラウジング等) を使用するために必要な全てのポートが開放される。<br>
<br>
* TCPポート (SMB)
*: 445/TCP: SMB (Server Message Block)
*: 139/TCP: NetBIOS over TCP/IP
* UDPポート (NMB)
*: 137/UDP: NetBIOS Name Service
*: 138/UDP: NetBIOS Datagram Service
<br>
# SMB
  sudo firewall-cmd --permanent --add-service=samba
  sudo firewall-cmd --permanent --add-service=samba
  または
  または
  sudp firewall-cmd --permanent --add-port=445/tcp
  sudo firewall-cmd --permanent --add-port=445/tcp # SMB (Server Message Block)
sudo firewall-cmd --permanent --add-port=139/tcp  # NetBIOS over TCP/IP
sudo firewall-cmd --reload
<br>
# NMB
sudo firewall-cmd --permanent --add-service=nmb
または
sudo firewall-cmd --permanent --add-port=137/udp  # NetBIOS Name Service
sudo firewall-cmd --permanent --add-port=138/udp  # NetBIOS Datagram Service
   
   
  sudo firewall-cmd --reload
  sudo firewall-cmd --reload
196行目: 892行目:
SELinuxを有効にしている場合は、SELinuxコンテキストの変更が必要である。<br>
SELinuxを有効にしている場合は、SELinuxコンテキストの変更が必要である。<br>
  sudo setsebool -P samba_enable_home_dirs on
  sudo setsebool -P samba_enable_home_dirs on
  sudo restorecon -R /home/<ユーザ名>/Common
  sudo restorecon -R <共有ディレクトリのパス>
<br>
SELinuxを一時的に無効にする場合は、以下に示すコマンドを実行する。<br>
sudo setenforce 0
<br>
SELinuxを永続的に無効にする場合は、以下に示すコマンドを実行する。<br>
sudo vi /etc/selinux/config
<br>
# /etc/selinux/configファイル
SELINUX=enforcing
<br><br>
 
== Sambaの起動および停止 ==
Sambaを起動する。<br>
sudo systemctl start smb nmb
<br>
もし、ソースコードからSambaをインストールしている場合において、Sambaが起動しない場合、/<Sambaのインストールディレクトリ>/var/run/ncalrpcディレクトリを削除する。<br>
sudo rm -r /<Sambaのインストールディレクトリ>/var/run/ncalrpc
<br>
Sambaを再起動する。<br>
sudo systemctl restart smb nmb
<br>
Sambaを停止する。<br>
sudo systemctl stop smb nmb
<br><br>
 
== Sambaの管理コマンド ==
* smbcontrol
*: Sambaサーバを構成する各デーモンにメッセージを送信して制御する。
* smbstatus
*: Sambaサーバに接続されているクライアント、使用中の共有、ロックされているファイルを共有する。
* nbmlookup
*: NetBIOS名を問い合わせたり、NetBIOS名からIPアドレスを検索する。
<br><br>
<br><br>


== 動作の確認 ==
== 動作の確認 ==
エクスプローラまたは[ファイル名を指定して実行]にて、<br>
Windowsからアクセスする場合、エクスプローラまたは[ファイル名を指定して実行]にて、<br>
下記のように、IPアドレスまたはホスト名を入力して、共有ディレクトリが表示できるか確認する。<br>
以下に示すように、IPアドレスまたはホスト名を入力して、共有ディレクトリが表示できるか確認する。<br>
  \\192.168.1.5
  \\<サーバのIPアドレス>
  または
  または
  \\RASPBERRYPI
  \\<サーバのホスト名>
<br><br>
<br><br>


221行目: 950行目:
   
   
  # 詳細なユーザ名の一覧を表示
  # 詳細なユーザ名の一覧を表示
  sudo pdbedit -L -v
  sudo pdbedit -vL
# smbpasswdスタイルでSambaのユーザ名の一覧を表示
sudo pdbedit -wL
   
   
  # ユーザを登録する (パスワードを2回入力して設定する)
  # ユーザを登録する (パスワードを2回入力して設定する)
251行目: 983行目:
暗号化方式を統一することもできるが、セキュリティ面から標準の設定の方がよい。<br>
暗号化方式を統一することもできるが、セキュリティ面から標準の設定の方がよい。<br>
<br><br>
<br><br>
== 設定ファイルの確認 ==
Sambaの設定ファイルの構文チェックを行い、エラーや警告を表示する。<br>
<code>testparm</code>コマンドを実行すると、設定ファイルの内容が解析されて、問題がある場合はエラーメッセージが表示される。<br>
正常な場合は、設定の概要が表示される。<br>
testparm
# 特定の場所にあるSambaの設定ファイルを確認する場合
testparm /etc/samba/smb.conf
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]

2024年11月23日 (土) 17:47時点における最新版

概要

Sambaは、Linux上でWindowsのネットワーク機能を実現するソフトウェアである。
Sambaを導入すると、Windowsのファイルサーバと同じ役割を果たす、または、WindowsファイルサーバをLinuxから利用することもできる。
つまり、Windowsファイルサーバのクライアント機能も持っている。

その他、プリンタサーバの機能や、企業で使用されるWindowsドメイン(Active Directory)のサーバになる機能も持つ。
Samba 4以降において、Windowsのドメインコントローラとなることができるため、既存のWindowsサーバを丸ごと置き換えることも可能である。

Sambaを使用してファイルサーバを構築するには、クライアント端末からアクセスができるようにするため、既存のネットワークに接続する必要がある。
また、サーバを静的IPアドレスに設定することが必要である。

サーバプロセス 説明
smbd ファイル共有、認証等
nmbd ブラウジング機能、NetBIOS名前解決、WINSサーバ等
winbindd Winbind機能


ポート番号 説明
137 / UDP NetBIOS名前解決やブラウジング
138 / UDP NetBIOS名前解決やドメインログオン
139 / TCP ファイル共有
445 / TCP ファイル共有


参考書
81wRPjbdhML._SL1500_.jpg
Samba[実践]入門
サーバ構築の実例がわかる



Sambaのインストール

パッケージ管理システムからインストール

最新パッケージリストを取得する。

# RHEL
sudo dnf update

# SUSE
sudo zypper update

# Raspberry Pi
sudo apt update


Sambaをインストールする。

# RHEL
sudo dnf install samba samba-client

# SUSE
sudo zypper install samba samba-client

# Raspberry Pi
sudo apt install samba


ソースコードからインストール

Sambaのビルドに必要なライブラリをインストールする。
Kerberos 1.15.1以降が必要となることに注意する。

# RHEL
sudo dnf install tar gcc gdb rpcgen docbook-style-xsl dbus-devel readline-devel zlib-devel gnutls-devel systemd-devel \
                 gpgme-devel keyutils-libs-devel krb5-workstation jansson-devel libacl-devel libaio-devel cups-devel \
                 libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools libxml2-devel libxslt \
                 lmdb-devel openldap-devel pam-devel perl perl-ExtUtils-MakeMaker perl-Parse-Yapp popt-devel \
                 python36-devel python3-cryptography python3-dns python3-gpg python3-markdown

# SUSE
sudo zypper install tar acl attr autoconf bison flex ccache hostname gawk sed rsync pkgconfig htop lcov intltool rpcgen rpcsvc-proto-devel \
                    tree patch procps psmisc rng-tools gcc gdb glib2-devel glibc-locale ncurses-devel readline-devel zlib-devel dbus-1-devel \
                    libicu-devel libcap-devel libpcap-devel libtevent-devel liburing2-devel \
                    libjansson-devel keyutils-devel krb5-server krb5-client krb5-devel \
                    libacl-devel libaio-devel libarchive-devel libattr-devel libblkid-devel libtasn1-devel systemd-devel \
                    libxml2-devel libxslt libxslt-devel docbook_4 docbook5-xsl-stylesheets lmdb lmdb-devel openldap2-devel pam-devel \
                    gnutls-devel gpgme-devel popt-devel cups-devel libbsd-devel libnsl-devel liburing2-devel libbd_dm-devel \
                    perl perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Archive-Tar-Wrapper perl-JSON perl-JSON-XS perl-Test-Base \
                    python3-devel python3-cryptography python3-dnspython python3-gpg python3-Markdown python3-semanage \
                    python3-talloc-devel python3-iso8601 python3-pyasn1 python3-setproctitle policycoreutils-python \
                    libtalloc-devel libcmocka-devel libtdb-devel tracker-devel libnscd-devel libuuid-devel libunwind-devel \
                    xfsprogs-devel glusterfs-devel libtirpc-devel libntirpc-devel libavahi-devel chrpath libcephfs-devel \
                    lsb-release system-user-nobody dnf-utils \
                    bind-utils  # 内部DNSサーバを使用する場合

# Raspberry Pi
# インストールには、BIND DNSサーバを含んでいる
# もし、Sambaにおいて、内部DNSサーバを使用する場合、BINDパッケージは省略できる
# ただし、ダイナミックDNSのサポートを有効にするため、nsupdateを含むパッケージが必要となる
sudo apt install acl attr autoconf bison flex pkg-config \
                 build-essential gdb libncurses5-dev libreadline-dev \
                 debhelper dnsutils docbook-xml docbook-xsl xsltproc krb5-user \
                 libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev \
                 libcap-dev libcups2-dev libgnutls28-dev nettle-dev libgpgme-dev libjansson-dev \
                 libldap2-dev libpam0g-dev libpopt-dev \
                 perl perl-modules libparse-yapp-perl libjson-perl \
                 python-all-dev python-dev python3-dev python-crypto python-dbg python-dnspython \
                 python3-dnspython python-gpgme python3-gpgme python-markdown python3-markdown \
                 zlib1g-dev liblmdb-dev lmdb-utilsa \
                 bind9utils  # 内部DNSサーバを使用する場合


Sambaの公式WebサイトまたはSambaのGithubにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf samba-<バージョン>.tar.gz
cd samba-<バージョン>


Sambaをビルドおよびインストールする。
ビルドディレクトリを作成する場合、Sambaのビルドに失敗することに注意する。

./configure --prefix=<Sambaのインストールディレクトリ> --enable-cups --with-systemd \
            --systemd-install-services  # Sambaの管理向けデーモンをインストールする場合
make -j $(nproc)
make install


SambaのSystemdサービスファイルを、/etc/systemd/systemディレクトリにコピーする。

sudo cp /<Sambaのインストールディレクトリ>/lib/systemd/system/* /etc/systemd/system


SambaのSystemdサービスファイルを読み込む。

sudo systemctl daemon-reload



Sambaの設定

Sambaの設定ファイルを作成する。

# パッケージ管理システムからSambaをインストールしている場合
sudo vi /etc/samba/smb.conf

# ソースコードからSambaをインストールしている場合
vi /<Sambaのインストールディレクトリ>/etc/smb.conf


 # /<Sambaのインストールディレクトリ>/etc/smb.confファイル
 
 # smb.conf is the main Samba configuration file.
 
 # Samba全体の設定例
 [global]
    unix charset = UTF-8
    dos charset = CP932
    server string = Samba Server %v
    workgroup = <Windowsネットワーク名またはドメイン名)  例. WORKGROUP>
    passdb backend = tdbsam
    printing = cups
    printcap name = cups
    printcap cache time = 750
    cups options = raw
    map to guest = Bad User
    logon path = \\%L\profiles\.msprofile
    logon home = \\%L\%U\.9xprofile
    logon drive = P:
    usershare allow guests = Yes
    security = USER
    smb passwd file = <Sambaのユーザパスワードファイルのパス(smbpasswdコマンドを使用する場合)  例. /<Sambaのインストールディレクトリ>/etc/samba/smbpasswd>
    guest account = nobody
    unix password sync = no
    log file = <Sambaのログファイルのパス  例. /var/log/samba/log.%m>
    max log size = 50
    socket options = <ソケットプオプション  例. TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192>
    dns proxy = No
    # アクセス制限(許可する範囲)
    hosts allow = <許可するIPアドレスまたはドメイン名>
                  # 例1. 192.168.1. 127.0.
                  # 例2. 192.168.1.20/24 192.168.1.30/255.255.255.0
                  # 例3. myhost.mynet.edu.au
 
 # Linuxユーザの各ホームディレクトリを一括して共有するためのセクションの設定例
 # 各ユーザごとにホームディレクトリの共有を定義する必要がない
 [homes]
    comment = Home Directories
    valid users = %S, %D%w%S
    browseable = No
    read only = No
    inherit acls = Yes
    guest ok = No
 
 # 特定のロービングプロファイルシェアを提供する
 # デフォルトでは、ユーザのホームディレクトリを使用する
 [profiles]
    comment = Network Profiles Service
    path = %H
    read only = No
    store dos attributes = Yes
    create mask = 0600
    directory mask = 0700
    guest ok = No
 
 # ファイルに記述されたプリンタに接続できる (ユーザ名はprintcap)
 # 共有名が存在するプリンタ名に設定される
 # サービスにゲストのアクセス許可が無く、クライアントからユーザ名が与えられていない場合は、ユーザ名はプリンタの名前に設定される
 [printers]
    comment = All Printers
    path = /var/tmp
    printable = Yes # プリンタ共有として利用する
    print ok = Yes  # プリンタ共有として利用する
    browseable = No
    writeable = No
    guest ok = No
    create mask = 0600
 
 # Windowsがプリンタドライバの自動ダウンロードを行う際の共有名を指定する特殊なセクション
 # Windows側でプリンタドライバが無い場合、[print$]セクションからドライバを検索する
 [print$]
    comment = Printer Drivers
    path = /var/lib/samba/drivers
    write list = @ntadmin root
    force group = ntadmin
    create mask = 0664
    directory mask = 0775
 
 # 任意の共有ディレクトリ 1
 # 個々のユーザごとのホームディレクトリを共有するための設定を定義する
 # ユーザ名ごとに適用するプロファイルや追加の設定を指定できる
 # 各ユーザは自分のホームディレクトリにアクセスでき、他のユーザのホームディレクトリにはアクセスできない
 [users]
    comment = All users
    path = /home/%U
    read only = No
    create mask = 0700     # 新しいファイルが作成された時のデフォルトのアクセス許可を指定する
    directory mask = 0700  # 新しいディレクトリが作成された時のデフォルトのアクセス許可を指定する
    inherit acls = Yes
    veto files = /aquota.user/groups/shares/
    browseable = no        # 共有フォルダがネットワーク上で見えるかどうかを指定します。
    valid users = %U       # この共有フォルダにアクセスできるユーザ名を指定する
                           # 例えば、%Uは現在のユーザ名に置き換えられる
 
 # 任意の共有ディレクトリ 2
 # グループ単位で共有フォルダを設定する
 # 特定のグループに属するユーザがアクセスできる共有フォルダを定義する
 [groups]
    comment = All groups
    path = /srv/samba/groups/%G  # 共有フォルダのパスを指定する
                                 # 例えば、%Gは現在のグループ名に置き換えられる
    read only = No
    create mask = 0770           # 新しいファイルが作成されたときのデフォルトのアクセス許可を指定する
    directory mask = 0770        # 新しいディレクトリが作成されたときのデフォルトのアクセス許可を指定する
    guest ok = No
 
 # 任意の共有ディレクトリ 3
 [<共有ディレクトリ名  例. Share>]
   comment = Samba on Linux
   path = <共有ディレクトリのパス  例. /home/<ユーザ名>/Public>  # 共有ディレクトリのパスを指定する
   read only = No                         # 読み込みのみにするかどうかを指定する
   writable = Yes                         # 書き込みを許可するかどうかを指定する
   #read list = <ユーザ名またはグループ名>     # 読み込みが例外的に許可されるユーザを指定する (グループを指定する時は@<グループ名>を使用する)
   #write list = <ユーザ名またはグループ名>    # 書き込みが例外的に許可されるユーザを指定する (グループを指定する時は@<グループ名>を使用する)
   browsable = Yes                        # ブラウジングした時に表示されるかどうかを指定する
                                          # ただし、共有名を直接指定する場合もアクセスすることができる
   public = Yes                           # ゲストログインを許可するかどうかを指定する (publicキーとguest okキーは同じ意味)
   guest ok = Yes                         # ゲストログインを許可するかどうかを指定する (publicキーとguest okキーは同じ意味)
   #force user = <ユーザ名>                 # 共有内に作成するファイルおよびディレクトリにおいて、所有者を強制的に指定したユーザにする
   #force group = <グループ名>              # 共有内に作成するファイルおよびディレクトリにおいて、所有グループを強制的に指定したグループにする
   #inherit acls = Yes                    # 新しく作成されたファイルが、親ディレクトリのACL (アクセス制御リスト) を継承するかどうかを制御する
   #veto files = <ファイル名およびディレクトリ名>  # 表示およびアクセスさせないファイルやディレクトリを指定する
   #hide dot files = No                   # 隠し属性を適用するかどうかを指定する
   #hide files = <ファイル名およびディレクトリ名>  # ファイルおよびディレクトリを表示させないファイル名またはディレクトリ名を指定する
                                          # ただし、アクセスは可能である
   #available = Yes
   #valid users = <Sambaのユーザ名1またはグループ名1> <Sambaのユーザ名2またはグループ名2> ...  # アクセス可能なユーザを指定する (グループを指定する時は@<グループ名>を使用する)



設定ファイルの確認

Sambaの設定ファイルが正常に設定されているかどうかを確認する。

testparm または sudo testparm

# 設定ファイルのパスを指定する場合
testparm <smb.confファイルのパス>
または
sudo testparm <smb.confファイルのパス>


testparmのオプションを以下に示す。

  • -sオプション
    設定ファイルにおいて、有効な設定のみを表示する。
  • -vオプション
    詳細な出力を表示する。
  • --show-all-parametersオプション
    全てのパラメータとその値を表示する。
  • --suppress-promptオプション
    プロンプトを表示せずに実行する。



Sambaの設定項目

Sambaの設定ファイル (smb.confファイル) では、各セクション ([global]セクションを除く) は、共有リソースを記述する。

設定ファイルには、[global]セクション、[homes]セクション、[printers]セクションの3つの特別なセクションがある。
それ以外のセクションは、ユーザ定義のセクションである。

Sambaの設定ファイルのセクション名において、大文字・小文字は区別されない。
そのため、以下に示すような記述は同じように認識される。

ただし、一般的な慣習としては、小文字のセクション名が最も広く使われており、設定ファイルの可読性や保守性の観点からも、小文字で統一することを推奨する。

 # [global]セクションの記述例
 
 [global]
 [GLOBAL]
 [Global]


[global]セクション

Sambaサーバ全体に適用される設定を記述する特殊なセクションである。

[global]セクションの設定項目
キー 意味
server string サーバ名等の説明を記述する。
ブラウズリストでコンピュータ名の隣、および、プリンタマネージャにおけるプリンタのコメント欄等に表示される。

デフォルト値は、Samba %v
%vは、Sambaのバージョンを表すマクロである。
netbios name SambaサーバのNetBIOS名を指定する。

デフォルト値は、システムのホスト名である。
明示的なデフォルト値は無く、システムのホスト名が使用される。
workgroup Sambaサーバが、所属するワークグループ名もしくはドメイン名を指定する。

デフォルト値は、WORKGROUP
server role Sambaサーバーの動作モードを指定する。

デフォルト値は、auto
hosts allow 接続を許可するIPアドレスまたはホスト名を指定する。(未指定のIPアドレスまたはホスト名は拒否される)

デフォルト値は無く、デフォルトで全てのホストからのアクセスを許可する。

  • 例1. 指定したIPアドレスの範囲内にあるPCからのアクセスを許可する場合
    192.168.1. 127.0.

  • 例2. 指定したIPアドレスとサブネットマスクの組み合わせの範囲内にあるPCからのアクセスを許可する場合
    192.168.1.20/24 192.168.1.30/255.255.255.0

  • 例3. 指定したドメインの範囲内にあるPCからのアクセスを許可する場合
    myhost.mynet.edu.au

  • 例4. 192.168.* 内の全てのIPアドレスを許可、ただし、192.168.1.30は禁止する場合
    192.168.* EXCEPT 192.168.1.30
guest account アカウントが存在しないユーザはゲストとしてアクセスできる。
nobody以外を使用する場合は、予め、/etc/passwdファイルに該当ユーザを作成する必要がある。

デフォルト値は、nobody
Bad User 存在しないユーザがアクセスする場合は、ゲスト認証であるとみなして、guest accountキーで定義されたユーザでログインする。
Bad Password 上記に加えて、パスワード入力ミスの場合もゲスト認証であるとみなす。
Never ゲスト認証を許可しない。
map to guest Sambaユーザとして認証できない場合の動作を指定する。

デフォルト値は、Never
"Bad User"と"Bad Password"は独立した設定ではなく、"map to guest"キーの選択肢である。


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

    ただし、SambaでWinBinddが機能している場合、WindowsユーザがUnixのユーザとして動作できるようになるため、
    認証に成功したにも関わらずUnix側のユーザアカウントが存在しない、ということは発生しない。
    そのため、winbinddが機能するSamba 3以降ではBad Uidはほとんど利用されていない。

    なお、Samab 2では、Bad Uidがデフォルトとして設定されている。
log file ログファイルのパスを指定する。
接続元ホストを示す変数%mを使用する場合、接続元ホストごとにログファイルを分けることができる。

デフォルト値は、/var/log/samba/log.%m
%mはクライアントのNetBIOS名を表すマクロである。
max log size ログファイルの最大サイズを指定する。
値が0の場合は、サイズは無制限となる。

デフォルト値は、1000[kB]
passdb backend ユーザアカウント情報を格納するバックエンドを指定する。

デフォルト値は、tdbsamであり、TDB (Trivial Database) ファイルを使用する。

  • tdbsam
    TDBデータベースを使用する方式であり、最も一般的に使用される。
    小〜中規模の環境に適している。
  • smbpasswd
    レガシーな従来型のパスワードファイル方式である。
    /etc/smbpasswdファイルを使用する。
  • ldapsam
    LDAPを使用する方式であり、大規模環境に適している。
    Active Directoryとの統合が可能。
  • guest
    ゲストアクセス用の特別な設定である。
  • built-in
    Sambaの内蔵データベースを使用する。


なお、複数のバックエンドを組み合わせて使用することも可能である。

 [global]
 passdb backend = tdbsam guest
usershare allow guests ゲストアクセスを持つユーザがユーザ共有を作成することを許可するかどうかを指定する。

デフォルト値は、no
"no"は、セキュリティ上の理由からゲストユーザによる共有作成を禁止する。
logon path ユーザのローミングプロファイルの場所を指定する。
デフォルト値は相対パスを使用しており、実際の場所はサーバ設定に依存する。

デフォルト値は、\%N%U\profile
%Nは、このパラメータが使用されるサーバ名
%Uは、現在のUNIXユーザ名
logon home ユーザのホームディレクトリの場所を指定する。
これもデフォルトでは相対パスを使用している。

デフォルト値は、\%N%U
%Nは、このパラメータが使用されるサーバ名
%Uは、現在のUNIXユーザ名
logon drive Windowsクライアントでホームディレクトリをマップするドライブ文字を指定する。

デフォルトでは設定されていない。
logon script ユーザがログインする時に実行するスクリプトを指定する。

デフォルトでは設定されていない。
smb passwd file smbpasswd方式でパスワード認証を行う場合のパスワードファイルのパスを指定する。
unix password sync SambaのパスワードとLinuxのパスワードを同期させるかどうかを指定する。
この設定を有効にする場合、Sambaのパスワードを変更した後、Linuxユーザのパスワードも変更する必要がある。

デフォルト値は、no

yesを指定する場合、Sambaを通じてシステムのパスワードが変更されるため、セキュリティリスクが高まる可能性がある。
そのため、システムのセキュリティポリシーと整合性があることを確認することが必要となる。
passwd program unix password syncキーを有効にした場合、Unixパスワードを変更するために使用するプログラムを指定する。

デフォルト値は、/usr/bin/passwd %u"
%uは、変更対象のユーザ名を表す。
passwd chat unix password syncキーを有効にした場合、パスワード変更プログラムとの対話を定義する。

デフォルト値は、一般的なパスワード変更プロンプトに対応している。
username map Linuxユーザを別のユーザとマッピングさせて、複数のユーザで共有する。

デフォルトでは設定されていない。
wins support nmbdのWINSサーバとして動作させるかどうかを設定する。
wins server WINSサーバのIPアドレスを指定する。
mangled names Sambaサーバ上のDOS非互換のファイル名を、DOS互換の名前に置き換えてアクセス可能にする、または、無視するかどうかを制御する。
Windowsクライアントで作成したファイルにおいて、大文字 / 小文字の区別や日本語を正しく表示させる。
mangle case Windowsクライアントにおいて、長いファイル名に対応する短縮名を作る。
よほど古いWindows OSでない限り、この値はNoにする。
short preserve case DOS 8.3形式のファイル名を、そのまま使用する(Yes)、または、デフォルトの設定に従う(no)かを設定する。
case sensitive ファイル名の大文字と小文字を異なる文字として認識するかどうかを設定する。
default case 新規ファイルを作成する場合、デフォルトファイル名を大文字(upper)にする、または、小文字(lower)にするかどうかを設定する。
デフォルトの値は、lowerである。
username level 大文字および小文字が混在したユーザ名の扱いを設定する。
password level このパラメータの値を大きくするほど、大文字と小文字の混在したパスワードが大文字、または、小文字のみのパスワードと一致するようになる。
security Sambaサーバと同じユーザ名を使用する場合は、パラメータ値をUserに設定する。
local master Sambaをネットワークにおけるマスタブラウザにするかどうかを設定する。
domain master Sambaをドメインマスタブラウザにするかどうかを設定する。
これにより、Sambaはサブネット間のブラウズリストの照合を行う。

もし、既にWindows NTドメインコントローラが存在する場合は、このオプションを使用しないこと。
domain logons クライアントPCに対するドメインログオンサーバにするかどうかを設定する。


[homes]セクション

[homes]セクションは、ユーザのホームディレクトリを自動的に共有するために使用する特別なセクションである。

[homes]セクションは特別な意味を持つため、一部のキーは、通常のセクションの同名のキーとは異なる振る舞いをすることがある。
例えば、valid users = %Sは現在接続しているユーザーのみがそのホームディレクトリにアクセスできるようにする設定である。

ただし、必ずしも全てのsmb.confファイルに存在するわけではない。

[homes]セクションの設定項目
キー 意味
browseable この共有をネットワーク上で表示するかどうかを制御する。
値: yes または no

例: browseable = no
read only 共有を読み取り専用にするかどうかを指定する。
値: yes または no

例: read only = no
writable ユーザに書き込み権限を与えるかどうかを指定する。
一般的には read onlyがよく使用されている。
値: yes または no

例: writable = yes
create mask 新しく作成されるファイルのパーミッションを指定する。
値: 8進数のパーミッション値

例: create mask = 0700
directory mask 新しく作成されるディレクトリのパーミッションを指定する。
値: 8進数のパーミッション値

例: directory mask = 0700
valid users この共有にアクセスできるユーザを指定する。

例: valid users = %S
guest ok ゲストユーザのアクセスを許可するかどうかを指定する。
値: yes または no

例: guest ok = no
hide dot files ドットで始まるファイルを隠すかどうかを指定する。
値: yes または no

例: hide dot files = yes

[homes]セクションでも一般的に使用される。
path Sambaが自動的にユーザのホームディレクトリの基本パスを指定する。

例: path = /home/%S

[homes]セクションでは一般的に使用されない。
他の共有セクションで指定する。
veto files アクセスを拒否するファイルパターンを指定する。

例: veto files = /.*/.*/

[homes]セクションでも使用可能であるが、
[global]セクションや他の共有セクションでもよく使用される。
hide files 特定のファイルやディレクトリを非表示にする。

例: hide files = /lost+found/*/

[homes]セクションでも使用可能であるが、
[global]セクションや他の共有セクションでもよく使用される。
follow symlinks シンボリックリンクをたどるかどうかを指定する。
値: yes または no

例: follow symlinks = yes

[homes]セクションでも使用可能であるが、
[global]セクションでより一般的に指定される。
strict sync 同期書き込みを厳密に行うかどうかを指定する。
値: yes または no

例: strict sync = no

[homes]セクションで使用可能であるが、
パフォーマンスに影響を与える可能性があるため、使用を検討する必要がある。
case sensitive ファイル名の大文字小文字を区別するかどうかを指定する。
値: yes または no または auto

例: case sensitive = auto

[homes]セクションでも使用可能であるが、
[global]セクションでより一般的に指定される。
dos filetimes DOSスタイルのファイルタイムスタンプを使用するかどうかを指定する。
値: yes または no

例: dos filetimes = yes

例: case sensitive = auto

[homes]セクションでも使用可能であるが、
[global]セクションでより一般的に指定される。


[printers]セクション

Sambaで利用可能な全てのプリンタを共有するための特別なセクションである。
このセクションを使用する場合、システムに設定されているプリンタが自動的に共有される。

[printers]セクションは、全てのプリンタに適用される基本的な設定のみを含み、より具体的または高度な設定は別のセクションで行われることが多い。

[printers]セクションの設定項目
キー 意味
comment [printers]セクションの説明文である。

例: comment = All Printers
path スプールファイルを保存するディレクトリを指定する。

例: path = /var/spool/samba
browseable プリンタ共有をネットワーク上で表示するかどうかを設定する。

値: yes または no

例: browseable = yes
guest ok ゲストユーザのアクセスを許可するかどうかを指定する。
値: yes または no

例: guest ok = no
print ok この共有をプリンタ共有として使用可能にするかどうかを指定する。
[printers]セクションでは、一般的に、yesに設定する。
値: yes または no

例: print ok = yes

※注意
このオプションは、printableキーのエイリアス (別名) である。
どちらを使用しても同じ効果がある。
printable この共有をプリンタ共有として使用可能にするかどうかを指定する。
[printers]セクションでは、一般的に、yesに設定する。
値: yes または no

例: print ok = yes

※注意
このオプションは、print okキーのエイリアス (別名) である。
どちらを使用しても同じ効果がある。
print command 印刷ジョブを処理するコマンドを指定する。

例: print command = /usr/bin/lpr -P %p %s
lpq command プリンタキューの状態を表示するコマンドを指定する。

例: lpq command = /usr/bin/lpq -P %p
lprm command 印刷ジョブを削除するコマンドを指定する。

例: lprm command = /usr/bin/lprm -P %p %j
load printer 主に[global]セクションで設定されるため、[printers]セクションでは一般的には使用されない。

システムに設定されている全てのプリンタを自動的に共有するかどうかを指定する。
printing 主に[global]セクションで設定されるため、[printers]セクションでは一般的には使用されない。

使用する印刷システムを指定する。
printer admin この設定は、古いバージョンのSambaで使用されていたが、現在は非推奨である。
[printers]セクションでの使用は一般的には使用されない。

プリンタ管理者として指定するユーザやグループを設定する。
min print space これは個々のプリンタ共有で設定、または、必要な場合は[global]セクションで設定する。

印刷を許可するために必要な最小のディスク空き容量を指定する。
use client driver これは個々のプリンタ共有で設定、または、必要な場合は[global]セクションで設定する。

クライアント側のプリンタドライバを使用するかどうかを指定する。


[profiles]セクション

[profiles]セクションは、最初から予約されているわけではない。
これは、Sambaの特定の機能に関連する慣例的なセクション名である。

最初から予約されていないが、Windowsドメイン環境でよく使用される慣例的な名前である。
多くのLinuxディストリビューションでは、ローミングプロファイルを格納するために使用される。

このセクション名は、Sambaの特定の機能と密接に関連しているため、多くの設定例や文書で見かけることがある。
ユーザが別の名前を使用することも可能である。

ただし、これらの慣例的な名前を使用することにより、設定の意図が明確になり、他の管理者も理解しやすくなるというメリットがある。

また、一部のSamba関連ツールやスクリプトが、これらの名前を期待している可能性もある。

これらのキーを使用して、ユーザプロファイルの共有動作をカスタマイズできる。

※注意

  • セキュリティ
    プロファイルには個人情報が含まれる可能性があるため、適切なアクセス制御が重要である。
  • パフォーマンス
    プロファイルが大きくなると、ログオン/ログオフ時間に影響を与える可能性がある。
  • 互換性
    Windowsのバージョンによっては、プロファイルの扱いが異なる場合がある。


[profiles]セクションの設定項目
キー 意味
comment [profiles]セクションの説明文である。

例: comment = Network Profiles Service
path プロファイルの保存場所を指定する。

例: path = %H
read only 共有を読み取り専用にするかどうかを指定する。
値: yes または no

例: read only = no
create mask 新しく作成されるファイルのパーミッションを指定する。
値: 8進数のパーミッション値

例: create mask = 0600
directory mask 新しく作成されるディレクトリのパーミッションを指定する。
値: 8進数のパーミッション値

例: directory mask = 0700
profile acls プロファイルのACL (アクセス制御リスト) を有効にするかどうかを指定する。
値: yes または no

例: profile acls = yes
strict sync 同期書き込みを厳密に行うかどうかを指定する。

yesの場合
各書き込み操作後に即座にディスクに同期する。
データの一貫性は高まるが、パフォーマンスが低下する可能性がある。

noの場合
即座の同期を行わず、システムの標準的なバッファリングを使用する。
パフォーマンスは向上するが、突然のシャットダウン時にデータが失われるリスクが高まる。
値: yes または no

例: strict sync = no
store dos attributes WindowsのDOS属性 (読み取り専用、隠しファイル、システムファイル、アーカイブ)をUNIXファイルシステム上に保存するかどうかを制御する。

値 : yes (または、trueもしくは1) / no (または、falseもしくは0)

デフォルト値は、no

有効にする場合、Sambaは、WindowsクライアントがファイルのDOS属性を変更した時に、それをUNIXファイルシステム上に保存する。
これにより、Windows固有の属性情報がUNIXシステム上でも維持される。
属性は、ファイルのEAバック (Extended Attributes) や特別なストリームに保存される。

無効にする場合、DOS属性はUNIXファイルシステム上に直接保存されない。
代わりに、SambaはUNIXのパーミッションを基にしてDOS属性をシミュレートする。

※注意
全てのUNIXファイルシステムがEAバックをサポートしているわけではない。
Windows統合が重要な環境では、このオプションを有効にすることにより、Windowsライクな動作を実現できる。

この設定は、WindowsとUNIX/Linux間でのファイル属性の一貫性を維持したい場合に特に有効である。
csc policy クライアント側のキャッシュポリシーを指定する。
値: manual, documents, programs, disable

例: csc policy = disable

[profiles]セクションでは使用せず、一般的には、個別の共有セクションで指定する。
roaming profiles ローミングプロファイルの動作を制御する。
ローミングプロファイルは、ユーザが異なるPCにログインしても同じ設定やデスクトップ環境を維持できるようにする機能である。
値: yes または no

例: roaming profiles = yes

yesの場合
ユーザがログアウトする時にプロファイルがサーバに保存されて、別のPCでログインする時にそのプロファイルがロードされる。

noの場合
ローカルプロファイルのみが使用されて、プロファイルはサーバに保存されない。

[profiles]セクションで使用することがあるが、一般的には、[global]セクションで指定する。


[netlogon]セクション

[netlogon]セクションは、最初から予約されているわけではない。
これは、Sambaの特定の機能に関連する慣例的なセクション名である。

最初から予約されていないが、Windowsドメインコントローラの機能を模倣する時によく使用される慣例的な名前である。
多くのLinuxディストリビューションでは、ドメインのログオンスクリプトやポリシーファイルを格納するために使用される。

このセクション名は、Sambaの特定の機能と密接に関連しているため、多くの設定例や文書で見かけることがある。
ユーザが別の名前を使用することも可能である。

ただし、これらの慣例的な名前を使用することにより、設定の意図が明確になり、他の管理者も理解しやすくなるというメリットがある。

また、一部のSamba関連ツールやスクリプトが、これらの名前を期待している可能性もある。

一般的な共有セクションで使用されるような多くのキー (write list、hide files、create mask、directory mask等)は、一般的には[netlogon]セクションでは使用されない。

[netlogon]セクションの設定項目
キー 意味
path ネットログオンスクリプトを格納するディレクトリのパスを指定する。

例: path = /var/lib/samba/netlogon
read only ネットログオンディレクトリを読み取り専用にするかどうかを設定する。

値: yes または no

例: read only = yes
guest ok ゲストアクセスを許可するかどうかを設定する。
セキュリティ上の理由から、通常はnoに設定される。
値: yes または no

例: guest ok = no
browseable このセクションをネットワーク上で表示するかどうかを制御する。
通常はnoに設定される。
値: yes または no

例: browseable = no


[print$]セクション

[print$]セクションは、最初から予約されているわけではない。
これは、Sambaの特定の機能に関連する慣例的なセクション名である。

最初から予約されていないが、Sambaがプリンタサーバとして機能する時によく使用される慣例的な名前である。
多くのLinuxディストリビューションでは、Windowsクライアント向けのプリンタドライバを格納するために使用される。

このセクション名は、Sambaの特定の機能と密接に関連しているため、多くの設定例や文書で見かけることがある。
ユーザが別の名前を使用することも可能である。

ただし、これらの慣例的な名前を使用することにより、設定の意図が明確になり、他の管理者も理解しやすくなるというメリットがある。

また、一部のSamba関連ツールやスクリプトが、これらの名前を期待している可能性もある。

[print$]セクションの設定項目
キー 意味
comment 共有の説明を提供する。

例: comment = Printer Drivers
path プリンタドライバやスプーラファイルを格納されているディレクトリのパスを指定する。

例: path = /var/lib/samba/printers
browseable
または
browsable
この共有がネットワーク上でブラウズ可能かどうかを制御する。
値: yes または no

例: browseable = yes
guest ok ゲストユーザのアクセスを許可するかどうかを指定する。
値: yes または no

例: guest ok = no
read only 共有を読み取り専用にするかどうかを指定する。
一般ユーザがプリンタドライバファイルを変更できないようにするため、通常、yesに設定する。
値: yes または no

例: read only = yes
write list 共有への書き込み権限を持つユーザやグループを指定する。

例: write list = @printadmin
create mask 新しく作成されるファイルのパーミッションを指定する。
値: 8進数のパーミッション値

例: create mask = 0644
directory mask 新しく作成されるディレクトリのパーミッションを指定する。
値: 8進数のパーミッション値

例: directory mask = 0755
writable [print$]セクションでは一般的には使用されない。
代わりに、read only = yesキーとwrite listキーの組み合わせを使用して、
特定のユーザにのみ書き込み権限を与えることが一般的である。

共有への書き込みを許可するかどうかを指定する。(read onlyの逆である)
hide files プリンタドライバーファイルを隠す必要性は無いため、[print$]セクションでは一般的には使用されない。

特定のファイルやディレクトリを非表示にする。
veto files プリンタドライバファイルの中で特定のファイルを拒否する必要性は無いため、[print$]セクションでは一般的には使用されない。

アクセスを拒否するファイルパターンを指定する。
printer admin 古いバージョンのSambaで使用されていが、現在は使用されない。
代わりに、write listキーが推奨される。

プリンタ管理者として指定するユーザやグループを設定する。
valid users [print$]セクションで使用されることがあるが、一般的ではない。
多くの場合、アクセス制御はread onlyキーとwrite listキーの組み合わせで行う。

この共有にアクセスできるユーザを指定する。


独自のセクション

以下の例では、ユーザが任意で作成できるセクションの設定を示している。

 # ユーザが任意で指定するセクションの設定例
 
 ; 以下に示す設定では、ユーザは自分のホームディレクトリと所属するグループの共有ディレクトリにアクセスでき、それぞれの領域で読み書きが可能になる
 ; また、ACLの継承により、適切なアクセス権限の管理が容易になる
 
 ; 全ユーザに関する共有設定を定義する
 [users]
 ; この共有の説明文
 ; クライアントがネットワーク上で共有を参照する時に表示される
 comment = All users
 ; この共有のルートディレクトリを指定する
 ; ここでは全ユーザのホームディレクトリがある/homeを指定する。
 path = /home
 ; この設定により、ユーザは共有内のファイルを編集・削除・作成できる
 ; Noは書き込み可能を意味する
 read only = No
 ; 新しく作成されたファイルやディレクトリが、親ディレクトリのACL (アクセス制御リスト) を継承することを指定する
 inherit acls = Yes
 ; これらのファイルやディレクトリをクライアントから非表示にする
 ; この設定例では、quotaファイル、groupsディレクトリ、sharesディレクトリを非表示にしている
 veto files = /aquota.user/groups/shares/
 
 ; グループに関する共有設定を定義する
 [groups]
 ; この共有の説明文
 ; クライアントがネットワーク上で共有を参照する時に表示される
 comment = All
 ; グループ共有のルートディレクトリを指定する
 groups path = /home/groups
 ; ユーザがこの共有内でファイルの編集・削除・作成を行えるようにする
 read only = No
 ; 新しく作成されたファイルやディレクトリが、親ディレクトリのACLを継承することを指定する
 inherit acls = Yes


下表に、ユーザが任意で作成するセクションにおいて、指定できるキーとその値を示す。

その他のセクションの設定項目
キー 意味
path 共有ディレクトリのパスを指定する。
comment コメントを指定する。
browseable ブラウジングする時に表示されるかどうかを指定する。
ただし、設定を無効にした場合でも、共有名を直接指定する場合はアクセスすることができる。
read only ファイルおよびディレクトリを読み取り専用にする。
read list 読み取りが例外的に許可されるユーザを指定する。
(グループを指定する時は@<グループ名>を使用する)
writable 書き込みを許可するかどうかを指定する。
一般的には read onlyがよく使用されている。
write list 書き込みが例外的に許可されるユーザを指定する。
(グループを指定する時は@<グループ名>を使用する)
hide dot files 隠しファイルおよび隠しディレクトリを表示するかどうかを指定する。
hide files 非表示にするファイル名またはディレクトリ名を指定する。
ただし、アクセスは可能である。
veto files 表示およびアクセスさせないファイル名およびディレクトリ名を指定する。
force user 共有ディレクトリに作成するファイルやディレクトリの所有者または所有グループを、強制的に指定したユーザにする。

これは、他のSambaユーザでログインした場合でも、内部的にforce userキーで指定したユーザ名としてログインする。
この時、force userキーで指定したユーザ名のパスワードが求められる。
force group 共有ディレクトリに作成するファイルやディレクトリの所有者または所有グループを、強制的に指定したグループにする。
available
valid users
アクセス可能なユーザを指定する。(グループを指定する時は@<グループ名>を使用する)

以下の2つのキーを指定する場合、hogeユーザ以外はログインできない。
  • available = yes
  • valid users = hoge
guest ok ゲストログインを許可するかどうかを指定する。
(publicキーとguest okキーは同じ意味)
public ゲストログインを許可するかどうかを指定する。
(publicキーとguest okキーは同じ意味)
create mask ファイルに適用可能なパーミッションを指定する。(指定しない場合は、0744)
directory mask ディレクトリに適用可能なパーミッションを指定する。(指定しない場合は、0755)
force create mask 強制的にファイルに適用されるパーミッションを指定する。(指定しない場合は、0000)
force directory mask 強制的にディレクトリに適用されるパーミッションを指定する。(指定しない場合は、0000)


変数

設定ファイル中に、下表に示す変数を使用することができる。

例えば、オプション"path = /tmp/%u"は、任意のユーザ(hoge)で接続した場合、"path = /tmp/hoge"として解釈される。

変数 説明
%S 現在のサービス名
%P 現在のサービスのルートディレクトリ
%u 現在のサービスのユーザ名
%g %uの本来(primary)のグループ名
%U セッションのユーザ名
%G %Uの本来(primary)のグループ名
%H %uで与えられたユーザのホームディレクトリ
%v Sambaのバージョン
%h Sambaが動作しているホストの名前
%m クライアントPCのNetBIOS名
%L サーバのNetBIOS名
%M クライアントPCのネットワーク名
%N NISのホームディレクトリサーバ名。
Sambaを--with-automountオプションを付加せずにビルドしている場合、この値は%Lと同じになる。
%p サーバのホームディレクトリのパス
%R プロトコルレベル
CORE、COREPLUS、LANMAN1、LANMAN2、NT1のうち、いずれかの値を取る。
%d 現在のサーバプロセスのプロセスID
%a リモートPCのアーキテクチャ名。
現状では、Samba、WfWg、WinNT、Win95のいずれか、または、それら以外の場合はUNKNOWNと識別される。
%I クライアントPCのIPアドレス
%T 現在の日付と時刻


マスターブラウザの設定

マスターブラウザは、ワークグループ単位とドメイン単位で存在する。
どのホストがマスターブラウザになるかは、OSの種類による優先度に基づいて選出される。

Samba自身をドメインコントローラにする場合、33以上にすれば優先的に選出される。

マスターブラウザの設定
キー 意味
local master ローカルマスターブラウザのブラウザ選出に参加する。(選出されるかどうかは限らない)
domain master ドメインマスターブラウザに選出されるようになる。
preferred master ブラウザ選定を促す。
os level 優先度


認証の設定

クライアントがどのようにSambaに応答するかを指定する。

認証の設定 (securityセクション)
キー 意味
user ユーザ名とパスワードでローカル認証を行う。(初期設定)
domain master ドメインマスターブラウザに選出されるようになる。
share パスワードだけで認証を行う。
guest ok = yesの設定と共に使用することにより、全てのユーザがゲストアカウントになり、パスワード無しでプリンタを共有する時に使用される。
domain ドメインコントローラにより認証を行う。
server 他のSMBサーバにより認証を行う。
ads ADドメインのドメインコントーローラで認証を行う。



ファイヤーウォールの設定

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

Samba / NMBのデフォルトポートは、TCPとUDPの両方を使用する。
これにより、Sambaの完全な機能 (ファイル共有、名前解決、ブラウジング等) を使用するために必要な全てのポートが開放される。

  • TCPポート (SMB)
    445/TCP: SMB (Server Message Block)
    139/TCP: NetBIOS over TCP/IP
  • UDPポート (NMB)
    137/UDP: NetBIOS Name Service
    138/UDP: NetBIOS Datagram Service


# SMB
sudo firewall-cmd --permanent --add-service=samba
または
sudo firewall-cmd --permanent --add-port=445/tcp  # SMB (Server Message Block)
sudo firewall-cmd --permanent --add-port=139/tcp  # NetBIOS over TCP/IP

sudo firewall-cmd --reload


# NMB
sudo firewall-cmd --permanent --add-service=nmb
または
sudo firewall-cmd --permanent --add-port=137/udp  # NetBIOS Name Service
sudo firewall-cmd --permanent --add-port=138/udp  # NetBIOS Datagram Service

sudo firewall-cmd --reload


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

sudo setsebool -P samba_enable_home_dirs on
sudo restorecon -R <共有ディレクトリのパス>


SELinuxを一時的に無効にする場合は、以下に示すコマンドを実行する。

sudo setenforce 0


SELinuxを永続的に無効にする場合は、以下に示すコマンドを実行する。

sudo vi /etc/selinux/config


# /etc/selinux/configファイル

SELINUX=enforcing



Sambaの起動および停止

Sambaを起動する。

sudo systemctl start smb nmb


もし、ソースコードからSambaをインストールしている場合において、Sambaが起動しない場合、/<Sambaのインストールディレクトリ>/var/run/ncalrpcディレクトリを削除する。

sudo rm -r /<Sambaのインストールディレクトリ>/var/run/ncalrpc


Sambaを再起動する。

sudo systemctl restart smb nmb


Sambaを停止する。

sudo systemctl stop smb nmb



Sambaの管理コマンド

  • smbcontrol
    Sambaサーバを構成する各デーモンにメッセージを送信して制御する。
  • smbstatus
    Sambaサーバに接続されているクライアント、使用中の共有、ロックされているファイルを共有する。
  • nbmlookup
    NetBIOS名を問い合わせたり、NetBIOS名からIPアドレスを検索する。



動作の確認

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

\\<サーバのIPアドレス>
または
\\<サーバのホスト名>



Sambaへのユーザ登録

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

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

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

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

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

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

# smbpasswdスタイルでSambaのユーザ名の一覧を表示
sudo pdbedit -wL

# ユーザを登録する (パスワードを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に登録をする。

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


設定ファイルの確認

Sambaの設定ファイルの構文チェックを行い、エラーや警告を表示する。
testparmコマンドを実行すると、設定ファイルの内容が解析されて、問題がある場合はエラーメッセージが表示される。
正常な場合は、設定の概要が表示される。

testparm

# 特定の場所にあるSambaの設定ファイルを確認する場合
testparm /etc/samba/smb.conf