CentOS7にsamba 4.8をインストールする
ファイルサーバーを立てようと思い立って、PCにCentOS7とsamba4.8をインストールしました。yumで入れれば簡単なのですが、ちょっと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を起動して「移動」メニューの中の「サーバーへ接続」を選択します。
公開日
広告
設定カテゴリの投稿
- Apache2.4で行ったセキュリティ関係の設定
- CentOS7にgitをインストールする
- CentOS7にsamba 4.8をインストールする
- CentOS7のApacheでDjangoを動かしてみた
- Gitでバージョン管理をしてみた
- LogWatchでログを確認する
- Python3のCGIで日本語を出力する
- Raspberry Piにgitをインストールする
- サイトマップを作る
- プログラムのCPU使用を制限する
- 仮想マシンにCentOS7をインストールしてApache2.4とDjango2.0をセットアップする
- 仮想マシンのCentOS7にLaTeXとGhostScriptとImageMagickをインストール
- 自宅サーバーのGitをリモートリポジトリにする