「インストール - Samba」の版間の差分
381行目: | 381行目: | ||
<br> | <br> | ||
==== [homes]セクション ==== | ==== [homes]セクション ==== | ||
[homes]セクションは、ユーザのホームディレクトリを自動的に共有するために使用する特別なセクションである。<br> | |||
<br> | <br> | ||
[homes] | [homes]セクションは特別な意味を持つため、一部のキーは、通常のセクションの同名のキーとは異なる振る舞いをすることがある。<br> | ||
例えば、valid users = % | 例えば、valid users = %Sは現在接続しているユーザーのみがそのホームディレクトリにアクセスできるようにする設定である。<br> | ||
<br> | <br> | ||
ただし、必ずしも全てのsmb.confファイルに存在するわけではない。<br> | ただし、必ずしも全てのsmb.confファイルに存在するわけではない。<br> |
2024年9月8日 (日) 02:29時点における版
概要
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 | ファイル共有 |
参考書 |
---|
サーバ構築の実例がわかる |
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
# 個々のユーザごとのホームディレクトリを共有するための設定を定義する
# ユーザ名ごとに適用するプロファイルや追加の設定を指定できる
# 各ユーザは自分のホームディレクトリにアクセスでき、他のユーザのホームディレクトリにはアクセスできない
[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は現在のユーザ名に置き換えられる
# グループ単位で共有フォルダを設定する
# 特定のグループに属するユーザがアクセスできる共有フォルダを定義する
[groups]
comment = All groups
path = /srv/samba/groups/%G # 共有フォルダのパスを指定する
# 例えば、%Gは現在のグループ名に置き換えられる
read only = No
create mask = 0770 # 新しいファイルが作成されたときのデフォルトのアクセス許可を指定する
directory mask = 0770 # 新しいディレクトリが作成されたときのデフォルトのアクセス許可を指定する
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
# 任意の共有ディレクトリ
[<共有ディレクトリ名 例. 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の設定ファイルが正常に設定されているかどうかを確認する。
cd <Sambaのインストールディレクトリ> sudo ./testparm
Sambaの設定項目
[global]セクション
Sambaサーバ全体に適用される設定を記述する特殊なセクションである。
キー | 意味 |
---|---|
server string | サーバ名前等の説明を記述する。
ブラウズリストでコンピュータ名の隣、および、プリンタマネージャにおけるプリンタのコメント欄等に表示される。 |
netbios name | SambaサーバのNetBIOS名を指定する。 |
workgroup | Sambaサーバが、所属するワークグループ名もしくはドメイン名を指定する。 |
server role | Sambaサーバーの動作モードを指定します。 |
hosts allow | 接続を許可するIPアドレスまたはホスト名を指定する。(未指定のIPアドレスまたはホスト名は拒否される)
|
guest account | アカウントが存在しないユーザはゲストとしてアクセスできる。 nobody以外を使用する場合は、予め、/etc/passwdファイルに該当ユーザを作成する必要がある。 |
Bad User | 存在しないユーザがアクセスする場合は、ゲスト認証であるとみなして、guest account キーで定義されたユーザでログインする。
|
Bad Password | 上記に加えて、パスワード入力ミスの場合もゲスト認証であるとみなす。 |
Never | ゲスト認証を許可しない。 |
map to guest | Sambaユーザとして認証できない場合の動作を指定する。 設定値
|
log file | ログファイルのパスを指定する。 接続元ホストを示す変数 %m を使用する場合、接続元ホストごとにログファイルを分けることができる。
|
max log size | ログファイルの最大サイズを指定する。 値が0の場合は、サイズは無制限となる。 |
smb passwd file | smbpasswd方式でパスワード認証を行う場合のパスワードファイルのパスを指定する。 |
unix password sync | SambaのパスワードとLinuxのパスワードを同期させるかどうかを指定する。 この設定を有効にする場合、Sambaのパスワードを変更した後、Linuxユーザのパスワードも変更する必要がある。 |
passwd program | unix password syncキーを有効にした場合、Samba側でパスワードを変更した後に実行するプログラムを指定する。 |
passwd chat | unix password syncキーを有効にした場合の応答内容を指定する。 |
username map | Linuxユーザを別のユーザとマッピングさせて、複数のユーザで共有する。 |
logon script | ログイン時に実行するスクリプトファイルを指定する。 |
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ファイルに存在するわけではない。
キー | 意味 |
---|---|
path | ホームディレクトリの基本パスを指定する。 例: path = /home/%S |
browseable | この共有をネットワーク上で表示するかどうかを制御する。 値: yes または no 例: browseable = no |
read only | 共有を読み取り専用にするかどうかを指定する。 値: yes または no 例: read only = no |
create mask | 新しく作成されるファイルのパーミッションを指定する。 値: 8進数のパーミッション値 例: create mask = 0700 |
directory mask | 新しく作成されるディレクトリのパーミッションを指定する。 値: 8進数のパーミッション値 例: directory mask = 0700 |
valid users | この共有にアクセスできるユーザを指定する。 例: valid users = %S |
guest ok | ゲストユーザのアクセスを許可するかどうかを指定する。 値: yes または no 例: guest ok = no |
writable | ユーザに書き込み権限を与えるかどうかを指定する。 値: yes または no 例: writable = yes |
veto files | アクセスを拒否するファイルパターンを指定する。 例: veto files = /.*/.*/ |
hide files | 特定のファイルやディレクトリを非表示にする。 例: hide files = /lost+found/*/ |
follow symlinks | シンボリックリンクをたどるかどうかを指定する。 値: yes または no 例: follow symlinks = yes |
strict sync | 同期書き込みを厳密に行うかどうかを指定する。 値: yes または no 例: strict sync = no |
case sensitive | ファイル名の大文字小文字を区別するかどうかを指定する。 値: yes または no または auto 例: case sensitive = auto |
hide dot files | ドットで始まるファイルを隠すかどうかを指定する。 値: yes または no 例: hide dot files = yes |
dos filetimes | DOSスタイルのファイルタイムスタンプを使用するかどうかを指定する。 値: yes または no 例: dos filetimes = yes |
[printers]セクション
Sambaで利用可能な全てのプリンタを共有するための特別なセクションである。
このセクションを使用する場合、システムに設定されているプリンタが自動的に共有される。
キー | 意味 |
---|---|
path | スプールファイルを保存するディレクトリを指定する。 例: path = /var/spool/samba |
browseable | プリンタ共有をネットワーク上で表示するかどうかを制御する。 値: yes または no 例: browseable = yes |
guest ok | ゲストユーザのアクセスを許可するかどうかを指定する。 値: yes または no 例: guest ok = no |
create mode | 新しく作成されるファイルのパーミッションを指定する。 例: create mode = 0700 |
force group | ファイル作成時に使用するグループを指定する。 例: force group = lp |
valid users | この共有にアクセスできるユーザを指定する。 例: valid users = @printusers, @staff |
write list | 共有への書き込み権限を持つユーザやグループを指定する。 例: write list = @printadmin |
print ok | この共有をプリンタ共有として使用可能にするかどうかを指定する。 [printers]セクションでは、一般的に、 yes に設定する。値: yes または no 例: print ok = yes ※注意 このオプションは、printableキーの別名である。 どちらを使用しても同じ効果がある。 |
printable | この共有をプリンタ共有として使用可能にするかどうかを指定する。 [printers]セクションでは、一般的に、 yes に設定する。値: yes または no 例: print ok = yes ※注意 このオプションは、printableキーの別名である。 どちらを使用しても同じ効果がある。 |
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 | システムに設定されている全てのプリンタを自動的に共有するかどうかを指定する。 値: yes または no 例: load printers = yes |
printing | 使用する印刷システムを指定する。 値: CUPS , BSD , SYSV , LPRNG , PLP , LPRNT , QNX 例: printing = CUPS |
printer admin | プリンタ管理者として指定するユーザやグループを設定する。 例: printer admin = @ntadmin |
min print space | 印刷を許可するために必要な最小のディスク空き容量を指定する。 例: min print space = 2000 |
use client driver | クライアント側のプリンタドライバを使用するかどうかを指定する。 値: yes または no 例: use client driver = no |
[print$]セクション
プリンタドライバの格納場所を指定する特別なセクションである。
キー | 意味 |
---|---|
path | プリンタドライバやスプーラファイルを格納するディレクトリのパスを指定する。 例: path = /var/lib/samba/printers |
browseable または browsable |
この共有がネットワーク上で表示されるかどうかを制御する。 値: yes または no 例: browseable = yes |
guest ok | ゲストユーザのアクセスを許可するかどうかを指定する。 値: yes または no 例: guest ok = no |
read only | 共有を読み取り専用にするかどうかを指定する。 値: yes または no 例: read only = yes |
writable | 共有への書き込みを許可するかどうかを指定する。(read onlyの逆である) 値: yes または no 例: writable = no |
create mask | 新しく作成されるファイルのパーミッションを指定する。 値: 8進数のパーミッション値 例: create mask = 0644 |
directory mask | 新しく作成されるディレクトリのパーミッションを指定する。 値: 8進数のパーミッション値 例: directory mask = 0755 |
force user | ファイル作成時に使用するユーザを指定する。 値: <ユーザ名> 例: force user = smbuser |
force group | ファイル作成時に使用するグループを指定する。 値: <グループ名> 例: force group = printadmin |
hide files | 特定のファイルやディレクトリを非表示にする。 値: 非表示にするファイルやディレクトリのパターン 例: hide files = /tmp*/ |
veto files | アクセスを拒否するファイルパターンを指定する。 値: 拒否するファイルのパターン 例: veto files = /.exe/.com/*.dll/ |
comment | 共有の説明を提供する。 例: comment = Printer Drivers |
printer admin | プリンタ管理者として指定するユーザやグループを設定する。 例: printer admin = @ntadmin |
valid users | この共有にアクセスできるユーザを指定する。 例: valid users = @printusers, @staff |
write list | 共有への書き込み権限を持つユーザやグループを指定する。 例: write list = @printadmin |
その他のセクション
キー | 意味 |
---|---|
path | 共有ディレクトリのパスを指定する。 |
comment | コメントを指定する。 |
browseable | ブラウジングする時に表示されるかどうかを指定する。 ただし、設定を無効にした場合でも、共有名を直接指定する場合はアクセスすることができる。 |
read only | ファイルおよびディレクトリを読み取り専用にする。 |
read list | 読み取りが例外的に許可されるユーザを指定する。 (グループを指定する時は@<グループ名>を使用する) |
writable | 書き込みを許可するかどうかを指定する。 |
write list | 書き込みが例外的に許可されるユーザを指定する。 (グループを指定する時は@<グループ名>を使用する) |
hide dot files | 隠しファイルおよび隠しディレクトリを表示するかどうかを指定する。 |
hide files | 非表示にするファイル名またはディレクトリ名を指定する。 ただし、アクセスは可能である。 |
veto files | 表示およびアクセスさせないファイル名およびディレクトリ名を指定する。 |
force user | 共有ディレクトリに作成するファイルやディレクトリの所有者または所有グループを、強制的に指定したユーザにする。 これは、他のSambaユーザでログインした場合でも、内部的に force user キーで指定したユーザ名としてログインする。この時、 force user キーで指定したユーザ名のパスワードが求められる。
|
force group | 共有ディレクトリに作成するファイルやディレクトリの所有者または所有グループを、強制的に指定したグループにする。 |
available valid users |
アクセス可能なユーザを指定する。(グループを指定する時は@<グループ名>を使用する) 以下の2つのキーを指定する場合、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に応答するかを指定する。
キー | 意味 |
---|---|
user | ユーザ名とパスワードでローカル認証を行う。(初期設定) |
domain master | ドメインマスターブラウザに選出されるようになる。 |
share | パスワードだけで認証を行う。guest ok = yes の設定と共に使用することにより、全てのユーザがゲストアカウントになり、パスワード無しでプリンタを共有する時に使用される。
|
domain | ドメインコントローラにより認証を行う。 |
server | 他のSMBサーバにより認証を行う。 |
ads | ADドメインのドメインコントーローラで認証を行う。 |
ファイヤーウォールの設定
ファイアーウォールを有効にしている場合は、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 <共有ディレクトリのパス>
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