|
ネットワーク HDD ( NAS ) の動作を学ぶ目的で CentOS 7.4 で samba サーバを構築してみました。
CentOS 7.4 のインストールは、[ CentOS-7-x86_64-DVD.iso インストールとサーバ構築 ]
で紹介していますので詳細は、そちらを参照してください。
-----------------------------------------------------------------
ここでの samba サーバの設定条件
① アクセスユーザーの ID ・パスワード
ログイン ID : user1 , パスワード : samba-user1
ログイン ID : user2 , パスワード : samba-user2
② user1 がアクセスできるディレクトリ名を[ 共有1 ]とします。
user2 がアクセスできるディレクトリ名を[ 共有2 ]とします。
ゲストがアクセスできるディレクトリ名を[ 共有3 ]とします。
[ 共有1 ]は、ID : user1, パスワード : samba-user1 を入力してアクセスします。
[ 共有2 ]は、ID : user2, パスワード : samba-user2 を入力してアクセスします。
[ 共有3 ]は、認証無しでアクセスします。
※ 注意事項 ※
windows 側からは、複数のユーザー名でのアクセスは禁止されています。
この場合は、user1 か user2 のどちらかでアクセスします。ゲストの場合は、制限なしです。
-----------------------------------------------------------------
1. samba のパッケージのインストール
下記 yum コマンドで samba のパッケージをインストールします。
yum -y install samba
この結果、下記パッケージがインストールされます。
インストール:
samba.x86_64 0:4.6.2-11.el7_4
依存性関連をインストールしました:
pytalloc.x86_64 0:2.1.9-1.el7
samba-common-libs.x86_64 0:4.6.2-11.el7_4
samba-common-tools.x86_64 0:4.6.2-11.el7_4
samba-libs.x86_64 0:4.6.2-11.el7_4
2. samba 用のポートの解放
samba 様のポートは、137,138,139,445 を解放する必要があります。これは下記コマンドで行います。
firewall-cmd --permanent --add-service=samba;\
firewall-cmd --reload
ポートの解放を確認します。
iptables-save
Generated by iptables-save v1.4.21 on Mon Nov 20 09:06:39 2017
省略
-A IN_public_allow -p udp -m udp --dport 137 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p udp -m udp --dport 138 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 139 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 445 -m conntrack --ctstate NEW -j ACCEPT
〇 SELinux 有効( Enforcing )の時の設定
SELinux はデフォルトで下記の様に samba のポートは有効になっています。
semanage port -l| grep smb
smbd_port_t tcp 445, 137-139
このままでは、windows 側からフォルダ内が見えないので下記コマンドで外部からのフルアクセスを許可します。
samba 関連の初期状態の確認 : コマンド getsebool -a | grep samba で行います。
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off <---- 変更箇所は、ここです
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
設定値の変更は、下記コマンドで行います。
setsebool -P samba_export_all_rw 1
この設定の確認は、setsebool の設定確認コマンドで行います。
getsebool samba_export_all_rw
samba_export_all_rw --> on <--- ここが off から on になります
〇 上記の設定だけでは、FTP(FFFTP等) でフォルダ内が見られません。見られようにする
には、SELinux の ftp 関連の設定を変更します。 下記にその手順を紹介します。
ftp 関連の初期状態の確認 : コマンド getsebool -a | grep ftp で行います。
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off <---- 変更箇所は、ここです
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
設定値の変更は、下記コマンドで行います。
setsebool -P ftpd_full_access 1 <---- 1 or on
変更には、チョット時間(数秒)がかかります。
変更されたか確認します。
getsebool ftpd_full_access
ftpd_full_access --> on <---- デフォルト値 off が on になりました。
これで、FTP(FFFTP等) でフルアクセスできるようになり、ftp でのデータ転送
も受付されるようになりました。
但し、サーバ運用時は、フルアクセス禁止にしておく事を進めます。
3. samba サーバーアクセス用ユーザー作成
① ユーザー新規登録
useradd -m user1 <--- user1は、ユーザー名
このコマンドによって、ディレクトリ /home に /user1 のディレクトリが作成されます。
ディレクトリ /home/user1 は、FFFTP で展開できないので属性変更( 700 を 777 に変更 )します。
chmod 777 /home/user1
user2 も同様にして行います。
ゲストユーザーのディレクトリを /home に /guest で作成します。
mkdir /home/guest;\
chmod 777 /home/guest
② ①で登録済のユーザーをSambaサーバーアクセス用ユーザーとして新規登録、
合わせて認証用のパスワードの登録もします。
pdbedit -a user1 <--- user1は、ユーザー名
new password:samba-user1 <--- パスワード応答 samba-user1は、パスワード
retype new password:samba-user1 <--- パスワード応答(確認)
この結果下記の様に表示します。
Unix username: user1
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2080734789-460182111-626224244-1002
Primary Group SID: S-1-5-21-2080734789-460182111-626224244-513
Full Name:
( 中略 )
Workstations:
Munged dial:
Logon time: 0
Logoff time: 木, 07 2月 2036 00:06:39 JST
Kickoff time: 木, 07 2月 2036 00:06:39 JST
Password last set: 月, 20 11月 2017 13:24:48 JST
Password can change: 月, 20 11月 2017 13:24:48 JST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
4. samba の設定ファイル smb.conf の設定
下記コマンドで samba の設定ファイル smb.conf を上記条件で設定します。
vi /etc/samba/smb.conf
------------ ここから ------------------------------------------
[global]
unix charset = eucJP
dos charset = CP932
mangled names = no
vfs objects = catia
catia:mappings = 0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:\
0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6
server string = Samba-Server
workgroup = workgroup
security = user
passdb backend = tdbsam
hosts allow = 192.168.0.0/24
# %m : アクセスしてきた PC 名
log file = /var/log/samba/log.%m
max log size = 1
#guestユーザにマッピング
map to guest = Bad User
guest account = nobody
[共有 1]
comment = Home directory
path = /home/user1
# ここの認証ユーザー user1
valid users = user1
browsable = yes
printable = no
read only = No
writable = Yes
guest ok = no
create mode = 0666
directory mode = 0777
vfs objects = recycle
recycle:repository = .recycle
recycle:keeptree = no
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0
recycle:exclude = *.tmp ~$*
[共有 2]
comment = Public Files
path = /home/user2
# ここの認証ユーザー user2
valid users = user2
browsable = yes
printable = no
read only = No
writable = yes
guest ok = no
create mode = 0666
directory mode = 0777
vfs objects = recycle
recycle:repository = .recycle
recycle:keeptree = no
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0
recycle:exclude = *.tmp ~$*
#ここのディレクトリは、認証不要
[共有 3]
comment = Free Files
path = /home/guest
browseable = yes
writable = yes
guest ok = yes
create mask = 0666
directory mask = 0777
vfs objects = recycle
recycle:repository = .recycle
recycle:keeptree = no
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0
recycle:exclude = *.tmp ~$*
------------ ここまで ------------------------------------------------------
※※ 参考情報 [共有 1]を認証不要(ゲストユーザー用)に変更する設定例 ※※
[共有 1]
comment = Home directory
path = /home/user1 <--- ゲストユーザー用に変更 ex. path = /home/guest
# ここの認証ユーザー user1
valid users = user1 <--- コメントアウト
browsable = yes
printable = no
read only = No
writable = Yes
guest ok = no <--- no を yes に変更
create mode = 0666
directory mode = 0777
変更後は、samba を再起動します。
5. samba の起動
systemctl start smb nmb ← Samba起動 nmb起動
systemctl enable smb nmb ← Samba自動起動設定 nmb自動起動設定
なお、設定変更後の再起動は、systemctl restart smb でだけでOKです。
以上で windows 側から、samba サーバ機か見えるはずです。PC のネットワークを開い
てサーバ機のホスト名があるか確認してください。 無い時には、どこか間違いがあります。
サーバ機のホスト名が見えたらアイコンをダブルクリックして更にフォルダをクリック
してみてください。[ネットワーク情報の入力] でユーザー名とパスワードの入力が求
められます。後は、設定したユーザー名とパスワードでアクセスできるかを確認します。
ゲストユーザーフォルダは、クリックだけで開くことができます。
6. samba の設定ファイル smb.conf の設定項目の機能説明
[global]
unix charset = UTF-8 ← 追加(Linux側日本語文字コード)
dos charset = CP932 ← 追加(Windows側日本語文字コード)
mangled names = no ← 追加(長いファイル名の文字化け対処)
vfs objects = catia ← 追加(上記対処でファイルアクセス不可になる
一部文字の置換)
# 文字単位の マッピングを指定する。 (上記対処でファイルアクセス不可になる
一部文字の置換)
catia:mappings = 0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:\
0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6
server string = Miyasaka-Samba-Server ← コンピュータのコメントとして
表示される文字列
workgroup = workgroup ← Windowsのワークグループ名を指定
security = user ← ユーザー名とパスワードでローカル認証を行う設定
# ユーザー認証方式は[global]セクションのパラメータsecurity =で指定します。
# security = user ← ユーザー名とパスワードでローカル認証を行う設定
# security = share ← パスワードだけで認証を行う設定
# security = domain ← ドメインコントローラにより認証を行う設定
# security = server ← ほかのSMBサーバにより認証を行う設定
# security = ads ← AD(アクティブディレクトリ)ドメインのドメイン
コントローラで認証を行う設定
passdb backend = tdbsam ← TDB(Trivial DataBase)を使用する
hosts allow = 192.168.0.0/24 ← 追加(内部からのみアクセスできるようにする)
log file = /var/log/samba/log.%m ← ログデータの保存先 %m : アクセスしてきた PC 名
max log size = 1 ← ログファイルの最大サイズの指定 単位はキロバイト
#guest ok = yes で guestユーザを有効にする。
map to guest = Bad User
guest account = nobody
同一ユーザー名のアクセスフォルダを複数作成する時には、[homes] の名前と path を変更する事で実現できます。
ゲストユーザーフォルダとして設定する時には、guest ok = Yes とするだけでもOKです。
[homes] ← windows 側に表示するファイル名 日本語でもOKです。
comment = Home directory ← ファイルのコメント windows 側に表示する
path = /home/user1 ← ディレクトリ[homes]のパス指定
valid users = user1 ← ここの認証ユーザー指定 user1
browsable = yes ← ディレクトリ[homes]を windows 側に表示する
printable = no ← このセクションがプリンタ共有でない宣言
read only = No ← 読み取り専用ファイルとしない指定
writable = Yes ← ファイルへの書き込み許可の指定
guest ok = no ← no : guestユーザを無効にする。
yes : 認証無しでアクセスできます。但し、path
で指定するディレクトリをゲストユーザー
フォルダに変更と valid users をコメント
アウトしてください。
( 認証要以外のフォルダー ex root 等 )
create mode = 0666 ← 新規に作成するファイルのパーミッション(属性)
directory mode = 0777 ← ディレクトリのパーミッション(属性)
# 各ユーザー専用のごみ箱機能追加(ここから)
# ※ファイル削除時に自動的にごみ箱へ移動されるようにする
vfs objects = recycle ← ごみ箱の有効化
recycle:repository = .recycle ← ごみ箱のディレクトリ名(/home/ユーザ
ー名/.recycle)
recycle:keeptree = no ← ごみ箱へ移動時にディレクトリ構造を維持しない
recycle:versions = yes ← 同名のファイルがごみ箱にある場合に別名で移動
recycle:touch = no ← ごみ箱へ移動時にタイムスタンプを更新しない
recycle:maxsize = 0 ← ごみ箱へ移動するファイルのサイズ上限(0:無制限)
recycle:exclude = *.tmp ~$* ← ここで指定したファイルはごみ箱へ移動せず
に即削除する
--------------------------------------------------------------------------
7. samba ユーザー管理
① ユーザーの削除
ユーザーディレクトリ毎の削除は、オプション -r を付けます。
userdel -r 〇〇〇〇 <--- 〇〇〇〇は、ユーザ名
② samba ユーザーの削除
smbpasswd -x 〇〇〇〇 <--- 〇〇〇〇は、ユーザ名
samba ユーザ削除後、必要なければOSユーザーも削除して下さい。
ユーザを削除した場合、sambaを必ず再起動して下さい。
③ samba ユーザーの一覧表示
pdbedit -L
8. windows 側でのログイン情報を編集/消去する方法
ログイン情報を編集/消去する[ 資格情報マネージャ ]を表示する方法は、二通りあります。
方法 1
コマンドプロンプトで次のコマンドを実行すると、資格情報マネージャ(Windows)が起動する。
「ファイル名を指定して実行」で rundll32 keymgr.dll KRShowKeyMgr
と入力すると編集画面が表示されるので、対象のサーバーを選択して表示した中の[削除]をクリックする。
方法 2
[スタート] ---> [windowsシステムツール] ---> [コントロールパネル] --->>
[資格情報マネージャ] ---> [windows資格情報] の順にクリックし、windows資格情報欄の
該当欄をクリックし、表示した中の[削除]をクリックする。
※ 注意 ※ これで切断すると PC を再起動しないと再接続できなくなります。
|
|