配置Samba服務

Samba有圖形化界面和命令行模式下配置.

 

添加samba用戶

簡潔版
先添加系統用戶

useradd name -s /sbin/nologin

再轉入samba用戶

smbpasswd -a name

 

17.2. 配置 Samba 服務器

默認的配置文件(/etc/samba/smb.conf)允許用戶作爲 Samba 共享來查看他們的 Red Hat Linux 主目錄。它還把爲 Red Hat Linux 配置的打印機作爲 Samba 共享打印機來共享。換一句話說,你可以在你的 Red Hat Linux 系統上連接打印機,然後從網絡上的 Windows 機器來打印。

17.2.1. 圖形化配置

要使用圖形化界面來配置 Samba,使用 Samba 服務器配置工具。要使用命令行來配置,請跳到第 17.2.2 節

Samba 服務器配置工具是用來管理 Samba 共享、用戶、以及基本服務器設置的圖形化界面。它修改 /etc/samba/ 目錄中的配置文件。沒有使用該程序進行的改變都會被保留。

要使用該程序,你必須在運行 X 窗口系統,具備根特權,並且安裝了 redhat-config-samba RPM 軟件包。要從桌面啓動 Samba 服務器配置工具,點擊面板上的「主菜單」 => 「系統設置」 => 「服務器設置」 => 「Samba 服務器」,或在 shell 提示(如 XTerm 或 GNOME 終端)下鍵入 redhat-config-samba 命令。

圖 17-1. Samba 服務器配置工具

註記 註記
 

Samba 服務器配置工具不顯示允許用戶在 Samba 服務器上查看他們自己的主目錄的共享打印機或默認文件段。

17.2.1.1. 配置服務器設置

配置 Samba 服務器的第一步是配置服務器的基本設置和幾個安全選項。啓動了應用程序後,選擇 「首選項」 => 「服務器設置」「基本」活頁標籤如 圖 17-2所示。

圖 17-2. 配置基本服務器設置

「基本」標籤上,指定計算機應在的工作組以及對計算機的簡短描述。它們與 smb.conf 中的 workgroupserver string 選項相對應。

圖 17-3. 配置安全服務器設置

「安全」標籤包含以下選項:

 

  • 「驗證模式」 — 它和 security 選項相對應。選擇以下驗證模式中的一種。

     

    • 「域」 — Samba 服務器依賴於 Windows NT 主要或備份域控制器來校驗用戶。服務器把用戶名和口令傳遞給控制器,然後等待它們被返回。在「驗證服務器」字段中指定主要或備份域控制器的 NetBIOS 名稱。

      「加密口令」選項如果被選,它必須被設置爲「是」

    • 「服務器」 — Samba 服務器試圖通過把用戶名和口令組合傳遞給另一個 Samba 服務器來校驗它們。如果它無法校驗,服務器會試圖使用用戶驗證模式來校驗它們。在「驗證服務器」字段中指定另一個 Samba 服務器的 NetBIOS 名稱。

    • 「共享」 — Samba 用戶不必爲每個 Samba 服務器都輸入用戶名和口令組合。它們在試圖連接 Samba 服務器上的指定共享時纔會被提示輸入用戶名和口令。

    • 「用戶」 — (默認)Samba 用戶必須爲每個 Samba 服務器提供一個有效的用戶名和口令。如果你想讓「Windows 用戶名」選項生效,選擇這個選項。詳情請參閱第 17.2.1.2 節

  • 「加密口令」 — (默認值爲「是」)如果用戶從 Windows 98、帶有服務包的 Windows NT 4.0、或其它最近版本的 Microsoft Windows 中連接,該選項必須被啓用。口令在服務器和客戶間使用加密格式而非可被截取的純文本格式傳輸。它和 encrypted passwords 選項相對應。關於加密 Samba 口令的詳情,請參閱第 17.2.3 節

  • 「來賓賬號」 — 當用戶或來賓用戶要登錄入 Samba 服務器時,他們必須被映射到服務器上的有效用戶。選擇系統上的現存用戶名之一作爲來賓 Samba 賬號。當用戶使用來賓賬號登錄入 Samba 服務器,他們擁有和這個用戶相同的特權。該選項和 guest account 選項相對應。

點擊了「確定」後,所做改變會被寫入配置文件,守護進程會被重新啓動;因此改變會立即生效。

17.2.1.2. 管理 Samba 用戶

Samba 服務器配置工具要求在添加 Samba 用戶之前,在充當 Samba 服務器的 Red Hat Linux 系統上必須存在一個活躍的現存用戶賬號。Samba 用戶和這個現存的 Red Hat Linux 用戶賬號相關聯。

圖 17-4. 管理 Samba 用戶

要添加 Samba 用戶,選擇「首選項」 => 「Samba 用戶」,然後點擊「添加用戶」按鈕。在 「創建新 Samba 用戶」窗口中的本地系統上的現存用戶列表中選擇「Unix 用戶名」

如果用戶在 Windows 機器上有一個不同的用戶名,並將從 Windows 機器上登錄入 Samba 服務器,請在「Windows 用戶名」字段中指定 Windows 用戶名。「服務器設置」首選項的「安全」活頁上的「驗證模式」 必須被設置爲「用戶」才能是這個選項生效。

你還需要爲 Samba 用戶配置一個「Samba 口令」,並再鍵入一次來確認這個口令。即便你選擇了爲 Samba 使用加密口令,仍建議你爲所有用戶設置的 Samba 口令不同於他們的 Red Hat Linux 系統口令。

要編輯某個現存用戶,從列表中選擇它,然後點擊「編輯用戶」。要刪除某個現存的 Samba 用戶,選擇這個用戶,然後點擊「刪除用戶」按鈕。刪除 Samba 用戶不會刪除相關的 Red Hat Linux 用戶賬號。

點擊了「確定」按鈕後,用戶就會被立即修改。

17.2.1.3. 添加共享

圖 17-5. 添加共享

要添加共享,點擊「添加」按鈕。「基本」活頁標籤配置以下選項:

 

  • 「目錄」 — 通過 Samba 共享的目錄。這個目錄必須存在。

  • 「描述」 — 對共享的簡短描述。

  • 「基本權限」 — 用戶應該只能夠讀取共享目錄中的文件還是應該能夠讀寫共享目錄中的文件。

「訪問」活頁標籤上,選擇是否要只允許指定的用戶來訪問共享還是允許所有 Samba 用戶來訪問共享。如果你選擇了要允許指定用戶訪問,從可用的 Samba 用戶列表中選擇這些用戶。

點擊了「確定」按鈕後,共享就會立即被添加。

17.2.2. 命令行配置

Samba 使用 /etc/samba/smb.conf 作爲它的配置文件。如果你改變了這個配置文件,這個改變直到你使用 service smb restart 命令重啓 Samba 守護進程後纔會生效。

要指定 Windows 工作組和對它的簡短描述,編輯 smb.conf 文件中的以下幾行:

workgroup = WORKGROUPNAME
server string = BRIEF COMMENT ABOUT SERVER

WORKGROUPNAME 換成你的機器所屬的 Windows 工作組名。BRIEF COMMENT ABOUT SERVER 是可選的,它被用作關於 Samba 系統的 Windows 註釋。

要在你的 Linux 系統上創建 Samba 共享目錄,在 smb.conf 文件中添加以下幾行(根據你和你的系統需要修改了該文件之後):

[sharename]
comment = Insert a comment here
path = /home/share/
valid users = tfox carole
public = no
writable = yes
printable = no
create mask = 0765

上面的例子允許用戶 tfox 和 carole 從 Samba 客戶中讀寫 Samba 服務器上的目錄 /home/share

17.2.3. 加密口令

在 Red Hat Linux 9 中,加密口令被默認啓用,因爲它更安全。如果加密口令沒有被使用,純文本口令就會被使用,它能夠被別人使用 網絡分組嗅探器來截取。建議你使用加密口令。

Microsoft SMB 協議最初使用純文本口令。然而,帶有服務包 3 或更高的 Windows NT 4.0、Windows 98、Windows 2000、Windows ME、以及 Windows XP 要求加密的 Samba 口令。要在 Red Hat Linux 系統和運行以上 Windows 操作系統的系統間使用 Samba,你可以編輯 Windows 註冊器來使用純文本口令過配置你的 Linux 系統的 Samba 來使用加密口令。如果你選擇要修改你的註冊器,你必須爲你的全部 Windows 機器這麼做 — 這很冒險,有可能導致進一步的衝突。爲了更高的安全性,推薦你使用加密口令。

要在你的 Red Hat Linux 系統上配置 Samba 使用加密口令,遵循以下步驟:

 

  1. 爲 Samba 創建一個單獨的口令文件。要根據你的現存 /etc/passwd 文件來創建,在 shell 提示下鍵入以下命令:

    cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    如果系統使用 NIS,鍵入以下命令:

    ypcat passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    mksmbpasswd.sh 腳本和 samba 軟件包一起被安裝在你的 /usr/bin 目錄上。

  2. 改變 Samba 口令文件的權限許可,因此只有根用戶纔有讀寫權限:

    chmod 600 /etc/samba/smbpasswd
  3. 這個腳本不會把用戶口令複製到新文件,Samba 用戶賬號在沒有設置口令之前不會被激活。爲了更高的安全性,建議你把用戶的 Samba 口令設置爲不同於用戶的 Red Hat Linux 口令的口令。要設置每個 Samba 用戶的口令,使用以下命令(把 username 替換爲每個用戶的用戶名):

    smbpasswd username 
  4. 加密口令必須在 Samba 配置文件中被啓用。在 smb.conf 文件中,請確定以下行沒有被註釋掉:

    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
  5. 在 shell 提示下鍵入 service smb restart 來確定 smb 服務被啓動。

  6. 如果你想讓 smb 服務被自動啓動,使用 ntsysvchkconfig、或 服務配置工具來在運行時間啓用它。詳情請參閱第14章

竅門 竅門
 

閱讀 /usr/share/doc/samba-<version>/docs/htmldocs/ENCRYPTION.html 來進一步瞭解有關加密口令的信息。(把 <version> 替換爲你安裝了的 Samba 版本號碼)。

當使用了 passwd 命令後,pam_smbpass PAM 模塊能夠被用來同步用戶的 Samba 口令和他們的系統口令。如果用戶啓用了 passwd 命令,他用來登錄到 Red Hat Linux 系統的口令以及他要連接 Samba 共享所必須提供的口令就會被改變。

要啓動這個功能,把以下行添加到 /etc/pam.d/system-auth 的啓動 pam_cracklib.so 之下:

password required /lib/security/pam_smbpass.so nullok use_authtok try_first_pass

17.2.4. 啓動和停止服務器

在通過 Samba 共享目錄的服務器上必須運行 smb 服務。

使用以下命令來查看 Samba 守護進程的狀態:

/sbin/service smb status

使用以下命令來啓動守護進程:

/sbin/service smb start

使用以下命令來停止守護進程:

/sbin/service smb stop

要在引導時啓動 smb 服務,使用以下命令:

/sbin/chkconfig --level 345 smb on

你還可以使用 chkconfigntsysv服務配置工具來配置要在引導時啓動的服務。詳情請參閱第14章

 

其它參考:

samba

samba的作用是提供Unix/Linux與Windows之間的通訊,並使她們之間實現文件/打印機/設備共享.在Windows網絡中,設置好samba的Linux機器可以做服務器也可以做客戶端.

安裝以下幾個rpm包:
samba
samba-common
samba-client
samba-swat
redhat-config-samba
其中samba-swat是以web頁面方式配置samba的前端,redhat-config-samba是Xwindow下的圖形化配置程式,她們的作用都是設定/etc/samba/smb.conf這個配置文件,此文件也可以手動編輯.

chkconfig --level 35 smb on
運行級3,5下,samba服務開機自動加載

service smb start
開啓samba服務.參數包括start/restart/stop/reload等

samba的一些重要組成文件:
/usr/sbin/smbd SMB服務守護程式
/usr/sbin/nmbd NetBIOS服務守護程式
/etc/samba/smb.conf samba主配置文件
/usr/bin/smbclient 連接到SMB共享的客戶端程式
/usr/bin/testparm 檢驗smb.conf有效性的腳本
/usr/bin/smbprint 此腳本可以將打印任務送至SMB主機的打印機
/usr/bin/smbstatus 列出本地主機的SMB連接
smbfs smbfs文件系統,可以將共享文件夾用mount命令掛載至本地

samba主配置文件/etc/samba/smb.conf中的主要參數設定:
該文件中#爲信息註釋符 ;爲參數註釋符

#======================= Global Settings =====================================
[global]

workgroup = MYGROUP
工作組名稱

server string = Samba Server
主機說明

netbios name = SMBServer
在網絡中的netbios名稱,如果沒有設定,預設值爲HOSTNAME

hosts allow = 192.168.1. 192.168.2. 127.
設定哪些ip地址可訪問主機

security = user
samba的安全級別,從低到高有四級:share/user/server/domain
share: 任何用戶都可以訪問服務器上的資源,無須帳號
user: 需要用戶名和密碼進行驗證
server: 帳號驗證交給另外一個服務器,如交給另一臺NT服務器.
如果遞交失敗,就退到user安全級.
domain: 這個安全級別要求網絡上存在一臺Windows的主域控制器,samba將帳號遞交
給該服務器驗證.
    user/server/domain要求用戶在本地linux機器上也有系統帳戶,否則不能訪問.
這裏只簡單介紹一下share/user的用法,詳悉設定請參看附錄

encrypt passwords = yes
使用加密密碼

smb passwd file = /etc/samba/smbpasswd
存放samba帳戶密碼的文件

local master = yes
samba服務器可以成爲本地主瀏覽器

os level = 33
samba服務器的管理等級

domain master = yes
該服務器成爲域瀏覽器

preferred master = yes
該服務器成爲工作組中的首要主瀏覽器

#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
上面是用戶家目錄的設置

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
打印機設定

[do*****ent]
comment = daweicheng's do*****ent
path = /tmp/do*****ent
read only = yes
public = yes

[samba user guest]
comment = guest
path = /tmp/samba
read only = no
guest account = guest


簡單介紹一下這裏的幾個參數:

comment=xxx
共享註釋,即共享時對方主機能夠看到的文件夾名稱

path=/xxx/.../xxx/
共享的目錄

read only= yes
只讀屬性設定

public = yes
公開屬性,任何人可以看見該資源,無須帳號

guest account = xxx
訪問者的帳戶名

這裏的參數很容易理解,所以不一一列舉了,詳細請看附錄

如果你希望任何人都可訪問共享資源,需要將Global Settings的安全級設定爲:
security = share
共享目錄參數需要:
public = yes
如果希望某些目錄只有特定的用戶訪問,則要將Global Settings的安全級應設定爲:
security = user
共享目錄參數需要:
guest account = xxx
這個xxx用戶(下例中是NewUser)是用useradd和smbpasswd創建的:

添加samba用戶:
useradd NewUser
設定NewUser的samba密碼:
smbpasswd -a NewUser
使NewUser可以使用samba服務:
smbpasswd -e NewUser

testparm可以驗證/etc/samba/smb.conf的有效性,回車後會顯示samba的參數設定

設定無誤後,重啓smb服務,並打開iptables中的tcp 139端口:
在/etc/sysconfig/iptables中加入:

#smb(samba)
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 139 --syn -j ACCEPT

(加入的位置在REJECT規則之前)
然後service iptables restart
重啓iptables服務

查看其他主機的共享資源:
smbclient -L WindowsHostName
此處WindowsHostName就是對方的windows主機名

smbclient //WindowsHostName/ShareName
可以訪問對方主機上的ShareName共享文件夾
也可以是:
smbclient //xxx.xxx.xxx.xxx/D$
xxx.xxx.xxx.xxx表示對方的ip,D$是對方主機D盤的默認共享名稱
如果訪問的資源需要用戶名和密碼,可以加入-U參數,如:
smbclient //xxx.xxx.xxx.xxx/D$ -U UserName
然後按提示輸入密碼,登錄後會得到一個提示符,有些類似於命令行方式的ftp登錄.

掛載共享驅動器:
可以用smbmount或者mount命令
smbmount的例子:
smbmount //WindowsHostName/ShareName /mnt
這樣就將ShareName下的內容掛載在/mnt下了
也可以用mount命令,例子:
mount -t smbfs -o username=xxx //xxx.xxx.xxx.xxx/D$ /mnt/
如果不正確顯示中文,可以在-o參數後加入codepage=936,iocharset=cp936
即:
mount -t smbfs -o username=xxx,codepage=936,iocharset=cp936 //xxx.xxx.xxx.xxx/D$ /mnt/
卸載共享目錄的命令是umount

在windows中訪問samba服務器,可以用網上鄰居
或者在"運行"中直接輸入xxx.xxx.xxx.xxx即可

配置samba也可用redhat-config-samba或SWAT
使用SWAT需要先設置一下:
將/etc/xinetd.d/swat中的disable = yes設定爲disable = no
service xinetd restart
重啓xinetd服務
/sbin/chkconfig swat --level 35 on
在運行級3,5下讓swat服務開機自動加載
最後,執行chkconfig --list | grep swat
swat : on表示swat服務已經開啓了
在web瀏覽器中輸入http://localhost:901
以root身份進入配置界面,就可以對smb.conf進行設置了.

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