1、主要的Samba工具(服務器端和客戶端):
smbcacls smbcontrol smbencrypt smbmount smbprint smbstatus smbtree
smbclient smbcquotas smbpasswd smbspool smbtar smbumount testparm
testprns swat smbd nmbd
smbclient:利用這個工具可連接其它 Unix like 的 Samba Server,或是連接 Windows 機器,以取得檔案分享服務。
testparm :這個工具可讓您測試smb.conf檔定義是否正確。
smbstatus:這個工具可用來顯示目前client端連接到Samba Server的聯機狀況。
nmblookup:這個工具可使用NT/2000網域內的主機名稱查詢出對應的IP地址。
smbpasswd:這個工具可用來建立、變更登入 Samba server的加密密碼。
swat:這個工具讓您可使用web接口(如:IE、Netscape)對Samba Server做組態設定。  
2、Samba配置文件: 為/etc/samba/smb.conf,Ubuntu下的默認內容為:

 

# Debian GNU/Linux下的Samba套件配置文件例子 # # 這是主要的Samba配置文件。為了理解這里列出的選項,你應該閱讀smb.conf(5)手冊頁。 # Samba有一大堆的配置選項,有很多并沒有在這里的例子中列出 # 任何以;號或#號開始的行都是注釋,會被忽略。在這里的例子中,我們將使用#作為釋放, # 使用;的行表示配置文件的選項,這個選項你可能希望激活它 # 注意:每當你修改這個文件時,你應該運行命令"testparm"進行檢查,以確保你沒有犯基本 # 的語法錯誤。 # #======================= 全局設置 ======================= [global] ####### 瀏覽/標識 ####### # Samba服務器要加入的Windows工作組名(即NT域名) workgroup = WORKGROUP # 在NT域中顯示的Samba服務器名,%h%u4E3A本機的主機名 server string = %h server (Samba, Ubuntu) # Windows因特網名字服務支持部分: # WINS支持 – 通知Samba的NMBD組件激活WINS服務器 ; wins support = no # WINS服務器 – 通知Samba的NMBD組件,讓它作為一個WINS客戶端 # 注意: Samba既可以是一個WINS服務器,也可以一個WINS客戶端,但只能為其中之一 ; wins server = w.x.y.z # 這將禁止nmbd通過DNS搜索NetBIOS名稱 dns proxy = no # 什么樣的名字服務,以及我們應該用什么樣的順序來解析主機名:下面是對IP地址 ; name resolve order = lmhosts host wins bcast ####### 網絡 ####### # 要監聽的特定網卡/網絡集:這可以是網卡名或網卡的IP地址/掩碼;通常首選網卡名 ; interfaces = 127.0.0.0/8 eth0 # 只綁定到命名的接口或網絡;你必須通過使用上面的\\\’interfaces\\\’選項來使用它。 # 如果你的Samba機器沒有受防火墻的保護,或者它自己就是一個防火墻,則建議你激活本選項。 # 然而,本選項不能正確地處理動態的或非廣播的接口 ; bind interfaces only = true #### 調試/記帳 #### # 設置Samba為每個連接的機器使用獨立的日志文件,%m%u8868示客戶機的netbios名 log file = /var/log/samba/log.%m # 設置Samba Server日志文件的最大容量,單位為kB,0代表不限制 max log size = 1000 # 是否只通過syslog來記錄日志消息 ; syslog only = no # 我們想讓Samba記錄最小數量的日志消息到syslog中。所有消息應該記錄到/var/log/samba/log.{smbd,nmbd}中。 # 如果你想通過syslog來記錄日志,你應該把下面的參數設置得大一點 syslog = 0 # 當Samba崩潰時做一些可感覺到的動作:發送一個回溯信息給管理員 panic action = /usr/share/samba/panic-action %d ####### 認證 ####### # 設置Samba服務器的安全性等級。user等級表示每個訪問服務器的用戶需要在服務器上 # 有一個Unix賬號,這總是一個好主意。其他細節可參考 # /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html ; security = user # 表示是否指定用戶密碼以加密的形態發送到SAMBA服務器 encrypt passwords = true # 如果你正使用加密的密碼,Samba將需要知道你使用的密碼數據庫類型 passdb backend = tdbsam obey pam restrictions = yes # 此項默認不使用,它是用來設置Guest帳號名 ; guest account = nobody # 指定登錄無效的用戶,即不能用這些用戶來登錄 invalid users = root # 用來控制當passdb中的加密SMB密碼被更改時,是否進行同步 unix password sync = yes # 指定設置UNIX帳號密碼的程序,其中?68示用戶名稱 passwd program = /usr/bin/passwd passwd chat = *Enter/snew/s*/s* %n/n *Retype/snew/s*/s* %n/n *password/supdated/ssuccessfully* . # 表示可以使用PAM來修改SMB客戶端的密碼,而不使用“passwd program”選項中指定的程序 pam password change = yes # 控制成功的認證怎樣映射到匿名連接 map to guest = bad user ########## 域 ########### # 表示本機器能對用戶進行登錄認證。主控制器PDC和從控制器BDC都必須激活本選項。如果你是BDC,則你必須把 # \\\’domain master\\\’設置為no ; domain logons = yes # # 下面的設置只有在\\\’domain logons\\\’被設設置時才會起作用: # 指定用戶配置文件所在的目錄(從客戶端的角度看),接著需要在samba服務器上 # 有一個[profiles]共享(參看下面) ; logon path = //%N/profiles/%U # 配置文件存放的路徑:在用戶的主目錄中 ; logon path = //%N/%U/profile # 下面的設置只有在\\\’domain logons\\\’被設設置時才會起作用: # 指定用戶主目錄的位置(從客戶端的角度看) ; logon drive = H: ; logon home = //%N/%U # 下面的設置只有在\\\’domain logons\\\’被設設置時才會起作用: # 指定登錄時運行的腳本,它必須存放在[netlogon]共享中 # 注意:必須按DOS文件的格式約定來存放 ; logon script = logon.cmd # 設置允許通過SAMR RPC管道在域控制器中創建Unix用戶賬號。這里表示創建一個帶有失效的Unix密碼的 # 用戶賬號,可以修改它以適應你的需要 ; add user script = /usr/sbin/adduser –quiet –disabled-password –gecos "" ####### 打印 ########## # 設置在開機時自動加載瀏覽列表,以共享打印機 ; load printers = yes # 指定打印系統的類型,這里為lpr(ng)打印 ; printing = bsd # 設置打印機配置文件名 ; printcap name = /etc/printcap # CUPS打印,參看cupsys-client包中的cupsaddsmb(8)手冊頁 ; printing = cups ; printcap name = cups ############ 雜項 ############ # 允許SAMBA服務器使用其他的配置文件,%m%u8868示客戶機的netbios名 ; include = /home/samba/etc/smb.conf.%m # 用來設置服務器和客戶端之間會話的Socket選項,可以優化傳輸速度 # 更多細節參看smb.conf(5)和/usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/speed.html # Y你可能想在Linux系統中添加下面兩項: # SO_RCVBUF=8192 SO_SNDBUF=8192 socket options = TCP_NODELAY # 下面的參數僅在安裝了linpopup包后才會有用 ; message command = /bin/sh -c \\\’/usr/bin/linpopup "%f" "%m" %s; rm %s\\\’ & # 設置Samba服務器是否要成為網域的主瀏覽器,網域主瀏覽器可以管理跨子網域的瀏覽服務 # 如果你要把本機器配置成從控制器,則必須設置成\\\’no\\\’ ; domain master = auto # 一些winbind方面的默認配置 ; idmap uid = 10000-20000 ; idmap gid = 10000-20000 ; template shell = /bin/bash # 下面是sarge中的默認行為 ; winbind enum groups = yes ; winbind enum users = yes # 設置usershare選項,以允許非root用戶用net usershare命令來共享文件 # usershare的最大值,0(默認即為0)意味著usershare不激活 ; usershare max shares = 100 # 允許有usershare特權的用戶創建公共的共享,而不只是授權一個共享 usershare allow guests = yes #======================= 共享定義 ======================= # 取消下面的注釋,會激活默認用戶目錄的共享。這將把每個用戶的主目錄共享為//server/username ;[homes] ; comment = Home Directories ; browseable = no # 用戶主目錄是否設置為只讀,如果你想讓它可寫,則設置為no ; read only = yes # 由于安全的原因,文件創建掩碼設置為0700,如果你想以group=rw的權限創建文件,則應設置為0775 ; create mask = 0700 # 由于安全的原因,文件創建掩碼設置為0700,如果你想以group=rw的權限創建文件,則應設置為0775 ; directory mask = 0700 # 默認情況下,//server/username共享能被任何連接samba服務器的用戶訪問。取消下面的 # 注釋可確保只有username能連接到//server/username,%S%u8868示當前登錄的用戶名 ; valid users = %S # 取消下面的注釋,可為基于域的登錄創建netlogon目錄(你還需要配置Samba作為一個域控制器) ;[netlogon] ; comment = Network Logon Service ; path = /home/samba/netlogon ; guest ok = yes ; read only = yes ; share modes = no # 設置存放配置文件的共享目錄 # 取消下面的注釋,可創建profiles目錄來存放用戶的配置文件(參看上面的\\\’logon path\\\’選項, # 你還需要配置Samba作為一個域控制器)。下面的路徑應該對所有用戶可寫,以便當他們第一次登錄 # 時能夠創建他們的配置目錄 ;[profiles] ; comment = Users profiles ; path = /home/samba/profiles ; guest ok = no ; browseable = no ; create mask = 0600 ; directory mask = 0700 # 設置共享的打印機目錄 [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 # Windows客戶端使用這個共享名作為下載打印驅動的源位置 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no # 允許寫入該共享的用戶,把下面的ntadmin改為Windows系統管理員所在的組名 ; write list = root, @ntadmin # 一個例子:對你的CD_ROM進行共享 ;[cdrom] ; comment = Samba server\\\’s CD-ROM ; read only = yes ; locking = no ; path = /cdrom ; guest ok = yes # 下面兩個參數表示當訪問cdrom共享時怎樣自動掛載CD-ROM。要讓它能工作,必須在/etc/fstab中包含 # 類似于下面的條目: # /dev/scd0 /cdrom iso9660 defaults,noauto,ro,user 0 0 # 在連接后,CD-ROM可以自動解掛。如果你不想使用自動掛載/解掛功能,那就要把CD掛載到/cdrom下 ; preexec = /bin/mount /cdrom ; postexec = /bin/umount /cdrom

 

我們用得最頻繁的是共享目錄的設置選項,其含義如下:
[共享名]:在客戶端顯示的共享名
comment=任意字符串:是對該共享的描述,可以是任意字符串,不過最好把訪問的用戶名和密碼寫入。
path=共享目錄路徑:用來指定共享目錄的路徑。可以用001%m%u8FD9樣的宏來代替路徑里的unix用戶和客戶機的Netbios名,用宏表示主要用于[homes]共享域。例如,如果我們不打算用home段做為客戶的共享,而是在/home/share/下為每個Linux用戶以他的用戶名建個目錄,作為他的共享目錄,這樣path就可以寫成path = /home/share/002用戶在連接到這共享時具體的路徑會被他的用戶名代替,要注意這個用戶名路徑一定要存在,否則,客戶機在訪問時會找不到網絡路徑。同樣,如果我們不是以用戶來劃分目錄,而是以客戶機來劃分目錄,為網絡上每臺可以訪問samba的機器都各自建個以它的netbios名的路徑,作為不同機器的共享資源,就可以這樣寫path = /home/share/%m%u3002
browseable=yes/no:用來指定該共享是否可以瀏覽。
writable=yes/no:用來指定該共享路徑是否可寫。
available=yes/no:用來指定該共享資源是否可用。
admin user=該共享的管理者:用來指定該共享的管理員(對該共享具有完全控制權限)。在samba 3.0中,如果用戶驗證方式設置成“security=share”時,此項無效。例如"admin users=bobyuan,jane"(多個用戶中間用逗號隔開)。
valid users=允許訪問該共享的用戶:用來指定允許訪問該共享資源的用戶。例如"valid users = bobyuan,@bob ,@tech"(多個用戶或者組中間用逗號隔開,如果要加入一個組就用“@ 組名”表示。)
invalid users = 禁止訪問該共享的用戶:用來指定不允許訪問該共享資源的用戶。例如"invalid users=root,@bob"(多個用戶或者組中間用逗號隔開。)
write list=允許寫入該共享的用戶:用來指定可以在該共享下寫入文件的用戶。例如"write list=bobyuan,@bob"。
public=yes/no:用來指定該共享是否允許guest賬戶訪問。
guest ok=yes/no:意義同"public"。
read only=yes:共享目錄是否只讀。
create mask=0700:文件創建掩碼。
directory mask=0700:目錄創建掩碼。
3、Samba配置實例:
(1)創建共享目錄:我們在自己主目錄下創建一個共享目錄Share,它只允許new用戶訪問。創建共享目錄的命令如下:

 

cd ~ mkdir share chmod 777 share

 

注意在Ubuntu系統中創建共享目錄時要使用777,讓所有用戶可讀可寫可運行。當把這個共享設置添加到smb.conf中時,我們把文件創建掩碼和目錄掩碼設置為0755,由于掩碼的作用,這樣new用戶對這個共享目錄有讀寫執行權限,其他用戶只有讀和執行權限。修改配置文件smb.conf(修改之前先作一下備份),把下面的共享設置加入到smb.conf的末尾:

 

[share] comment = Shared Folder with , … path = /home/zhouhuansheng/Share public = yes writable = yes valid users = new create mask = 0755 directory mask = 0755 available = yes browseable = yes

 

(2)創建登錄用戶并添加到Samba的密碼數據庫中:創建new這個賬號,以便遠程用戶能通過它來訪問共享。

 

sudo useradd new

 

要注意,上面這個new是Linux賬號,我們沒有給它設置本機登錄密碼,因此它不能從本機登錄,只能從遠程訪問。由于客戶端要用這個賬號來登錄Samba服務器,因此我們還要把這個賬號添加到Samba服務器的smbpasswd文件中(因為登錄到Samba服務器也就必須要登錄到Linux系統,因此必須先在/etc/passwd中有這個賬號,然后我們再把它添加到smbpasswd文件中去),并為它設置一個登錄的SMB密碼,注意samba的登錄密碼可以和本機登錄密碼不一樣。

 

sudo smbpasswd -a new # 接下來輸入兩次SMB密碼即可

 

以后要修改new用戶的SMB密碼時也用這個命令,從smbpasswd文件中移除這個賬號則用命令"smbpasswd -x new"。創建了用戶后,要建立用戶映射文件,并且security安全級別要設置為user,這表示登錄Samba服務器必須要有一個賬號。修改smb.conf中的security選項,并在下面添加username map選項:

 

security = user username map = /etc/samba/smbusers

 

用戶映射文件smbusers用來包含所有的Samba用戶名,在其中添加一行內容:new = "network username",表示new這個賬號是網絡上的遠程用戶。
(3)修改顯示字符集以防止出現亂碼:由于Ubuntu系統中通常使用UTF-8編碼,而Windows主機中一般使用GBK編碼,為防止在Windows中顯示為亂碼,找到[global],改一下workgroup選項的值,并在下面加一些字符集選項:

 

workgroup = WORKGROUP display charset = UTF-8 unix charset = UTF-8 dos charset = cp936

 

這里因為大部分Windows主機的默認工作組名為WORKGROUP,因此我們改成這個值,你必須確保你的Windows主機的工作組名與smb.conf中的配置一致。注意如果你的Ubuntu中的字符集為zh_CN.GB2312或zh_CN.GBK,則display charset和unix charset都要設置為cp936(即簡體中文)。設置完畢后,需要注銷一次。才可以看到中文的目錄。
(4)當所有設置均完成后,運行一下testparm,檢查一下配置是否有語法錯誤,然后重啟Samba服務。
4、訪問共享目錄:
(1)Windows訪問Linux中的共享:這個比較簡單,像正常的Windows主機之間的共享訪問一樣。在“網上鄰居”里查看工作組,里面會顯示Ubuntu主機,點擊可看到相應的共享。也可以在資源管理器的地址欄中輸入://Ubuntu的IP,就會列出相應的共享。雙擊共享,然后輸入用戶名new和相應的SMB密碼,即可進入共享目錄。由于我們配置為可寫,因此你還可以往共享目錄里寫東西。注意如果Window中可以看到共享目錄,但是就是打不開,原因就在于權限問題。假設你在自己Ubuntu系統下右擊一個文件夾,點共享,然后創建共享文件,你還必須把它設置為可讀可寫可運行,這樣在Windows中才能訪問它。
(2)Linux訪問Windows中的共享:
第一種方法:用smb訪問。直接點擊系統菜單中的"位置->網絡",里面有個“Windows Network",點進去,再找你要找的電腦和文件,屆時可能需要被訪問的那個計算機的帳號和密碼。這種方法的成功率不高。
第二種方法:用ubuntu系統自帶的連接到服務器功能來訪問。點擊"位置->連接到服務器",在服務類型中選擇“windows share”,在"Server"中輸入windows計算機的ip地址或計算機名、"Folder"中輸入共享文化夾名、"User Name"中輸入Windows的賬號、"Domain Name"中輸入Windows的工作組名,點擊連接,然后輸入賬號的密碼,這樣在Ubuntu系統桌面上就會顯示這個共享的文件夾。這個方法的成功率比較高。接下來的兩種方法是最基本的方法。
第三種方法:用mount或smbmount把遠地的共享目錄掛載到本地。

 

cd /mnt sudo mkdir wind sudo mount -t smbfs -o iocharset=utf8,username=new,password=new //192.168.0.180/my_pictures /mnt/wind

 

先建立一個掛載點,然后用Samba的new用戶及其密碼來掛載遠程Windows中的共享目錄。由于本地Ubuntu使用utf8,為防止顯示亂碼,指定傳輸的字符集為utf8。這樣共享目錄my_pictures就被掛載到/mnt/wind下了。也可用smbmount命令,它其實就是加了參數的mount(注意回車后可能還會要你輸入一遍密碼)。

 

sudo smbmount //192.168.0.180/my_pictures wind -o iocharset=utf8 user=new pass=new

 

第四種方法:用smbclient工具來連接到共享目錄,這是一個類似于ftp的工具。

 

smbclient //192.168.0.180/my_pictures -U new

 

然后就可以用smbclient命令來操作共享目錄,主要的命令有:
命令 說明
?或help [command] 提供關于幫助或某個命令的幫助
![shell command] 執行所用的SHELL命令,或讓用戶進入SHELL提示符
cd [目錄] 切換到服務器端的指定目錄,如未指定,則smbclient返回當前本地目錄
lcd [目錄] 切換到客戶端指定的目錄
dir 或ls 列出當前目錄下的文件
exit 或quit 退出smbclient
get file1 file2 從服務器上下載file1,并以文件名file2存在本地機上的主目錄下;如不想改名可把file2省略
mget file1 file2 filen 從服務器上下載多個文件
md或mkdir 目錄 在服務器上創建目錄
rd或rmdir 目錄 刪除服務器上的目錄
put file1 [file2] 向服務器上傳一個文件file1,傳到服務器上改名為file2
mput file1 file2 filen 向服務器上傳多個文件

附:
(1)security選項一共有四種安全級別:
share:用戶訪問Samba Server不需要提供用戶名和口令, 安全性能較低。
user:Samba Server共享目錄只能被授權的用戶訪問,由Samba Server負責檢查賬號和密碼的正確性。賬號和密碼要在本Samba Server中建立。
server:依靠其他Windows NT/2000或Samba Server來驗證用戶的賬號和密碼,是一種代理驗證。此種安全模式下,系統管理員可以把所有的Windows用戶和口令集中到一個NT系統上,使用 Windows NT進行Samba認證, 遠程服務器可以自動認證全部用戶和口令,如果認證失敗,Samba將使用用戶級安全模式作為替代的方式。
domain:域安全級別,使用主域控制器(PDC)來完成認證。
(2)smb.conf中其他的一些常用選項:
hosts allow=127. 192.168.1. 192.168.10.1:表示允許連接到Samba Server的客戶端,多個參數以空格隔開。可以用一個IP表示,也可以用一個網段表示。hosts deny與hosts allow剛好相反。
max connection=0:用來指定連接Samba Server的最大連接數目。如果超出連接數目,則新的連接請求將被拒絕。0表示不限制。
deadtime=0:用來設置斷掉一個沒有打開任何文件的連接的時間。單位是分鐘,0代表Samba Server不自動切斷任何連接。
time server=yes/no:用來設置讓nmdb成為windows客戶端的時間服務器。

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:www.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Linux系統管理實踐(5):Samba文件共享配置

登錄

找回密碼

注冊