Samba文件服務器用戶權限模型設計與實現

[分享]Samba 文件服務器用戶複雜權限模型設計和實現
在這個文件系統上,我們要讓所有用戶都有統一的路徑入口;在Windows文件瀏覽器中,我們要通過\\IP或域名\共享目錄名查看,而在Linux的Gnome文件瀏覽器中查看的方式是 smb://域名或ip地址/共享目錄名。而我們讓所有用戶都通過唯一的地址進入共享文件系統。
/linuxsir (注:Samba文件系統中共享目錄名)
	|
	|───/管理部 (管理部成員的家目錄)
	|                 |_______/sirmas01 (注:管理成員sirmas01的家目錄sirmas01)
	|                 |_______/sirmas02 (注:管理成員sirmas0202的家目錄sirmas02)
	|
	|─── /software  (注:軟件共享目錄,只有管理部成員或更高權限的管理員能管理)
	|
	|─── /公共文檔  (注:所有用戶都能查看的文檔,只有管理部用戶sirmas01和sirmas02有寫入權限,進行文檔管理)
	|─── /共享可寫  (注:所有用戶都能在此目錄下寫入文件,sir03或sir04用戶可以進行管理,或文件服務器管理員權限用戶進行管理)
	|─── /成員     (注:公司員工的家目錄存放地,每個成員在此目錄下都有自己的家目錄)
	|────|_______/sir03  (注:sir03用戶的家目錄) 
	|────|_______/sir04 (注:sir04用戶的家目錄)
我們先看個圖,以Windows下的文件系統管理器所看到的Samba文件系統爲例;根據上面目錄的規劃,我們看到的應該是這樣的目錄結構;
圖片點擊可在新窗口打開查看
3.2 文件示例的說明;
根據3.1 的文件系統結構的規則,我們來簡單說一下,這個文件系統要實現什麼功能;
1]所有用戶的統一登錄入口都是 linuxsir 目錄;
2]管理部目錄:管理部目錄下設sirmas01和sirmas02目錄。管理部成員sirmas01和sirmas02的私有目錄設置在 管理部目錄下的sirmas01和sirmas02的目錄中,並且siradm01和siradm02這兩個用戶的目錄是私有的,也就是說siradm01用戶能查看但不能寫入siradmin02所有的目錄siradm02。相反同理;管理部成員sirmas01和sirmas02用戶能管理 /software , /公共文檔 , /共享可寫, /成員 目錄;
3]software 目錄:這個目錄是存放軟件的倉庫,sirmas01用戶和sirmas02用戶擁有管理權,對任何用戶(包括匿名用戶)都有讀的權限;
4]公共文檔 目錄:這個目錄是存放公司公用文件的地方,比如各種制度和文檔模板之類的。sirmas01用戶和sirmas02用戶擁有管理權,對任何用戶(包括匿名用戶)都有讀的權限;
5]成員 目錄:成員目錄下有sir03和sir04目錄,sir03和sir04目錄,歸屬於公司員工sir03和sir04所有,並可以寫入。sir03的sir04用戶無權查看或寫入彼此的目錄;
6]共享可寫 目錄:共享可寫目錄,是讓所有成員都可寫入,但管理權在管理部成員手中;
這樣看來, 一個相對複雜的權限模型就構建起來了。而且條理也比較清晰。用戶統一入口也確立了。這樣在Samba配置文件也比較簡單了;
4、 用戶和權限說明;
siradm 總管理員,可以擁有Samba文件系統的共享目錄linuxsir的所有權限,包括刪除、寫入等操作……
sirmas01 管理員權限,可以除了不能操作sir02的私有目錄以外,其它都可操作,包括刪除、寫入、查看……
sirmas02 管理員權限,可以除了不能操作sir01的私有目錄以外,其它都可操作,包括刪除、寫入、查看……
sir03 普通用戶:除了能操作屬於自己的的私有目錄 [sir03] 目錄以外,在·[共享可寫]目錄下擁有寫入權,在 [software] , [公共文檔]下僅有查看權。對[管理部]目錄並沒有查看和寫入權;
sir04 普通用戶: 和sir03用戶類似;
5、 創建目錄、用戶、用戶組及設置權限;

5.1 創建目錄
root@SlackIBM:/home# mkdir -p /home/samba/管理部/sirmas01
root@SlackIBM:/home# mkdir -p /home/samba/管理部/sirmas02
root@SlackIBM:/home# mkdir /home/samba/software
root@SlackIBM:/home# mkdir /home/samba/共享可寫
root@SlackIBM:/home# mkdir /home/samba/公共文檔
root@SlackIBM:/home# mkdir -p /home/samba/成員/sir03
root@SlackIBM:/home# mkdir /home/samba/成員/sir04

5.2 創建用戶和用戶組;
root@SlackIBM:/home# groupadd siradm
root@SlackIBM:/home# groupadd sirmas
root@SlackIBM:/home# groupadd siruser
root@SlackIBM:/home# useradd -g siradm -G sirmas,siruser -d /home/samba -s /bin/false siradm
root@SlackIBM:/home# useradd -g sirmas -G sirmas,siruser -d /home/samba -s /bin/false sirmas01
root@SlackIBM:/home# useradd -g sirmas -G sirmas,siruser -d /home/samba -s /bin/false sirmas02
root@SlackIBM:/home# useradd -g siruser -d /home/samba -s /bin/false sir03
root@SlackIBM:/home# useradd -g siruser -d /home/samba -s /bin/false sir04

5.3 對相關目錄歸屬和權限;
root@SlackIBM:/home# ls -l |grep samba
drwxr-xr-x 5 root root 128 2007-07-13 14:54 samba
root@SlackIBM:/home# ls -l |grep samba
drwxr-xr-x 5 siradm siradm 128 2007-07-13 14:54 samba
root@SlackIBM:/home# cd /home/samba/
root@SlackIBM:/home/samba# ls -lh
總計 0
drwxr-xr-x 2 root root 48 2007-07-13 14:53 software
drwxr-xr-x 2 root root 48 2007-07-13 15:35 公共文檔
drwxr-xr-x 2 root root 48 2007-07-13 15:36 共享可寫
drwxr-xr-x 4 root root 96 2007-07-13 15:37 成員
drwxr-xr-x 4 root root 96 2007-07-13 15:36 管理部
root@SlackIBM:/home/samba# chown -R siradm:sirmas software 公共文檔 共享可寫 管理部
root@SlackIBM:/home/samba# chown -R siradm:siruser 成員
root@SlackIBM:/home/samba#chmod 1777 共享可寫
root@SlackIBM:/home/samba#chmod 775 software 公共文檔
root@SlackIBM:/home/samba#chmod 770 管理部 成員
root@SlackIBM:/home/samba# ls -lh
總計 0
drwxrwxr-x 2 siradm sirmas 48 2007-07-13 14:53 software
drwxrwxr-x 2 siradm sirmas 48 2007-07-13 15:35 公共文檔
drwxrwxrwt 2 siradm sirmas 48 2007-07-13 15:36 共享可寫
drwxrwx--- 4 siradm siruser 96 2007-07-13 15:37 成員
drwxrwx--- 4 siradm sirmas 96 2007-07-13 15:36 管理部
root@SlackIBM:/home/samba# cd 成員
root@SlackIBM:/home/samba/成員# chown sir03:sirmas sir03
 root@SlackIBM:/home/samba/成員# chown sir03:sirmas sir04
root@SlackIBM:/home/samba/成員# chmod 770 sir03 sir04
root@SlackIBM:/home/samba/成員# ls -lh
總計 0
drwxrwx--- 2 sir03 sirmas 48 2007-07-13 14:53 sir03
drwxrwx--- 2 sir04 sirmas 48 2007-07-13 14:53 sir04
root@SlackIBM:/home/samba/成員# cd ../管理部/
root@SlackIBM:/home/samba/管理部# ls
sirmas01 sirmas02
root@SlackIBM:/home/samba/管理部# ls -lh
總計 0
drwxr-xr-x 2 root root 48 2007-07-13 14:54 sirmas01
drwxr-xr-x 2 root root 48 2007-07-13 14:54 sirmas02
root@SlackIBM:/home/samba/管理部# chown sirmas01:sirmas sirmas01
root@SlackIBM:/home/samba/管理部# chown sirmas02:sirmas sirmas02
root@SlackIBM:/home/samba/管理部# ls -lh
總計 0
drwxr-xr-x 2 sirmas01 sirmas 48 2007-07-13 14:54 sirmas01
drwxr-xr-x 2 sirmas02 sirmas 48 2007-07-13 14:54 sirmas02

6、修改Samba的配置文件;
[global]
workgroup = sirgrp
netbios name = sirserver
server string = linuxsir File Server
hosts allow = 192.168.1. 192.168.2. 127. #注:允許192.168.1 和192.168.1.2及127網段的用戶可以訪問;可以改成自己的IP網段,
security = share
printcap name = cups
printcap name = cups
guest account = nobody
guest ok = yes
[linuxsir] #注:共享名
  comment = linuxsir samba server
  path = /home/samba #在Linux系統中,共享文件夾所在位置;
  create mask = 0664 #注:用戶創建文件時的以限;
  directory mask = 0775 #注:創建目錄時的權限;
  writeable = yes #注:可寫;
  valid users = @siradm,@sirmas,@siruser,nobody #注:用效用戶和用戶組,用戶和用戶組之間以,號隔開,用戶組前面要加@符號,nobody是匿名用戶;
  browseable = yes #注:是否可以瀏覽,是;
  guest ok = yes #注:匿名用戶是否可以訪問,是;
說明:#注是說明性的內容,使用本配置文件時,請刪除;

7、添加Samba 用戶;
root@SlackIBM:/home/samba# smbpasswd -a siradm
New SMB password:000000 注:在這裏輸入000000做爲密碼;
Retype new SMB password:000000 注:確認密碼;
Added user siradm
用同樣的辦法來添加sirmas01 、sirmas02 、sirmas03、sirmas04 用戶;修改Samba用戶的密碼用下面的辦法:
smbpasswd 用戶名
注意:smbpasswd 是用來設置Samba用戶的密碼的,並不是設置系統用戶密碼的。原理是sambapasswd 先讀取/etc/passwd 上的用戶,然後把這個用戶添加到Samba用戶配置文件中,在Slackware,是寫到/etc/samba/private/smbpasswd,Samba用戶的密碼也是寫在 /etc/samba/private/smbpasswd 並加密到 /etc/samba/private/secrets.tdb 。而系統用戶的密碼是存在/etc/shadow 文件中。好象這塊有點有暈,對嗎?這種方式創建的用戶,用的是系統帳號,Samba的用戶也是系統用戶,但密碼是分開的。
簡單的說,我們要設置Samba密碼,一定要先添加系統帳號,然後再用 smbpasswd 來添加並創建密碼。當我們要修改Samba密碼,也是要通過smbpasswd。
如果我們想修改系統用戶的密碼呢?要用passwd 工具;
8、啓動Samba 文件服務器;
root@SlackIBM:/home/samba# pkill smbd
root@SlackIBM:/home/samba# pkill nmbd
root@SlackIBM:/home/samba# /usr/sbin/smbd
root@SlackIBM:/home/samba#/usr/sbin/nmbd

9、掛載Samba文件系統,並測試文件系統的可靠性;

9.1 訪問Samba文件系統;
root@SlackIBM:/home/samba# pkill smbd
root@SlackIBM:/home/samba# pkill nmbd
root@SlackIBM:/home/samba# /usr/sbin/smbd
root@SlackIBM:/home/samba#/usr/sbin/nmbd

9、掛載Samba文件系統,並測試文件系統的可靠性;

9.1 訪問Samba文件系統;
如果是匿名訪問,並不喜歡登錄名,也能向共享可寫目錄中寫入文件;在Windows下匿名訪問文件系統的辦法是:
\\ip或域名\共享名
因爲我們在這裏設置的共享名是 linuxsir ,而我寫本文時所用的機器的IP地址是 192.168.1.19 ,於是在Windows中匿名訪問,應該IE瀏覽器的地址欄中輸入
\\192.168.1.19\linuxsir
注:在Linux系統中,如果你用GNOME桌面環境,應該用nautilus-connect-server,在終端下打命令就能調出“連接服務器”,服務器類型選Windows共享,文件夾輸入linuxsir,用戶名處輸入用戶名,無論你輸入什麼樣的用戶,都不會提示密碼驗證,這是GNOME文件管理器的一個BUG。爲了解決這個問題,就得把匿名用戶訪問屏掉,創建一個公共帳號,比如sirall用戶,密碼也是sirall。當然這樣無論是在Windows還是在Linux下,都無法匿名訪問了。如果沒有分配給帳號的公司成員,只能用sirall用戶來訪問。在KDE下可能不存在這樣的問題,試試再說,我沒有KDE,這事也不敢說。
禁止匿名用戶訪問,要修改smb.conf ,一般位於/etc/samba/smb.conf ;在前面的配置文件中,有下面的一行;
 valid users = @siradm,@sirmas,@siruser,nobody
改爲
 valid users = @siradm,@sirmas,@siruser

0

收藏

zhxt298

33篇文章,9W+人氣,0粉絲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章