†Linuxなんて大キライ†

Sambaの設定

作成開始日 2022.10.10
最終更新日 2022.12.20

●Sambaは古いバージョンを使え!

Sambaは新しくなる度に、古いネットワーク環境との互換性がなくなっている。用途によるが、私が使用している環境では、Debian8/Tahrpupあたりのsambaが限界ではないかと思う。無論、新しいsambaでも設定を変更すれば旧環境に対応できるのだろうが、それを試行錯誤で解決するのは物凄い時間の浪費。新しいバージョンだからと言って、旧環境には何のメリットもないので、素直に古いバージョン(4.2.xあたり)でサーバを組むのが正解。

sambaの設定は多岐に亘り複雑で、しかも、しばしば仕様が変更されるため、その度ごとに対応していたら膨大な時間を失う。それよりも、自分の環境で確実に動くシステムを確定し、その設定以外は使わない、とするのが良い。「もっと便利」とか「もっと安全」とか言い出したら、それこそ底無しに沼に引きずり込まれる。

●Sambaを使用する前の事前準備

@smbpasswdでsambaユーザーを登録する
Afirewallを停止する(少なくともsambaが開通するまでは)
B共有するフォルダ(ディレクトリ)のパーミッションを変更する

ユーザー登録は「Linux自体のユーザー登録」と「sambaのユーザー登録」の両方で同じユーザーID/パスワードの登録が必要。確か、これも自動的にシンクロするような設定があったような、なかったような気がするが、そんなことを調べるよりは、素直に重複登録をする方が賢明。

書き込みを許可するには、共有するフォルダのパーミッションと、smb.confの「writable = yes」設定の両方が必要。これなんかも非常に忘れやすく、フォルダのパーミッションをchmod 777にしているのに、どうしても書き込めないなんて状況が発生する。なお、FAT32(外付けドライブ等)では、パーミッションの変更に特殊なテクニックが必要なので、できるだけ使用を避ける。

【追記】システムとは別のドライブに共有フォルダを作成する場合は、その経路の全てについてパーミッションをチェックすること。たとえば、2番目のSATAドライブである「hdd2」に共有フォルダを作成する場合は、「hdd2」上のフォルダのパーミッションだけ確認しているのでは不十分。この場合、「/media/root/hdd2/myfolder」のようなマウント形式になるので、「/media」「/media/root」「/media/root/hdd2」「/media/root/hdd2/myfolder」のすべてのパーミッションを適切に設定する必要がある。(2022.12.20)

●smb.confの例

以下に、私が使用しているsmb.confの例を示す。ちなみに、設定の意味はほとんど理解していない。特に、[global]設定のパスワードがらみの設定は全く理解できていない。なお、ウチの環境に特有な事情を注記しておくと、ワークグループ名が一般的な「WORKGROUP」ではなく「CHAOS」になっている点、また、共有フォルダを「/root/Downloads」としている点、この2点は各自の環境に合わせて変更する必要がある。また、ウチの環境では使用者はほぼ私一人。
#======================= Global Settings =======================

[global]
   workgroup = CHAOS
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes

#======================= Share Definitions =======================

[homes]
	comment = Home Directories
	browseable = yes
	read only = yes
	create mask = 0700
	directory mask = 0700
	valid users = %S

[share]
	comment = my share folder
	path = /root/Downloads
	writable = yes
	guest ok = yes
	guest account = nobody
	map to guest = Bad User
	browsable = yes

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no


【Linuxなんて大キライ目次】 【ホーム】