系統為fedora2,初始僅安裝了development tools。
1、安裝
Samba server需要用到三個軟件包,即:samba服務器軟件包、samba-client (samba客戶端工具)、samba-common(通用工具和庫)。 由於我這個做實驗的fedora在安裝時只安裝了development tools,所以這裡會存 在一個軟件的依存關系,需要先安裝一個rpmdb的軟件包(rpmdb是解決軟件安裝儲 存關系的數據庫),才可以繼續安裝samba的軟件包。 插入第三張光盤,掛載,並cd到Fedora/RPMS路徑 ls | grep rpmdb 列出當前包括rpmdb的rpm包,即下面的rpmdb-fedora-2- 0.20040513.i386.rpm rpm -ivh rpmdb-fedora-2-0.20040513.i386.rpm /*這個軟件處在fedora的第三 張光盤Fedora/RPMS裡*/ rpm -ivh --aid samba*.rpm /*安裝samba軟件包,samba*.rpm處於fedora的第一 張光盤Fedora/RPMS裡,--aid是與前面安裝rpmdb一起對應使用的,初始安裝 samba軟件包時匆必需要*/ rpm -qa |grep samba /*用rpm查詢當前安裝了的包含samba的文件,-ql中的 q=query,a=all */ rpm -ql samba-3.0.3-5 rpm -ql samba-client-3.0.3-5 rpm -ql samba-common-3.0.3-5 /*檢查samba軟件包的內容,-ql中 q=query,l=list*/
2、介紹幾個常用的samba工具
smbtree 顯示局域網中的所有共享主機和目錄列表 smbclient 顯示/登錄局域網中的共享主機/目錄 用法:smbclient -L -N win2000 /*匿名登錄win2000這台機器,-N表示匿名,-L 表示對共享目錄的列表*/ smbclient //win2000/share -U username%password /*用username和password這 個smb用戶及口令登錄win2000這台機器下的一個share目錄,用這個工具登錄成功 後會出現smb: \>提示符,這裡提二個該狀態下的命令:put、get,跟unix/linux 下的ftp命令類似,注意的是put後必須跟二個參數,如: smb:\>put /root/install.log install.log,即不但指定上傳本地的某個文件,還需要指定 上傳到另一台機器的參數,這裡後面的install.log即是上傳到另一台機器時後的 名稱*/ smbmount //win2000/share /mnt -o username=username%password /*將遠程共 享目錄掛載到本地,注意完成後使用umount取消掛載*/
3、samba服務器的配置
samba服務器的配置文件是smb.conf,位於/etc/samba/smb.conf 大家得注意裡面的幾個常用改動參數,[global]裡的workgroup、security 下面來看一個samba配置文件裡如何設置一個share vi /etc/samba/smb.conf 在[gobal]裡進行一些修改 workgroup = workgroup security = share 然後按shift+g(vi下的用法,即到該文件的末尾)到達smb.conf文件的最後,新 建一個共享 [sharedocs] comment = share documents /*標注文檔類型*/ path = /usr/share/doc /*指定共享路徑*/ public = yes /*確定發布共享*/ 保存退出(這裡會用到vi的相關指令,大家可進行相關vi的使用方法),然後重 啟samba服務 service smb restart 用smbclient -L localhost進行samba服務器的測試。
4、samba用戶帳號
添加samba用戶,須添加一個系統帳號,然後再加入samba帳戶 useradd redhat /*增加redhat用戶*/ smbpasswd -a redhat /*直接為redhat帳戶添加smb服務密碼,-a參數為增加smb用 戶,-x為刪除smb用戶*/ 下面來看一個共享目錄設置有效用戶的例子。在/etc/samba/smb.conf中添加一個共享目錄:
[redhat]
comment = redhat 's files
path = /var/redhat
public = no
valid users = tom @redhat
/*設定有效用戶為tom或者是redhat組的用戶*/
保存退出,重啟smb服務 這裡有必要提到samba用戶帳戶映射這具概念,出於帳號安全考慮,為防止samba 用戶通過samba帳號來猜測系統用戶的信息,所以,就出現了 samba用戶映射,如 ,將上面的tom帳戶映射成其他的名稱,然後用其他的名稱如jack、rhood都可以 登錄,其權限及登錄密碼都與tom一樣。 實現帳戶映射的方法:先在/etc/samba/smb.conf中的帳戶映射服務打開,方法很 簡單,找到username map = /etc//samba/smbusers這一行,將其前面的;去掉即 可(linux中;表示關閉,#表示注釋,注意與freebsd中的#號概念區別開來),然 後修改/etc/samba/smbusers vi /etc/samba/smbusers 在裡面添加一行 tom = jack rhood 保存退出,重啟smb服務,然後就可以用jack及rhood登錄redhat共享目錄,其權 限及登錄密碼與tom完全一致。
5、samba服務器的權限設定
我們用一個samba的配置文件的例子來說明這個問題:
[redhat]
comment = redhat 's files
path = /var/redhat
public = no
valid = tom @redhat /*有效用戶*/
write list = tom @redhat /*具有寫權限的用戶*/
create mask = 0660
/*能夠創建文件的權限,這裡是660,即rw-rw----權限,即
屬主和同組人有可讀可寫權限*/
directory mask = 0660 /*對目錄的控制權限,這裡亦是660權限*/
[補充一下權限方面知識:r=讀,八進制中是4 w=寫,八進制代碼是2 x=執行,八 進制代碼是1,在上面的rw-rw----中,9個字符劃為三份,前三個字符為文件屬主 的權限(即rw-,可讀可寫),中間三個字符為同組人的權限(rw-,可讀可寫), 後面則是其他人的權限(---,不可讀不可寫不可執行),換成八進制,r+w+- =2+1+0=6 ,所以構成了mask = 0660 之類的格式,至於770,775之類的權限,大 家可以自行去想了。
6、舉例
場景:tom和jack為sales組的成員,rhood和joeys是技術部的成員,公司要求組 建samba服務器,每個人都有自己的samba帳戶,分別有sales組和tech二個組,各 組成員不得跨組訪問,不給成員分配shell 分析後的所需做的工作為:
1、為所有用戶建立samba帳號
2、建sales和tech二個組,並為組分配權限
3、為所有成員設定不分配shell
4、將各自的文件共享出來
操作:
groupadd sales /*建組sales*/
groupadd tech
useradd -g sales -s /bin/false tom
/*將tom加入sales組(-g sales),並不分
配shell權限(-s /bin/false) */
useradd -g sales -s /bin/false jack
smbpasswd -a tom
smbpasswd -a jack
useradd -g tech -s /bin/false rhood
useradd -g tech -s /bin/false joeys
smbpasswd -a rhood
smbpasswd -a joeys
mkdir /home/sales /home/tech /*分別為sales和tech建立目錄*/
chgrp sales /home/sales /*改變目錄的屬主*/
chgrp tech /home/tech
chmod 770 /home/sales /*改變目錄的權限,為rwxrwx---*/
chmod 770 /hoem/tech
chmod g+s /home/sales /*為目錄增加進程屬主,
這一操作是為了確保該目錄永
遠地屬於屬主*/
chmod g+s /home/tech
ls -ld /home/sales /home/tech /*查看目錄的權限*/
然後編輯samba的配置文件,將目錄共享出來
vi /etc/samba/smb.conf
先將[global]裡的security安全級別設為user
security = share
然後按shift+g到配置文件的末尾設置目錄的共享
[sales]
comment = sales
path = /home/sales
public = no
valid users = @sales
write list = @sales
create mask = 0770
directory mask = 0770
[tech]
comment = tech
path = /home/tech
public = no
valid users = @tech
write list = @tech
create mask = 0770
directory mask = 0770
保存退出,用tail -f /etc/samba/smb.conf來確認一下剛才修改的配置,確認正確,然後重啟smb服務。