Fedora 27で久々にSamba4を動かしてみた。

By | 2018年5月26日 , Last update: 2021年2月11日

はじめに

久々に自宅のNUCで、Sambaサーバを動かしてみることにしました。Samba4に挑戦です。

Sambaサーバとして使用するNUCはこちらです↓

Linuxベースのファイル共有用のサーバとしてはNFSサーバやWebDAVサーバとかを所構わず立ち上げて使っている一方で、Sambaはバージョンが進むに連れて設定の方法が複雑で、かつとっつきにくいものになってしまったために使うのをやめてしまいました。

その後、ずいぶんと長い月日が流れました。

そして、このたび、嫁様のPCを新調するにあたり、古いPCにあったファイルを嫁様でも簡単にアクセスできる方法で保管できる場所を作るよう求められたので、Sambaを久々に使ってみるしかないという結論に達したわけです。

というわけで、この記事ではFedora 27上でのSambaのインストール及び設定の方法について書きます。

なお、SELinuxを有効にしている場合には、複数のユーザでファイル共有をするために追加の設定が必要なことがこの記事を最初に書いた後でわかりましたので、それについても書きます。

Amazonで探すと、こんな感じの書籍も売っているようです↓

スポンサーリンク

インストール及び大まかな設定。

dnfでインストール。

Sambaのパッケージはroot権限で以下のようにdnfコマンドを実行するとインストールできます。develパッケージとかがインストールされているかもしれないのは見逃す方向でお願いいたします。

[root@pandanote.info panda]# dnf install samba*

 

「デフォルト設定」のsmb.confの移動

前項の方法でFedora 27にSambaをインストールすると、/etc/samba/smb.confもインストールされますが、これがあると次項のsamba-toolの実行時にエラーになってしまうので、root権限で以下のコマンドを実行して、ファイル名を変更しておきます。

[root@pandanote.info panda]# mv /etc/samba/smb.conf /etc/samba/smb.conf.ORG

スポンサーリンク

 

samba-toolでsmb.confを作る。

root権限で以下のコマンドを実行します。LDAPは使わない方向です。

[root@nuc panda]# samba-tool domain provision --interactive

 
すると、レルム、サーバロール及びDNSの入力を求められるので、適切な値を入力します。なお、以下の値は実際に入力した値とは異なります。

自宅のLANにはBIND9を使った(自宅LAN用の)DNSサーバが稼働していますが、chrootの設定を変えたくなかったので、SAMBA_INTERNALなDNSを使用し、DNSのフォワーディングも無効にしています。また、管理者パスワードは表示していませんが、それなりの強度のものを求められますので、文字、記号及び数字を最低1文字ずつ入れておきます。

Realm: PANDANOTE.INFO
Domain [PANDANOTE]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write ‘none’ to disable forwarding) [192.168.xyz.pqr]: none
Administrator password:
Retype password:

 
パスワードの入力が終わると以下のように画面にメッセージが出力されて、コマンドの実行が終了し、/etc/samba/smb.confが作成されます。

Looking up IPv4 addresses
Looking up IPv6 addresses
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=pandanote,DC=info
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=pandanote,DC=info
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
The Kerberos KDC configuration for Samba AD is located at /var/lib/samba/private/kdc.conf
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
Setting up fake yp server settings
Once the above files are installed, your Samba AD server will be ready to use
Server Role: active directory domain controller
Hostname: nuc
NetBIOS Domain: PANDANOTE
DNS Domain: pandanote.info
DOMAIN SID: S-1-5-21-3386981907-1467706757-abcdefghij

 

krb5.confを書き換える。

上記の画面出力の指示通りに/etc/krb5.confのlibdefaultsセクションの内容を/var/lib/samba/private/krb5.confの内容で上書きします。

firewallの設定を変更する。


スポンサーリンク

以下のコマンドを実行し、sambaが使用するポートを他のPCが使用できるように設定します。

[root@nuc panda]# firewall-cmd --permanent --zone=FedoraServer --add-service=samba
[root@nuc panda]# firewall-cmd --zone=FedoraServer --add-service=samba

 

sambaを起動する。

以下のコマンドをroot権限で実行し、sambaを起動します。

# systemctl start samba

 
psコマンド等を駆使して起動したかどうか、確認してみます。

[root@nuc panda]# ps aux | grep smbd | head -1
root 2209 2.4 0.2 539108 45560 ? Ss 12:05 0:00 /usr/sbin/smbd --foreground --no-process-group

 

起動してますね。

smbclientで動作確認。

スポンサーリンク

以下のコマンドを実行し、ログオンできるかどうか確認します。なお、パスワードは実際に設定したものとは異なります。

[root@nuc panda]# smbclient //localhost/netlogon -UAdministrator%’pandanote.info’ -c ‘ls’
. D 0 Thu May 24 06:44:44 2018
.. D 0 Thu May 24 06:48:30 2018


スポンサーリンク

15718400 blocks of size 1024. 11498936 blocks available

 
ログオンできているようです。

ファイル共有のための詳細な設定。

Sambaのサーバの設定ができたら、次はファイル共有のための詳細な設定を行います。

smb.confへのshareセクションの追加

/etc/samba/smb.confに以下の設定を追加し、保存します。

[share]
path = /export/share/
browsable =yes
writable = yes
guest ok = no
read only = no
create mode = 0777
directory mode = 0777

 

SELinuxの設定

SELinuxを有効にしている場合には、上記のpathで設定したディレクトリの下に作成されたファイルやフォルダに samba_share_t タイプのラベルを付与する必要があるため、root権限で以下のコマンドを実行します。

なお、semanageコマンドはFedora 27ではpolicycoreutils-python-utilsパッケージに含まれているので、コマンドが見つからないと言われた場合には、以下のコマンドを実行前にdnfコマンドでインストールします。

# semanage fcontext -a -t samba_share_t “/export/share(/.*)?”
# restorecon -RF /export/share

 

最初は以下のコマンドを実行してお茶を濁す予定でしたが、やめました。(`・ω・´)

# setsebool -P samba_export_all_rw on

 

Sambaの再起動

設定を追加したら、Sambaを再起動します。

# systemctl restart samba

 

Samba用のユーザアカウントの追加

Samba用のユーザアカウントの追加は以下の手順で行います。

  1. 対応するUNIXのアカウントがない場合には、root権限で以下のコマンドを実行します。なお、対応するSambaサーバ上でのUNIXのアカウントがある場合には、以下のコマンドは実行せずに手順2に進みます。
    # useradd panda

     

  2. root権限で以下のコマンドを実行し、Samba用のユーザアカウントを作成します。
    [root@nuc panda]# pdbedit -a -u panda
    new password:
    retype new password:
    Unix username: panda
    NT username:
    Account Flags: [U ]
    User SID: S-1-5-21-2376112507-1695703218-107372440-1103
    Primary Group SID: S-1-5-21-2376112507-1695703218-107372440-513
    Full Name:
    Home Directory:
    HomeDir Drive: (null)
    Logon Script:
    Profile Path:
    Domain:
    Account desc:
    Workstations:
    Munged dial:
    Logon time: 0
    Logoff time: 0
    Kickoff time: 木, 14 9月 30828 11:48:05 JST
    Password last set: 土, 26 5月 2018 12:25:24 JST
    Password can change: 土, 26 5月 2018 12:25:24 JST
    Password must change: never
    Last bad password : 0
    Bad password count : 0
    Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

     

Windows10のクライアントを使って動作確認。

Windows10からSambaのサーバにログオンできるかどうか及び共有フォルダ上でファイルが作成できるかどうか確認してみます。

以下の手順で確認します。

  1. ログオンしたいWindows10のクライアントPCのエクスプローラを起動します。
  2. 左側のツリービューから「PC」を探し出してクリックします。
  3. 以下のような画面に切り替わるので、「コンピュータ」(下図の赤矢印)をクリックします。
  4. 以下のような画面に表示が切り替わるので、「ネットワークの割り当て」を選択し、さらに表示されたメニューバーの「ネットワークの割り当て」(下図の赤矢印)を選択します。
  5. 「ネットワークの割り当て」ウィンドウが表示されますので、フォルダーのパスを指定し、「完了」ボタンを押します。
  6. 「ネットワーク資格情報の入力」ウィンドウが表示されますので、前節で作成したユーザ名及びパスワードを入力し、「OK」ボタンを押します。
  7. ユーザ名及びパスワードの組み合わせが正しければ、ログオンに成功し、以下のような画面が表示されます。すでにあるフォルダは移転前のサーバで一時的にSamba4の設定を行ったときに作ったものですので、気にしない方向でお願いいたします。?
  8. この共有フォルダに”panda大学習帳.txt”というファイル名のファイルを作成し、Sambaサーバ側からアクセスしてみます。
    panda@nuc ~]$ ls -l /export/share/
    合計 8
    drwxrwxr-x. 8 3000018 users 226 5月 6 17:03 backup
    drwxrwxr-x. 4 3000019 users 37 5月 6 13:12 neco
    -rwxrwxr-x+ 1 3000009 users 15 5月 26 13:08 panda大学習帳.txt
    [panda@nuc ~]$ iconv -f sjis -t utf8 /export/share/panda大学習帳.txt
    panda大学習帳

     
    メモ帳でファイルに文字を書き入れたため、ファイルの中身の文字コードがcp932になっていますが、ファイルが作成できることが確認できました。

まとめ

ここまでの作業で、嫁様の期待にはなんとか応えることができそうです。ファイルなどの移動などの操作がWindowsと同じ使用感でできるのは便利ですね。

ファイルの退避先として有効に使えそうです。

この記事は以上です。

[2018/10/14補足]パスワードの変更

「パスワードの期限が切れています。」というエラーメッセージが表示される場合には、Samba4サーバにログインして、以下のようにsmbpasswdコマンドを実行すると、パスワードを変更することができます。

[panda@pandanote.info ~]$ smbpasswd
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user panda
[panda@pandanote.info ~]$

 

参考文献

  1. Samba 4.4.xでActive Directoryを1から立てる
  2. Samba 4.0でActive DirectoryとWindowsドメインログオン
  3. SambaでWindowsファイル共有を行う正しいやり方
  4. Sambaで共有したフォルダが見えるが書き込めない原因がSELinuxである場合とその対処