忍者ブログ

ブランクがあるインフラエンジニアの備忘録

サーバ構築のメモ

SAMBA構築⑤ Sambaの応用:ファイルサーバー

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

SAMBA構築⑤ Sambaの応用:ファイルサーバー

◆ファイル共有の基本
⑴単にファイル共有するだけの場合。
# vi /etc/samba/smb.conf

[share1]
        path = /var/lib/samba/shares/share1
        read only = No   #或いは「writeable = yes」も同じ
;EOF

# chmod 1777 /var/lib/samba/shares/share1
# echo test > /var/lib/samba/shares/share1/test.txt
# systemctl restart smb.service

 この場合、Windowsクライアントからアクセスすると以下の様になる。





⑵共有一覧における表示制限
# vi /etc/samba/smb.conf

[share1-2]
 path = /var/lib/samba/shares/share1
 comment = %S on %L      #共有名とNetBIOS名をコメントに表示。
[share1-3]
 path = /var/lib/samba/shares/share1
 browseable = no
[share1-4$]
 path = /var/lib/samba/shares/share1
;EOF

# systemctl restart smb.service

この場合、Windowsクライアントからアクセスすると以下の様になる。


 share1-3は「browseable = no」、share1-4$は「$」で隠し共有となっている為表示されません。
 上記表示を詳細に変えると以下になります。

 share1-2はcommentパラメータを設定している為、コメントが表示され、それはSamba変数も使用可能です。

⑶複数用のファイル共有
# vi /etc/samba/smb.conf
[shared]
 path = /var/lib/samba/shares/shared
 hosts allow = 10.0.1.0/255.255.255.0
 writeable = no
 write list = @project1
 valid users = @project1 @users
 writeable = yes
 force group = project1    #所有グループは必ずproject1になる
 force create mode = 664   #ディレクトリ内に新規に作成されるファイルは必ず644
 force directory mode = 775  #ディレクトリ内に新規に作成されるディレクトリは必ず775
;EOF

# mkdir -p /var/lib/samba/shares/shared
# groupadd project1
# chgrp project1 /var/lib/samba/shares/shared
# chmod g+w /var/lib/samba/shares/shared
# ls -l /var/lib/samba/shares | grep -i shared
drwxrwxr-x 2 root project1  6 10月  8 18:04 shared


 複数ユーザー用のファイル共有において、
①ファイル(ディレクトリ)へのアクセス、作成、編集時に適用される所有グループが常に一定になる。
②作成、編集したファイル(ディレクトリ)に対して常に所有グループの書き込み権が設定される。
という設定を行います。
 ①の設定を行うにはforce groupというパラメータがあり、このパラメータによりファイル共有内ファイルやディレクトリへのアクセス、作成、編成時に強制的に適用される所有グループを指定できます。

 ②の設定を行うにはforce create mode と force directory mode パラメータを使用します。両パラメータにより、ファイル共有内に新規に作成するファイルやディレクトリに特定のパーミッションを強制的に設定することが出来ます。

⑷最低限の複数ユーザー用ファイル共有の設定
# vi /etc/samba/smb.conf

[global]
#文字コード関連の設定
 dos charset = CP932

# ホームディレクトリの共有設定
[home]
 browseable = no
 writeable = yes

# 複数ユーザー用のファイル共有設定
[shared]
 path = /var/lib/samba/shares/shared
 writeable = yes
 force group = project1     #ファイルやディレクトリ作成時のグループはproject1になる。
 force create mode = 664    #create mask = 664 と同じ
 force directory mode = 775   #directory mask = 775 と同じ

;EOF

# useradd user1
# pdbedit -a user1
# useradd user2
# pdbedit -a user2
# systemctl restart smb.service

続いてWindowsクライアントからuser1でSAMBAサーバーの共有フォルダにアクセスします。

(前回共有フォルダへログオンしたユーザーのアクセスした情報が残っておりユーザー変更出来ない?

具体的には

# smbstatus
Samba version 4.19.4
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing
----------------------------------------------------------------------------------------------------------------------------------------
2109    testuser1    testuser1    10.0.1.1 (ipv4:10.0.1.1:63781)            SMB3_11           -                    partial(AES-128-CMAC)
Service      pid     Machine       Connected at                     Encryption   Signing
---------------------------------------------------------------------------------------------
No locked files

# smbcontrol 2109 close-share shared  #←smbcontrol <dest> close-share <sharename>なので

これでセッション切断できなかった
smbstutsを確認しながら何回か試す。

# smbstatus
Samba version 4.19.4
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing
----------------------------------------------------------------------------------------------------------------------------------------
Service      pid     Machine       Connected at                     Encryption   Signing
---------------------------------------------------------------------------------------------
No locked files

これでもログオン情報を覚えているのでWindowsクライアントから
net use \\10.0.1.12\ /USER:user

これでもダメだった

暫く経つとセッションアウトになってた……。仮想マシンとPC両方シャットダウンすれば情報は消えた。)


user1でWindowsクライアントからsharedフォルダへアクセスし、user1フォルダを作成します。

作成したuser1フォルダ内にuser1.txtを作成します。




続いてuser2でSambaサーバーのsharedフォルダにアクセス出来ることを確認し(仮想マシンとPCシャットダウンしてから?)
user1.txtが編集出来ることを確認します。

user1フォルダの中でuser2フォルダを作成出来ることを確認し
 
user2フォルダの中でuser2.txtを作成出来ることを確認します。


これをUnixサーバー側から確認すると以下のようになります。
# ls -lR /var/lib/samba/shares/shared/
/var/lib/samba/shares/shared/:
合計 0
drwxrwxr-x 3 user1 project1 36 10月  9 01:24 user1
/var/lib/samba/shares/shared/user1:
合計 4
-rwxrw-r-- 1 user1 project1  5 10月  9 01:18 user1.txt
drwxrwxr-x 2 user2 project1 23 10月  9 01:28 user2
/var/lib/samba/shares/shared/user1/user2:
合計 0
-rwxrw-r-- 1 user2 project1 0 10月  9 01:28 user2.txt

 先程定義した通り、全てのファイル、ディレクトリの所有グループがproject1になっており、書き込み権が設定されていることが確認出来ます。

⑸共有単位のアクセス制御
◆一部のIPアドレスからアクセスのみ許可する。
・ネットワークアドレス(x.x.x.x)/サブネットマスク(x.x.x.x)
・x.x.x.x(特定ホストを指定する場合)

〇設定例
hosts allow = 192.168.1.0/255.255.255.0 192.168.10.1

・hosts allowパラメータ:複数の条件を列挙して指定できる。
 また、EXCEPTというキーワードを設定することで、192.168.1.0/24の範囲のIPアドレスからのアクセスを原則許可するが、192.168.1.1からのアクセスは例外として拒否するといった要件を実現出来る。以下設定例。

hosts allow = 192.168.1.0/255.255.255.0 EXCEPT 192.168.1.1

 hosts deny パラメータも文法は同じ。hosts allowとhosts denyの両方から指定されたIPアドレスはアクセス拒否されます。

⑹ファイル共有にアクセス可能なグループを制御する
 valid usersパラメータにより、共有アクセス可能なユーザーの制限が出来ます。
 以下、共有アクセス可能なユーザーを、test1、project1グループのメンバー、usersグループのメンバーに限定する設定。

 vaild users = @project1 +users test1  #グループ名を指定する場合は名前の前に「+」か「@」

 逆に拒否するパラメータは、Invalid usersで、このパラメータで設定されたユーザーやグループは例え vaild usersが設定されていてもアクセス拒否されます。


⑺一部のユーザー、グループに対してのみ書き込みを許可する。
 write listパラメータにより、一部のユーザーやグループのみ書き込みを許可するファイル共有を作成することも出来ます。

 writeable = no
 write list = test1 @project1   #valid usersパラメータと同じ。

 writeable = noとwrite listを設定することでユーザーtest1及びproject1グループは書き込み。それ以外のユーザーは読み込みのみ可能となります。

⑺複雑なアクセス制御
 writeable = no
 write list = @project1
 valid users = @project1 @users

 上記の設定でvalid usersにより共有フォルダへアクセス出来るのはproject1とusersグループのメンバーに制限されています。さらに「writeable = no」の設定とwrite listパラメータによりproject1メンバーのみ書き込み可能になっており、次の様なアクセス制御が実現されています。

・project1グループのメンバー:書き込み
・usersグループのメンバー:読み込み
・その他のメンバー:アクセス拒否

⑻ホームディレクトリの一括共有
 homeセクション設定により、各ユーザーのホームディレクトリを一括で共有可能。Sambaサーバーにアクセスすると自分のホームディレクトリが自分のユーザー名の共有として、自動的に共有一覧に表示されます。
 典型的なhomesセクションの設定例は以下になります。

[homes]
 browseable = no #homesセクションでは必ず設定。しても自分のホームディレクトリは表示
 writeable = yes  #自分のホームディレクトリに書き込みする為通常はyes
 valid users = %S #共有名の変数。共有名がユーザー名になるので、例えばuser1がアクセスすると、valid users = user1 になるので、結果自分以外のホームディレクトリへのアクセスが禁止になる。

例題
問題集72~75頁 問1~6,8
Linuxファイルシステムと共有/サービスのパーミッション - Linux技術者認定 LinuC | LPI-Japan
Linuxファイルシステムと共有/サービスのパーミッション - Linux技術者認定 LinuC | LPI-Japan
Linuxファイルシステムと共有/サービスのパーミッション - Linux技術者認定 LinuC | LPI-Japan
Linuxファイルシステムと共有/サービスのパーミッション - Linux技術者認定 LinuC | LPI-Japan
ユーザアカウントとグループアカウントの管理 - Linux技術者認定 LinuC | LPI-Japan
Sambaを設定する - Linux技術者認定 LinuC | LPI-Japan
PR

コメント

プロフィール

HN:
のらくら
性別:
非公開
自己紹介:
介護と自身の手術でブランクが出来たインフラエンジニアの学習メモ。VirtualBOXで仮想サーバーを建て、GNS3でCiscoルーター&スイッチによるネットワークのエミュレーションもしています。GNS3ネットワーク内に仮想サーバーと連携させて、実際のネットワーク環境におけるサーバーをシミュレートする他、LinuC level3 300の対策もしています。

P R