渡邊です。
前回のに引き続きSamba環境の構築を行います。
前回記事 EC2にSambaを構築してWindowsからファイル共有してみた
http://recipe.kc-cloud.jp/archives/10873
今回は、EC2上に構築したSamba環境で複数ユーザが1つのフォルダを共有できるように設定します。
Samba設定変更
前回はkcsambaユーザのホームディレクトリ配下に共有フォルダを作成しましたが、
今回は複数ユーザで共有するために、/tmpディレクトリ配下に共有フォルダを作成しようと思います。
設定を変更する前にSambaサービスを停止しておきます。
1 2 |
$ sudo service smb stop Shutting down SMB services: [ OK ] |
共有フォルダへアクセス出来るユーザが属するグループを作成します。
今回はグループ名を「samba」とします。
1 |
$ sudo groupadd samba |
kcsambaユーザで/tmp配下に共有フォルダを作成します。
今回もフォルダ名を「samba」とします。
1 2 3 4 5 |
$ su kcsamba Password: $ cd /tmp $ mkdir samba $ exit |
kcsambaユーザをsambaグループに所属させます。
1 |
$ sudo usermod -aG samba kcsamba |
/tmp/sambaフォルダの所有グループをsambaグループにします。
1 |
$ sudo chgrp samba /tmp/samba |
/tmp/sambaフォルダにアクセス出来るユーザを「所有者(今回の場合、kcsambaユーザ)」と「所有グループに属するユーザ(今回の場合、sambaグループに属するユーザ)」のみに制限します。更に、/tmp/samba配下に作成されるファイルやディレクトリの所有グループが、/tmp/sambaから継承されるようにSGID(Set Group ID)を設定しておきます。
1 |
$ sudo chmod 2770 /tmp/samba |
Sambaの設定ファイルを開きます。
1 |
$ sudo vi /etc/samba/smb.conf |
Sambaの設定ファイルを下記のように変更します。
・pathの値を/tmp/sambaに変更
・共有フォルダ配下に作成されるファイルやディレクトリに親ディレクトリ(今回の場合、/tmp/samba)の権限設定を継承させるため「inherit permissions = yes」を追記
1 2 3 4 5 |
[kcsamba] comment = knowledgecommunication path = /tmp/samba writable = yes inherit permissions = yes |
Sambaユーザ追加
共有フォルダにアクセスする2ユーザを作成します。
今回はkcuser1とkcuser2とします。
sambaグループに所属させ、Sambaユーザに追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$ sudo useradd kcuser1 $ sudo passwd kcuser1 Changing password for user kcuser1. New password: Retype new password: passwd: all authentication tokens updated successfully. $ sudo useradd kcuser2 $ sudo passwd kcuser2 Changing password for user kcuser2. New password: Retype new password: passwd: all authentication tokens updated successfully. $ sudo usermod -aG samba kcuser1 $ sudo usermod -aG samba kcuser2 $ sudo smbpasswd -a kcuser1 New SMB password: Retype new SMB password: Added user kcuser1. $ sudo smbpasswd -a kcuser2 New SMB password: Retype new SMB password: Added user kcuser2. |
Sambaサービスを起動させます。
1 2 |
$ sudo service smb start Starting SMB services: [ OK ] |
動作確認
kcuser1とkcuser2の2ユーザが共有フォルダへアクセス出来るかどうか、動作を確認します。
まず、ローカルWindows PCから共有フォルダへkcuser1アカウントでアクセスします。
アクセス出来ました。空のテキストファイルを作成してみます。
テキストファイルの作成に成功しましたので、kcuser1に書き込み権限があることが確認出来ました。
同様にkcuser2アカウントで共有フォルダへアクセスします。
アクセス出来ました。空のテキストファイルを作成してみます。
テキストファイルの作成に成功しましたので、kcuser2にも書き込み権限があることが確認出来ました。
次に、kcuser1が作成したファイルをkcuser2が編集・保存出来るかどうか確認します。
kcuser1が作成したファイルをエディタで開きます。
空のファイルに追記して保存します。
ファイルを保存出来ました。
エクスプローラ上でもファイルサイズが増加したことが確認出来ます。
次に、kcuser2が作成したファイルをkcuser1が編集・保存出来るかどうか確認します。
kcuser1で再度ログインします。
kcuser2が作成したファイルをエディタで開きます。
空のファイルに追記して保存します。
ファイルを保存出来ました。
エクスプローラ上でもファイルサイズが増加したことが確認出来ます。
EC2インスタンスのコンソール上でファイルやディレクトリの権限設定を確認出来ます。
先程のテストで作成したテキストファイルの内容も確認出来ます。
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo ls -lh /tmp total 4.0K drwxrws--- 2 kcsamba samba 4.0K xxxxxx xx:xx samba $ sudo ls -lh /tmp/samba total 8.0K -rwxrw---- 1 kcuser1 samba 20 xxxxxx xx:xx test-kcuser1.txt -rwxrw---- 1 kcuser2 samba 20 xxxxxx xx:xx test-kcuser2.txt $ sudo cat /tmp/samba/test-kcuser1.txt kcuser2 samba test $ sudo cat /tmp/samba/test-kcuser2.txt kcuser1 samba test |
おわりに
以上、EC2インスタンス上にSambaを構築して、複数ユーザでフォルダを共有する手順をまとめました。
ユーザが自身で作成したファイルを編集・保存するだけであれば、前回と同様にユーザを追加するだけで実現出来ます。しかし、他のユーザが作成したファイルも編集・保存出来るようにするために、「SGID」や「権限の継承」の設定が必要になります。
Linuxはある程度扱えるつもりでいましたが、まだまだ奥が深く、今回の構築・設定でも得るものがありました。
最後までお読み頂きありがとうございました。