Ubuntu配置Samba檔案分享權限設定伺服器,ubuntusamba
  Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟體,由伺服器及用戶端程式構成。SMB(Server Messages Block,資訊服務塊)是一種在區域網路上共用檔案和印表機的一種通訊協定,它為區域網路內的不同電腦之間提供檔案及印表機等資源的共用服務。
  環境:Win7_64位+VMware11+Ubuntu1204
  一,同其他網路服務一樣,使用Samba服務必須要保證伺服器與用戶端能夠連網,即能夠ping通,否則請先調試網路。
  二,如果使用的是Ubuntu1204以前的版本,建議先卸載samba,smbclient,samba-common。  
    1 sudo apt-get remove samba-common    2 sudo apt-get remove smbclient    3 sudo apt-get remove samba
    下載安裝Samba服務:
    1 sudo apt-get install samba    2 sudo apt-get install samba-common     3 sudo apt-get install smbfs       //在舊版的Ubuntu中,你可能需要使用 smbfs替代cifs-utils。     4 sudo apt-get install cifs-utils   //新版本 ubuntu1204已安裝
    註:如果在安裝samba過程中出現錯誤
        samba : Depends: libwbclient0 (= 2:3.6.3-2ubuntu2) but 2:3.6.3-2ubuntu2.3 is to be installed
      則卸載後重新安裝samba
        sudo apt-get remove libwbclient0 samba-common samba
        sudo apt-get install samba  //apt-get會自動補全依賴包
 
  三,建立共用目錄
    sudo mkdir /home/share
    sodu chmod 777 /home/share
 
  四,開始配置/etc/samba/smb.conf
   1. 儲存現有的設定檔
      sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
   2. 修改現設定檔
      sudo vi /etc/samba/smb.conf
   3. 在smb.conf最後添加
    [share]
        path = /home/share    #共用目錄絕對路徑
        available = yes     #共用資源可用
        browseable = yes      #共用目錄可瀏覽
        public = yes       #允許匿名使用者登入
        writable = yes      #共用目錄可寫
    【共用屬性詳解】
comment = 任一字元串
  說明:comment是對該共用的描述,可以是任一字元串。
path = 
共用目錄路徑  說明:path用來指定共用目錄的路徑。可以用%u、%m這樣的宏來代替路徑裡的unix使用者和客戶機的Netbios名,用宏表示主要用於[homes]共用域。例如:如果我們不打算用home段做為客戶的共用,而是在/home/share/下為每個Linux使用者以他的使用者名稱建個目錄,作為他的共用目錄,這樣path就可以寫成:path = /home/share/%u; 。使用者在串連到這共用時具體的路徑會被他的使用者名稱代替,要注意這個使用者名稱路徑一定要存在,否則,客戶機在訪問時會找不到網路路徑。同樣,如果我們不是以使用者來劃分目錄,而是以客戶機來劃分目錄,為網路上每台可以訪問samba的機器都各自建個以它的netbios名的路徑,作為不同機器的共用資源,就可以這樣寫:path = /home/share/%m 。
browseable = yes/no  說明:browseable用來指定該共用是否可以瀏覽。
writable = yes/no  說明:writable用來指定該共用路徑是否可寫。
available = yes/no  說明:available用來指定該共用資源是否可用。
admin users = 
該共用的管理者  說明:admin users用來指定該共用的管理員(對該共用具有完全控制許可權)。在samba 3.0中,如果使用者驗證方式設定成“security=share”時,此項無效。  例如:admin users =bobyuan,jane(多個使用者中間用逗號隔開)。
valid users = 
允許訪問該共用的使用者  說明:valid users用來指定允許訪問該共用資源的使用者。  例如:valid users = bobyuan,@bob,@tech(多個使用者或者組中間用逗號隔開,如果要加入一個組就用“@+組名”表示。)
invalid users = 
禁止訪問該共用的使用者  說明:invalid users用來指定不允許訪問該共用資源的使用者。  例如:invalid users = root,@bob(多個使用者或者組中間用逗號隔開。)
write list = 允許寫入該共用的使用者  說明:write list用來指定可以在該共用下寫入檔案的使用者。  例如:write list = bobyuan,@bob
public = yes/no  說明:public用來指定該共用是否允許guest賬戶訪問。
guest ok = yes/no  說明:意義同“public”。
 
    註:如果不習慣使用設定檔,也可以使用圖形介面
    安裝Ubuntu samba圖形管理介面
      sudo apt-get install system-config-samba
    啟動samba圖形管理介面
      sudo system-config-samba
  
  五. 建立samba帳戶
    sudo touch /etc/samba/smbpasswd
    sudo smbpasswd -a john
   然後會要求你輸入samba帳戶的密碼
   [如果沒有這一步,當你登入時會提示 session setup failed: NT_STATUS_LOGON_FAILURE]
   
    smbpasswd 命令的用法:
    smbpasswd -a 增加使用者(要增加的使用者必須以是系統使用者)   
    smbpasswd -d 凍結使用者,就是這個使用者不能在登入了   
    smbpasswd -e 恢複使用者,解凍使用者,讓凍結的使用者可以在使用   
    smbpasswd -n 把使用者的密碼設定成空,要在global中寫入 null passwords -true   
    smbpasswd -x  刪除使用者  
 
  六,配置完成後要重啟samba
      sudo /etc/init.d/smbd restart
 
  七,測試及使用
    測試:輸入smbclient -L //localhost/share
    使用:到windows在檔案夾處輸入 "\\" + "Ubuntu機器的ip或主機名稱" + "\\" + "share"
 
進階:使用者帳號映射
   samba的使用者帳號資訊是儲存在smbpasswd檔案中滴,而且可以訪問samba伺服器的帳號也必須對應一個同名的系統帳號。基於這 一點,所以,對於一些hacker來說,只要知道samba伺服器滴samba帳號,就等於是知道了Linux系統帳號,只要crack其samba帳號密碼加以利用就可以攻擊samba伺服器。所以我們要使用使用者帳號映射這個功能來解決這個問題。 
使用者帳號映射這個功能需要建立一個帳號映射關係表,裡面記錄了samba帳號和虛擬帳號的對應關係,用戶端訪問samba伺服器時就使用虛擬來登入。 
1)編輯主設定檔vi /etc/samba/smb.conf 
在global下添加一列欄位username map = /etc/samba/smbusers開啟使用者帳號映射功能。 
2)編輯 vi /etc/samba/smbusers 
smbusers檔案儲存帳號映射關係,其有固定滴格式: 
samba帳號 = 虛擬帳號(映射帳號) 
  myname = networkusername 
帳號myname就是我們上面建立的samba帳號(同時也是Linux系統帳號),networkusername就是映射的帳號名(虛擬帳號),帳號 myname在我們訪問共用目錄時只要輸入networkusername就可以成功訪問了,但是實際上訪問samba伺服器的還是我們的myname帳號,這樣一來就解決了安全問題。