Raspberry Pi 3にUSBメモリをマウントしたので、
今度はNAS化して他のPCからアクセスできるようにしたい。
■本日の目標
Raspberry Pi 3に差したUSBメモリをNAS化する。
■主な作業環境
・HW:Raspberry Pi 3 Model B
・OS:CentOS Linux release 7.3.1611 (Core)
・USBメモリ:64GB
・主にアクセスするPC(OS):Windows10 Pro 64bit
■今回のNAS構築要件
1.NASアクセス用ユーザを用意(ユーザ名:rpi-nas)
2.ローカルネットワーク内からのみアクセス
3.アクセス元端末はWindowsとAndroid
4.NASで公開するディレクトリは先日マウントしたUSBメモリ
5.プリンター共有は無し
ちなみにNASに使うのはこちら。
$ df -hT | grep usb /dev/sda1 ext4 58G 53M 55G 1% /mnt/usb-m1
■Sambaをインストール
・まずはSambaをインストールする。
$ yum info samba
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
利用可能なパッケージ
名前 : samba
アーキテクチャー : armv7hl
バージョン : 4.4.4
リリース : 12.el7
容量 : 583 k
リポジトリー : updates/7/armhfp
要約 : Server and Client software to interoperate with Windows machines
URL : http://www.samba.org/
ライセンス : GPLv3+ and LGPLv3+
説明 : Samba is the standard Windows interoperability suite of programs for Linux and
: Unix.
$ yum install samba
・・・(中略)・・・
完了しました!
・インストール後のサービス状態を確認する。
[root@WSTD-RPI3 /]# systemctl status smb ● smb.service - Samba SMB Daemon Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled) Active: inactive (dead)
■ユーザを追加
・Linuxアカウントの追加
グループの作成
$ groupadd -g 500 nas-user
ユーザアカウントの作成
$ useradd -g 500 rpi-nas
パスワード設定
$ passwd rpi-nas
ユーザとグループの紐付け
$ gpasswd -a rpi-nas nas-user ユーザ rpi-nas をグループ nas-user に追加
・Sambaアカウントの追加
ユーザアカウントの作成
$ pdbedit -a rpi-nas new password: retype new password:
作成したユーザの確認
(ユーザリスト)
$ pdbedit -L
(個別ユーザの詳細)
$ pdbedit -v rpi-nas
■Sambaの設定
・Sambaの設定ファイルを書き換える。
【変更前(初期状態)】
$ cat /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[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 = root
create mask = 0664
directory mask = 0775
【編集】
$ cp -p /etc/samba/smb.conf /etc/samba/smb.conf.`date "+%Y%m%d"` $ vi /etc/samba/smb.conf
【変更後】
$ cat /etc/samba/smb.conf ### Sambaの基本設定 ### [global] ## ユーザアクセス管理 # ユーザ認証方式 security = user # アクセスOKネットワーク hosts allow = 192.168. 127. # アクセスNGネットワーク hosts deny = ALL ## サーバ情報 # ワークグループ workgroup = WORKGROUP # NetBIOS名 netbios name = RSPI-NAS # Windows側の文字コード dos charset = CP932 # Linux側の文字コード unix charset = UTF-8 # 以下、Windows側のファイル設定 dos filemode = Yes dos filetimes = Yes dos filetime resolution = Yes # LinuxとSambaのパスワードを同期(次も同じ) unix password sync = Yes pam password change = Yes ## ログ設定 log file = /var/log/samba/%m.log max log size = 50 ### 共有ディレクトリ:USBメモリ ### [usb-m1] comment = USB Memory Directory # 公開パス path = /mnt/usb-m1 # ゲスト不可 guest ok = No # 共有表示 browseable = Yes # 読み取り専用 read only = no
設定ファイルの内容に誤りが無いかチェックする。
$ testparm /etc/samba/smb.conf
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[usb-m1]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
dos charset = CP932
netbios name = RSPI-NAS
log file = /var/log/samba/%m.log
max log size = 50
pam password change = Yes
security = USER
unix password sync = Yes
idmap config * : backend = tdb
dos filemode = Yes
dos filetime resolution = Yes
hosts allow = 192.168. 127.
hosts deny = ALL
[usb-m1]
comment = USB Memory Directory
path = /mnt/usb-m1
read only = No
■NAS公開ディレクトリの所有権を変更
・USBメモリをマウントしたディレクトリはrootで作っていたので、所有権を変えておく。
【変更前】
$ ll /mnt/ 合計 4 drwxrwxrwx. 12 root root 0 5月 9 22:31 nas drwxr-xr-x. 3 root root 4096 5月 7 19:50 usb-m1
【変更】
$ chown -R rpi-nas:nas-user /mnt/usb-m1/
【変更後】
$ ll /mnt/ 合計 4 drwxrwxrwx. 12 root root 0 5月 9 22:31 nas drwxr-xr-x. 3 rpi-nas nas-user 4096 5月 7 19:50 usb-m1
■ファイアウォール(firewalld)の設定 ※一時設定
・次はファイアウォールでSambaを許可する。
【設定前】
$ firewall-cmd --list-services dhcpv6-client ssh
【設定】
$ firewall-cmd --add-service samba success
【設定後】
$ firewall-cmd --list-services dhcpv6-client samba ssh
■Sambaの起動
・Sambaを起動する。$ systemctl start smb
$ systemctl status smb
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
Active: active (running) since 土 2017-05-13 13:17:37 JST; 6min ago
Main PID: 3505 (smbd)
Status: "smbd: ready to serve connections..."
CGroup: /system.slice/smb.service
tq3505 /usr/sbin/smbd
tq3506 /usr/sbin/smbd
tq3507 /usr/sbin/smbd
tq3508 /usr/sbin/smbd
mq3525 /usr/sbin/smbd
5月 13 13:17:35 WSTD-RPI3 systemd[1]: Starting Samba SMB Daemon...
5月 13 13:17:36 WSTD-RPI3 systemd[1]: smb.service: Supervising process 3505 which is not our child. We'll most likely not notice when it exits.
5月 13 13:17:37 WSTD-RPI3 smbd[3505]: [2017/05/13 13:17:37.973496, 0] ../lib/util/become_daemon.c:124(daemon_ready)
5月 13 13:17:37 WSTD-RPI3 smbd[3505]: STATUS=daemon 'smbd' finished starting up and ready to serve connections
5月 13 13:17:37 WSTD-RPI3 systemd[1]: Started Samba SMB Daemon.
・有効化して、自動起動にする。
$ systemctl enable smb Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
■NASアクセス確認(Windows)
・Windows(エクスプローラ)から確認してみる。
IP指定で・・・
資格情報が出てきたので、疎通は問題なし。
それでは、NAS用のユーザとパスワードを入力する。
NASディレクトリとして指定した「usb-m1」だけ出てきた。
アクセスも問題なし。
・次はNAS専用ユーザのアクセスや読み書き確認のため、コマンドプロンプトから確認する。
rootでアクセスできないことを確認する。
C:\>net use Y: \\192.168.1.100\usb-m1 XXXX /USER:root システム エラー 1326 が発生しました。 ユーザー名またはパスワードが正しくありません。
もちろんrpi-nasではアクセスできることを確認する。
C:\>net use Y: \\192.168.1.100\usb-m1 YYYY /USER:rpi-nas コマンドは正常に終了しました。
一応セッションも確認しておく。
C:\>net use 新しい接続は記憶されます。 ステータス ローカル名 リモート名 ネットワーク名 ------------------------------------------------------------------------------- OK Y: \\192.168.1.100\usb-m1 Microsoft Windows Network コマンドは正常に終了しました。
ドライブを移動する。
C:\>y: Y:\>
ファイルを書き込む。
Y:\>echo NASアクセステスト > Nasアクセスの確認.txt Y:\>dir ドライブ Y のボリューム ラベルは usb-m1 です ボリューム シリアル番号は E3F2-4B80 です Y:\ のディレクトリ 2017/05/13 14:27. 2017/05/07 19:39 .. 2017/05/13 14:27 22 Nasアクセスの確認.txt 2017/05/07 19:44 lost+found 1 個のファイル 22 バイト 3 個のディレクトリ 58,826,170,368 バイトの空き領域
ファイル内容を読み込む。
Y:\>type Nasアクセスの確認.txt NASアクセステスト
ファイルを削除する。
Y:\>del Nasアクセスの確認.txt Y:\>d
一通りの操作は確認できた。
■NASアクセス確認(Android)
・ネットワーク内をスキャンすると、Raspberry PiのNAS(192.168.1.100)が出てきた。
※ESファイルエクスプローラを使用
ユーザ・パスワードを入力する。
Androidからも問題なくアクセスできた。
■ファイアウォール(firewalld)の設定 ※永続化
・永続化しておき、再起動してもSambaが許可されるようにする。
$ firewall-cmd --add-service samba --permanent success
■SELinux(参考)
・SELinuxはファイルアクセスに影響を与えるようだが、
今回のRaspberry Pi 3に載せたCentOS7からでは、
特別な設定(SELinuxでSambaを許可したり、そもそもSELinuxを無効化したり)は不要だった。
参考までに現状を以下の通り。
【動作状況】
$ getenforce Permissive
【設定ファイル(初期状態)】
$ cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted






