アイキャッチ画像

CentOS7にsamba 4.8をインストールする

ファイルサーバーを立てようと思い立って、PCにCentOS7とsamba4.8をインストールしました。yumで入れれば簡単なのですが、ちょっとsambaの最新版が使いたくてビルドしてみました。

目次

  1. CentOS7のインストール
  2. エディタのインストール
  3. SSH
  4. SSHでログインする
  5. データ用のドライブをマウントする
  6. sambaのインストール
  7. sambaを起動する

CentOS7のインストール

CentOS7のミニマルのisoファイルをDVD-Rに書き込みます。 そのDVD-Rから起動して、SSDにインストールします。

インストールの途中で、rootのパスワードの設定と管理者ユーザーの作成を行います。

エディタのインストール

設定ファイルの書き換えを行うために、テキストエディタをインストールします。 私は、vimはよく使えないのでnanoにします。

$ sudo yum install nano -y

SSH

リモートで操作しますのでSSHの設定をします。 こちらのサイト を参考にしました。

まず、sshd_configを編集してポート番号を22から他の番号に変更し、rootでログインできないようにします。

$ sudo nano /etc/ssh/sshd_config

Port 10022
PermitRootLogin no

次に、SELinuxの設定をします。

SELinuxの設定をするために、設定ツールをインストールします。

$ sudo yum install policycoreutils-python -y

設定ツールでsshのポートを変更します。

$ sudo semanage port -a -t ssh_port_t -p tcp 10022
$ sudo semanage port -l| grep ssh

変更できたら、sshdの再起動をします。

$ sudo systemctl restart sshd
$ sudo systemctl status sshd
$ ss -t -l -n

そうしたら、ファイアウォールの設定をします。 ファイアウォールに登録されているサービスがsshで22番ポートを開けるようになっているので、代わりのサービスを登録して、ポート番号を変更します。

$ sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-alt.xml
$ sudo nano /etc/firewalld/services/ssh-alt.xml

Port="10022"

代わりに作ったサービスをファイアウォールに登録して、元からあるsshというサービスをファイアウォールから削除します。 その後、ファイアウォールとsshdを再起動します。 うまくいったら、ついでにリブートします。

$ sudo firewall-cmd --reload
$ sudo firewall-cmd --permanent --add-service=ssh-alt
$ sudo firewall-cmd --permanent --remove-service=ssh
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all
$ sudo systemctl restart sshd

$ sudo reboot

SSHでログインする

MacのターミナルからSSHでログインします。

$ ssh -l user -p 10022 192.168.xxx.xxx

ログインできたら、アップデートします。

$ sudo yum update -y

データ用のドライブをマウントする

データ格納用のドライブを、フォーマットしてマウントします。

まず、各ドライブがどこにつながっているか確認します。

$ sudo fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: gpt
Disk identifier: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

#         Start          End    Size  Type            Name

Disk /dev/sdb: 256.1 GB, 256060514304 bytes, 500118192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: dos
ディスク識別子: xxxxxxx

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1   *        2048     2099199     1048576   83  Linux
/dev/sdb2         2099200   500117503   249009152   8e  Linux LVM

Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト

Disk /dev/mapper/centos-swap: 3623 MB, 3623878656 bytes, 7077888 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト

Disk /dev/mapper/centos-home: 197.7 GB, 197669158912 bytes, 386072576 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト

起動用のドライブが/dev/sdbに、データ用のドライブが/dev/sdaにつながってますね。

データ用のドライブにパーティションを切ります。fdiskはGPT対応は不安定版ですと警告が出ますが、無視してみます。

$ sudo fdisk /dev/sda

WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

コマンド (m でヘルプ): n
パーティション番号 (1-128, default 1): 1
First sector (34-7814037134, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-7814037134, default 7814037134):
Created partition 1

コマンド (m でヘルプ): p

Disk /dev/sda: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: gpt
Disk identifier: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

#         Start          End    Size  Type            Name
 1         2048   7814037134    3.7T  Linux filesyste

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

作ったパーティションをフォーマットします。

$ sudo mkfs -t ext4 /dev/sda1

mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
244195328 inodes, 976754385 blocks
48837719 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3124756480
29809 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
     32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
     4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
     102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

フォーマットが終わったら、マウントします。

$ sudo mkdir /mnt/share
$ sudo mount /dev/sda1 /mnt/share
$ sudo mount
途中省略
/dev/sda1 on /mnt/share type ext4 (rw,relatime,seclabel,data=ordered)

常にマウントするように、fstabを編集します。

$ sudo nano /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Jul  7 17:35:18 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=xxxxxxxxxxxxxxxxxx /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sda1 /mnt/share                            ext4    defaults        0 0

sambaのインストール

こちらのサイト を参考にしました。

yumでインストールするのが正しい作法なのですが、記事を書いている時点ではyumでは4.7しか入れられず、どうしても4.8を試したかったのでソースからビルドすることにしました。

sambaをビルドする前に、必要なものをインストールします。

$ sudo yum install wget -y
$ sudo yum install gcc gdb attr bind-utils docbook-style-xsl krb5-workstation -y
$ sudo yum install libxslt perl perl-ExtUtils-MakeMaker -y
$ sudo yum install perl-Parse-Yapp python-crypto libattr-devel -y
$ sudo yum install keyutils-libs-devel libacl-devel libaio-devel libuuid-devel -y
$ sudo yum install libxml2-devel openldap-devel pam-devel popt-devel -y
$ sudo yum install python-devel readline-devel systemd-devel -y
$ sudo yum install gnutls-devel -y

sambaのソースファイルをダウンロードして、ビルドして、インストールします。

$ wget https://download.samba.org/pub/samba/stable/samba-4.8.3.tar.gz
$ tar -zxf samba-4.8.3.tar.gz
$ cd samba-4.8.3
$ ./configure
$ make
$ sudo make install

samba用のディレクトリを作成します。

$ sudo mkdir /mnt/share/public
$ sudo chmod -R 0777 /mnt/share/public
$ sudo chown -R nobody:nobody /mnt/share/public
$ ll /mnt/share
drwxrwxrwx. 2 nobody nobody  4096  7月  8 10:23 public

sambaの設定ファイルを書き換えます。というか、yumでインストールすると別のところにsmb.confが作られるのでそれを書き換えたりするのですが、自分でビルドするとsmb.confも自分で作る必要があります。

$ sudo nano /usr/local/samba/etc/smb.conf
[global]
    workgroup = WORKGROUP
    server string = SAMBA SERVER Version %v
    netbios name = fs
    security = user
    passdb backend = tdbsam
    dos charset = CP932
    wins support = yes
    load printers = no
    disable spoolss = yes

[homes]
    comment = Home Directories
    valid users = %S, %D%w%S
    browseable = No
    read only = No
    inherit acls = Yes

[share]
    comment = Share Folder for All Users
    path = /mnt/share/public
    browsable = yes
    writable = yes
    read only = no

Sambaアクセス用のユーザーを作ります。

$ sudo useradd smb-user
$ sudo passwd smb-user
$ sudo /usr/local/samba/bin/pdbedit -a -u smb-user -f "smb user"

smbとnmbというサービスの設定ファイルを作ります。

$ sudo nano /usr/lib/systemd/system/smb.service
[Unit]
Description=Samba SMB Daemon
After=syslog.target network.target nmb.service winbind.service

[Service]
Environment=KRB5CCNAME=FILE:/run/samba/krb5cc_samba
Type=forking
NotifyAccess=all
PIDFile=/usr/local/samba/var/run/smbd.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/local/samba/sbin/smbd $SMBDOPTIONS
ExecReload=/usr/bin/kill -HUP $MAINPID
LimitCORE=infinity

[Install]
WantedBy=multi-user.target
$ sudo nano /usr/lib/systemd/system/nmb.service
[Unit]
Description=Samba NMB Daemon
After=syslog.target network.target

[Service]
Environment=KRB5CCNAME=FILE:/run/samba/krb5cc_samba
Type=forking
NotifyAccess=all
PIDFile=/usr/local/samba/var/run/nmbd.pid
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/local/samba/sbin/nmbd $NMBDOPTIONS
ExecReload=/usr/bin/kill -HUP $MAINPID
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

sambaを起動する

sambaを起動します。

$ sudo systemctl daemon-reload

$ sudo systemctl start smb nmb
$ sudo systemctl status smb nmb

うまく起動できたら、自動起動するようにします。

$ sudo systemctl enable smb nmb
$ sudo systemctl is-enabled smb nmb

ファイアウォールにsambaを追加します。

$ sudo firewall-cmd --add-service=samba --permanent
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all

SELinuxにsambaが読み書きできるように設定します。

$ sudo setsebool -P samba_export_all_rw 1

これで、sambaを使ってファイルをサーバーに保存できるようになります。

Windows10からの場合は、エクスプローラのアドレスの窓にサーバーのアドレスを入力するとサーバーにアクセスできます。

Macからの場合は、Finderを起動して「移動」メニューの中の「サーバーへ接続」を選択します。

公開日

広告