匿名無須互動輸入使用者名稱和密碼的samba配置方法(security = user)

來源:互聯網
上載者:User

NAS(Network Attached Storage),網路附加儲存需要支援NFS(Network File System)和CIFS(Common Internet File Sysem)一種或兩種檔案分享權限設定訪問協議。NAS的配置方法相對都比較簡單,這方面的資料很多,後面附錄了NFS和CIFS的配置參數介紹。這裡主要解決一個在配置CIFS的遇到的問題。

 

CIFS需求
:Security = User,即使用者需要登入認證才能訪問共用資源。但是,需要匿名使用者可以直接存取,但是許可權與認證使用者有所不同,可能唯讀。這種模式應該如何配置呢?

 

當Security = Share模式時,所有使用者都不需要登入認證就可以訪問共用資源。查閱的配置方式大多都是使用這種方式,並結合檔案系統本身的存取控制方式來實現。而針對Security = User模式下的配置方式提及很少,經過多次實驗,我成功實現了這種配置方式。smb.conf配置如下:

[global]
    server string = Samba Server Version %v
    passdb backend = tdbsam
    cups options = raw
    security = user                            //認證模式為User
    map to guest = bad user            //這個很關鍵,實現匿名無須互動輸入使用者名稱和密碼就靠它了

    guest account = guest               //匿名使用者映射為guest使用者

 

[myshare]
    comment = My share
    path = /home/public                       //共用路徑
    browseable = Yes                          //可以被瀏覽,就是在近端分享中能看到共用名稱
    read only = No                               //可讀寫
    guest ok = Yes                               //允許匿名訪問,這個也需要設定,否則匿名無法訪問

    valid users = samba liuag guest    //有效使用者和組
    invalid users = liuben                     //無效使用者和組   
    read list = samba                           //唯讀使用者和組(如果read only = No,唯讀使用者需要在此設定)
    write list = liuag                             //可讀寫使用者和組(如果read only = Yes,可讀寫使用者需要在此設定)
    allow hosts = 192.168.100.236     //允許訪問主機列表,支援萬用字元
    deny hosts = 192.168.100.0/24    //禁止訪問主機列表,支援萬用字元

 

經過這種配置,匿名使用者直接可以訪問共用資源,而無需互動輸入使用者名稱和密碼。上面配置,匿名使用者是唯讀,如果需要匿名使用者可讀寫,把guest使用者加入write list即可。另外實驗還得出如下結論:如果guest使用者同時加入read list和write list,那麼guest使用者是可讀寫的;如果guest使用者同時加入valid users和invalid users,那麼guest是有效;如果一個主機同時加入allow hosts和deny hosts,那麼主機是允許訪問的。檔案系統目錄的許可權控制影響到共用存取權限,實際配置中samba和系統本身都要考慮到。

 

附錄

[常見的CIFS共用設定項目
]

[MyShare]
  comment = grind’s file
  path = /home/grind
  allow hosts = host(subnet)
  deny hosts = host(subnet)
  writable = yes|no
  user = user(@group)
  valid users = user(@group)
  invalid users = user(@group)
  read list = user(@group)
  write list = user(@group)
  admin list = user(@group)
  public = yes|no
  hide dot files = yes|no
  create mode = 0755
  directory mode = 0755
  sync always = yes|no
  short preserve case = yes|no
  preserve case = yes|no
  case sensitive = yes|no
  mangle case = yes|no
  default case = upper|lower
  force user = grind
  wide links = yes|no
  max connections = 100
  delete readonly = yes|no

  其中[]裡面的MyShare指定共用名稱,一般就是近端分享裡面可以看見的檔案夾的名字。

  comment指的是對改共用的備忘。
  path指定共用的路徑,其中可以配合samba變數使用。比如你可以指定path=/data/%m,這樣如果一台機器的NETBIOS名字是 grind,它訪問MyShare這個共用的時候就是進入/data/grind目錄,而對於NETBIOS名是glass的機器,則進入/data /glass目錄。
  allow hosts和deny hosts和前面的全域設定的方法一樣這裡不再提及。
  writeable指定了這個目錄預設是否可寫,也可以用readonly = no來設定可寫。
  user設定所有可能使用該共用資源的使用者,也可以用@group代表group這個組的所有成員,不同的項目之間用空格或者逗號隔開。
  valid users指定能夠使用該共用資源的使用者和組。
  invalid users指定不能夠使用該共用資源的使用者和組。
  read list 指定只能讀取該共用資源的使用者和組。
  write list指定能讀取和寫該共用資源的使用者和組。
  admin list指定能管理該共用資源(包括讀寫和許可權賦予等)的使用者和組。
  public指明該共用資源是否能給遊客帳號訪問,這個開關有時候也叫guest ok,所以有的設定檔中出現guest ok = yes其實和public = yes是一樣的。
  hide dot files指明是不是像unix那樣隱藏以“.”號開頭的檔案。
  create mode指明建立立的檔案的屬性,一般是0755。
  directory mode指明建立立的目錄的屬性,一般是0755。
  sync always指明對該共用資源進行寫操作後是否進行同步操作。
  short preserve case指明不管檔案名稱大小寫。
  preserve case指明保持大小寫。
  case sensitive指明是否對大小寫敏感,一般選no,不然可能引起錯誤。
  mangle case指明混合大小寫。
  default case指明預設的檔案名稱是全部大寫還是小寫。
  force user強制把建立檔案的屬主是誰。如果我有一個目錄,讓guest可以寫,那麼guest就可以刪除,如果我用force user= grind強制建立檔案的屬主是grind,同時限制create mask = 0755,這樣guest就不能刪除了。
  wide links指明是否允許共用外符號串連,比如共用資源裡面有個串連指向非共用資源裡面的檔案或者目錄,如果設定wide links = no將使該串連不可用。
  max connections = n設定同時串連數是n。
  delete readonly指明能否刪除共用資源裡面已經被定義為唯讀檔案。

 

[NFS共用的常用配置參數
]

共用的NFS目錄在/etc/exports中列出,這個檔案控制對目錄的共用。書寫規則是:(每個共用規則一行)

共用目錄 主機(參數)

例如:/mnt/cdrom *.abc.com(ro,sync) master.abc.com(rw,sync)

上面的規則代表將/mnt/cdrom目錄以唯讀同步方式共用給*.abc.com域,並且以讀寫同步方式共用給master.abc.com主機。任何共用目錄都要指定sync或async,也就是指定檔案寫入磁碟之前共用NFS目錄是否響應命令。

下面是一些NFS共用的常用參數:
ro:唯讀訪問
rw:讀寫訪問
sync:所有資料在請求時寫入共用
async:NFS在寫入資料前可以相應請求
secure:NFS通過1024以下的安全TCP/IP連接埠發送
insecure:NFS通過1024以上的連接埠發送
wdelay:如果多個使用者要寫入NFS目錄,則歸組寫入(預設)
no_wdelay:如果多個使用者要寫入NFS目錄,則立即寫入,當使用async時,無需此設定。
hide:在NFS共用目錄中不共用其子目錄
no_hide:共用NFS目錄的子目錄
subtree_check:如果共用/usr/bin之類的子目錄時,強制NFS檢查父目錄的許可權(預設)
no_subtree_check:和上面相對,不檢查父目錄許可權
all_squash:共用檔案的UID和GID映射匿名使用者anonymous,適合公用目錄。
no_all_squash:保留共用檔案的UID和GID(預設)
root_squash:root使用者的所有請求映射成如anonymous使用者一樣的許可權(預設)
no_root_squas:root使用者具有根目錄的完全管理存取權限
anonuid=xxx:指定NFS伺服器/etc/passwd檔案中匿名使用者的UID
anongid=xxx:指定NFS伺服器/etc/passwd檔案中匿名使用者的GID

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.