Linux Boxを立ち上げてSambaを走らせ、ファイルサーバーにしているが、 なんらかの理由でシステムを入れ替えるたび、Sambaを設定し直すはめになる。
一度済ませてしまえばいいのだが、いくつかの手順をふまないといけず、 それがなかなか面倒で、たまにしかやらないからすぐに忘れてしまう。
次回以降にsambaの設定に戸惑わないよう方法を書き記す。
また、blogにかくことで、sambaの設定で困っているかたの一助になれば幸いである。
設定の手順は基本的に下記のとおりになる。 順序が前後したり、場合によっては不要になる。
・ホスト名設定
・sambaパッケージインストール
・sambaアクセスユーザーの作成 • Windows属性追加
・共有用フォルダー作成、パーミッション変更
・設定(smb.confの変更)
・firewallの許可設定・SELinuxポリシー変更
今回使用するディストリビューションはFedora37である。
ホスト名等は、便宜上下記のとおりにするが各環境にあわせて設定すること。
ホスト名は、SFSとする。
アクセスユーザー、sambauser 共有するフォルダーは、/run/media/USERNAME/SATAHDD001/share
※Linuxが入っているドライブとは別にSATAに接続したHDD上に共有フォルダーを作成する。
ワークグループはWORKGROUPにする。
・ホスト名設定
ルート権限にて、
nmcli general hostname SFS
もしくは、
sudo nmcli general hostname SFS
・sambaパッケージインストール
ルート権限にて、
dnf -y install samba
もしくは、
sudo dnf -y install samba
・sambaアクセスユーザーの作成
ルート権限にて、
useradd -M -s /sbin/nologin sambauser
※ホームフォルダーを作成せず、カアウントがローカルでログインしないオプション設定。
Windows属性追加 ルートで、
pdbededit -a -u sambauser
・共有用フォルダー作成、パーミッション変更
※共有フォルダーにつかうHDDを/run/media/USERNAME/SATAHDD001/に マウントしてある前提。
ルート権限にて、
cd /run/media/USERNAME/SATAHDD001/
mkdir share
chmod -R 777 share
chown -R nobody:nobody share
※shareフォルダーを書き込み読み込み無制限、所有者なしに設定。
・設定(smb.confの変更)
/etc/sambaフォルダー内にあるsmb.confファイルを編集することでsambaの設定を行う。
編集前に
cp -p smb.conf smb.conf.org
としてファイルのバックアップをとっておく。(もちろんルート権限で実行)
※プリンタサーバー機能は使用せず、関係箇所はすべて#をアタマにつけ コメントアウトする。
※パスワード形式は、tdbsamとする。
smb.confファイルを下記のように書きかえる。
[global]
workgroup = WORKGROUP
server string = SAMBA SERVER Version %v
netbios name = SFS
security = user
passdb backend = tdbsam
unix charset = UTF-8
dos charset = CP932
wins support = yes
# printing = cups
# printcap name = cups
load printers = no
disable spoolss = yes
# cups options = raw
# Install samba-usershares package for support
# include = /etc/samba/usershares.conf
※プリンタ共有機能設定「load printers = no」はnoで無効、「disable spoolss = yes」はyesで無効。
[share]
path = /run/media/USERNAME/SATAHDD001/share
broowsable = yes
read only = no
force create mode = 777
force directory mode = 777
※Fedora37のインストール直後のsmb.confには、[share]セクションがなくかわりに「include =/etc/samba/usershares.conf」と書かれていた。
見慣れないもので正直よくわからなかったためコメントアウトして[share]セクションを書き足した。
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
# [printers]
# comment = All Printers
# path = /var/tmp
# printable = Yes
# create mask = 0600
# browseable = No
# [print$]
# comment = Printer Drivers
# path = /var/lib/samba/drivers
# write list = @printadmin root
# force group = @printadmin
# create mask = 0664
# directory mask = 0775
sambaを走らせる前に設定ファイルに間違いがないか「testparm」コマンドで確認する。
・firewallの許可設定、SELinuxポリシー変更
ファイアウォールにsambaサービス接続許可を追加する。
ルート権限で
firewall-cmd --add-service=samba --permanent
「success」と表示されれば完了 ファイアウォールをリロードする。
ルート権限で
firewall-cmd –-reload
SELinuxポリシー変更する。
※ポリシー変更しなくても「setenforce 0」でSELinuxを無効化してしまうのが一番簡単だと思う。 しかし、それだと面白みがないのできちんと設定しようと考えたがここが一番苦労した。
共有フォルダーのラベリングルールを変える。
ルート権限で
semanage fcontext -a -t samba_share_t “/var/run/media/USERNAME/SATAHDD001/share”
※初め、/run/media/USERNAME/SATAHDD001/shareで設定しようとしたらうまくいかなかった。 しつこく試していたら/runフォルダー、/var/runフォルダーで競合するとメッセージがでてきた。 /varフォルダーのほうで設定したらうまくいった。まだまだlinuxについて理解が浅いorz
共有フォルダーのコンテキストを変える。
ルート権限で
restorecon -R -v /var/run/media/USERNAME/SATAHDD001/share
あとは、smb、nmbサービスを起動(再起動)させる。
あ~~~、めんどう。
※コメント投稿者のブログIDはブログ作成者のみに通知されます