豚吐露@wiki

共有フォルダでアクセス権の無いファイルを見せたくない

最終更新:

ohden

- view
管理者のみ編集可

共有フォルダでアクセス権の無いファイルを見せたくない

Ubuntu10.04LTS Desktop
Samba 3.4.7


sambaの共有設定で『hide unreadable』ってのを使う。
この項目をYesにしておくと、アクセス権の無いfileが表示されなくなる。

e.g.)shareって名前にしてみる。
$ sudo mkdir /var/samba/share
$ sudo chmod 777 /var/samba/share
$ sudo vi /etc/samba/smb.conf
末尾に追加。
  1. [share]
  2. comment = Public Stuff
  3. path = /var/samba/share
  4. browseable = yes
  5. public = yes
  6. create mode = 660
  7. directory mode = 770
  8. writeable = true
  9. hide unreadable = yes
  10.  
チェック。
$ /usr/local/samba/bin/testparm /etc/samba/smb.conf
samba再起動。
$ sudo killall smbd
$ sudo killall nmbd
$ sudo /usr/local/samba/sbin/smbd -D
$ sudo /usr/local/samba/sbin/nmbd -D
で、この子をmountする。
とりあえず、説明のためのユーザとして3人登場させてみる。それぞれのパスワードも以下のものとし、smbpasswdで設定済みとする。
username password
A user_a pass_a
B user_b pass_b
X user_x pass_x
で、A、Bのumaskを変更する。
$ umask 027
これで新規作成されるfileやdirで、Otherの読み、書き、実行権限が無くなる。
※恒久的にやりたかったら『/etc/profile』の記述をいじる。file末尾にumaskが書かれてるハズ。

で、前準備。
$ sudo mkdir /home/user_a/mnt
$ sudo mkdir /home/user_b/mnt
$ sudo mkdir /home/user_x/mnt
$ sudo chown user_a:user_a /home/user_a/mnt
$ sudo chown user_b:user_b /home/user_b/mnt
$ sudo chown user_x:user_x /home/user_x/mnt
いざmount。
あ、一応、samba立てた鯖のipは『192.168.1.100』という設定で。
$ sudo mount -t cifs -o user=user_a,password=pass_a //192.168.1.100/share /home/user_a/mnt
$ sudo mount -t cifs -o user=user_b,password=pass_b //192.168.1.100/share /home/user_b/mnt
$ sudo mount -t cifs -o user=user_x,password=pass_x //192.168.1.100/share /home/user_x/mnt
で、動きを確かめてみる。
Aでloginしてmntにfile作成。
$ cd mnt
$ touch A
Bでloginしてmntにfile作成。
$ cd mnt
$ touch B
Aでls。
合計 0
-rw-r----- 1 user_a user_a 0 2011-11-09 21:14 A
Bでls。
合計 0
-rw-r----- 1 user_b user_b 0 2011-11-09 21:15 B
それぞれ同じ『//localhost/share』をmountしているが、見えない。
で、『/var/samba/share』の中身を見てみると...ちゃんと中には2fileある。
合計 0
-rw-r----- 1 user_a user_a 0 2011-11-09 21:14 user_a
-rw-r----- 1 user_b user_b 0 2011-11-09 21:15 user_b
で、A、Bはお互いのfileが見えなくなって万々歳なんだけど、実は両方のfileが見えなきゃいけない監督者のXさんが居たとする。
そんな時は、XさんをAさん、Bさんのプライマリグループに所属させる。
$ sudo vi /etc/group
どっかにAとBのプライマリグループがあるので、そいつにuser_xを追加する。
user_a:x:1007:user_x
user_b:x:1008:user_x
user_x:x:1009:
$ id user_x
uid=1008(user_x) gid=1009(user_x) 所属グループ=1009(user_x),4(adm),20(dialout),21(fax),24(cdrom),25(floppy),26(tape),30(dip),44(video),46(plugdev),104(fuse),121(nopasswdlogin),1007(user_a),1008(user_b)
で、再起動せんでもgroup変更反映されるんじゃが、sambaの方は上手いこと動かんかった。
group変更してからmountすればえぇんかな?めんどくさかったんでOS再起動したらちゃんと動いてるの確認できたが...
Xでloginして確認。
$ cd mnt
$ ll
合計 0
-rw-r----- 1 user_a user_a 0 2011-11-09 21:14 A
-rw-r----- 1 user_b user_b 0 2011-11-09 21:21 B
両方のfileが見えてる。(*´ω`)b

あと、起動時に自動mountさせたかったらこんな感じ。
$ sudo vi /etc/fstab
末尾に以下を追加。
  1. //192.168.1.100/share /home/user_a/mnt smbfs user=user_a,password=pass_a 0 0
  2. //192.168.1.100/share /home/user_b/mnt smbfs user=user_b,password=pass_b 0 0
  3. //192.168.1.100/share /home/user_x/mnt smbfs user=user_x,password=pass_x 0 0
  4.  
※fedora15じゃ、自動mountしてくれんかった。タイプをsmbfsからcifsに変えたらmountしてくれた。



更新日: 2011年11月18日 (金) 09時13分13秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー