一、Samba簡介
Samba是根據SMB協議實現的,主要用于Windows和Linux之間共享資源。
二、安裝要配置Samba服務器,至少需要下面三個套件:samba-commonsamba-clientsamba
檢查Samba是否安裝[root@centos ~]# rpm -qa|grep sambasamba-common-3.0.33-3.7.el5samba-client-3.0.33-3.7.el5sblim-cmpi-samba-test-1-31.el5_2.1sblim-cmpi-samba-0.5.2-31.el5_2.1system-config-samba-1.2.41-3.el5samba-swat-3.0.33-3.7.el5sblim-cmpi-samba-devel-1-31.el5_2.1samba-3.0.33-3.7.el5這里我是用yum命令安裝的。
三、配置
1.Samba安裝后,默認配置文件是/etc/samba/smb.conf2.Samba服務 [root@centos samba]# service smb statussmbd (pid 5046 4970 4955 4953 4948) is running...nmbd (pid 4951) is running...
Samba啟動的進程: smbd和nmbd
3.配置參數3.1 Network Related Options(1)workgroup NT的域名或工作組名如: workgroup = MYGROUP(2)server string 相當于NT的描述信息字段(3)netbios name Samba所在linux主機的Netbios名稱netbios name = mylinux (4)interfaces 指定Samba服務監聽的網絡接口假設Samba所在Linux主機有兩個網絡接口:eth0和eth1,我只想在ech0上接受samba請求,則interfaces = eth0bind interfaces only = yes
默認是在當前所有除了lo地址以外激活的網絡接口(5)host allow 指定哪些主機可以連接Samba服務器如:hosts allow = 10.226.70.0/24 10.32.0.0/16
3.2 Logging Options默認,日志是保存在/var/log/samba目錄下; log file = /var/log/samba/%m.log
3.3 Standalone Server Options(1)security此參數可被設成user, share or server若ecurity = user,則從Windows訪問共享資源時需輸入Samba用戶名和密碼若ecurity = share,并指定public = yes 訪問權限,則可從Windows匿名訪問共享資源
3.4 Share Definitions設置共享目錄信息格式:[共享資源名稱] 參數1 = 值1 參數2 = 值2 .... 參數n = 值n主要的參數有共享資源的描述信息,共享目錄路徑和訪問權限常見的參數:(1)comment(2)path(3)read only(4)writeable(5)printable(6)guest ok(7)public其中,(3),(4),(5),(6),(7)都是屬于訪問權限,其值為yes/no(6)與(7)是同義的,不需要用戶名/密碼如:[smbshare] comment = my share on linux path = /testsmb writeable = yes printable = no共享資源名稱為"smbshare",描述信息是" my share on linux",共享目錄是"/testsmb",具有寫的權限,但沒有打印權限。
4.配置完smb.conf后保存.可使用testparm命令檢查配置是否有誤:
[root@centos samba]# testparmLoad smb config files from /etc/samba/smb.confProcessing section "[homes]"Processing section "[printers]"Processing section "[smbshare]"Loaded services file OK.Server role: ROLE_STANDALONEPress enter to see a dump of your service definitions
[global] workgroup = MYGROUP netbios name = MYLINUX server string = Samba Server Version %v interfaces = lo, eth0 bind interfaces only = Yes security = SHARE passdb backend = tdbsam username map = /etc/samba/smbusers hosts allow = 10.226.70.0/24, 10.32.0.0/16 cups options = raw
[homes] comment = Home Directories read only = No browseable = No
[printers] comment = All Printers path = /var/spool/samba printable = Yes browseable = No
[smbshare] comment = my share on linux path = /testsmb read only = No guest ok = Yes
確認無誤后,重啟Samba服務
[root@centos samba]# service smb restartShutting down SMB services: [ OK ]Shutting down NMB services: [ OK ]Starting SMB services: [ OK ]Starting NMB services: [ OK ]
- Samba用戶名和密碼前面說了,若允許匿名訪問共享資源,則不需Samba用戶名和密碼,否則若指定security = user時,需要輸入Samba用戶名和密碼。可使用smbpasswd命令添加Samba用戶。
四、小工具
- smbpasswd若已存在系統用戶zhangyang,則只須將基加入Samba用戶中,并為其設置Samba密碼。否則,先創建系統用戶,再加為Samba用戶。(1)若普通用戶使用該命令,則為修改SMB密碼,并要求輸入舊的SMB密碼(2)若root 用戶使用,-a 表示將后面的用戶名添加到smbpasswd文件中,并為用戶設置smb密碼.
如:smbpasswd -a zhangyang 將系統用戶zhangyang加入到smb賬戶中,并為其設置密碼
[root@centos ~]# smbpasswd -a zhangyangNew SMB password:Retype new SMB password:Added user zhangyang.
注意:這里的密碼是SMB密碼,不是系統用戶的登錄密碼!
2.smbclient訪問服務器上SMB/CIFS共享資源客戶端兩種用法:(1) 查詢共享資源 smbclient -L netbios -U username[%password]-L netbios name-U username[%password] 設置SMB用戶名或用戶名+密碼如:[root@localhost ~]# smbclient -L mylinux -U test%123456Domain=[MYLINUX] OS=[Unix] Server=[Samba 3.0.33-3.7.el5]
Sharename Type Comment --------- ---- ------- smbshare Disk my share on linux IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.7.el5) test Disk Home DirectoriesDomain=[MYLINUX] OS=[Unix] Server=[Samba 3.0.33-3.7.el5]
Server Comment --------- -------
Workgroup Master --------- ------- MYGROUP LOCALHOST(2) 登錄遠程共享資源進行操作smbclient {servicename} -U username[%password]servicename: //netbios name/share name-U: username or username+password如:[root@localhost ~]# smbclient //10.226.70.21/mysoft -U Administrator%web123Domain=[ZY] OS=[Windows Server 2003 3790] Server=[Windows Server 2003 5.2]
五、[測試]
(http://lib.csdn.net/base/softwaretest)1.Windows中訪問Samba服務器共享的資源[//ip[/share_name](file://ip[/share_name)]或[//netbios[/share_name](file://netbios[/share_name)]如: [//10.226.70.30](file://10.226.70.30/) 或 [//mylinux/smbshare](file://mylinux/smbshare)注:(1)在Windows中訪問Linux共享資源時,進入了共享目錄,打開時卻出現“沒有權限訪問網絡資源”的錯誤,則只須修改/etc/selinux/config 或/etc/sysconfig/selinux, 將SELINUX=enforcing 改為SELINUX=disable即可。
(2) 關于共享資源的權限共享目錄本身的權限要和Samba服務器授予訪問用戶的權限保持不沖突。如testsmb本身是644,若在配置文件中指定writeable = yes,則當其他組的用戶登錄后,是沒有write權限的。Samba服務器授予的權限不能超過目錄的系統授予它的權限的。The access rights granted by the server are masked by the access rights granted to the specified or guest UNIX user by the host system. The server does not grant more access than the host system grants.
2.Linux中訪問Windows的共享資源假設Windows2003中有共享了目錄mysoft, 網絡訪問用戶有寫的權限方法1:smbclient[root@centos test]# smbclient //10.226.70.21/mysoft -U Administrator%web123Domain=[ZY] OS=[Windows Server 2003 3790] Server=[Windows Server 2003 5.2]smb: /> help? altname archive blocksize cancelcase_sensitive cd chmod chown closedel dir du exit getgetfacl hardlink help history lcdlink lock lowercase ls maskmd mget mkdir more mputnewer open posix posix_open posix_mkdirposix_rmdir posix_unlink print prompt putpwd q queue quit rdrecurse reget rename reput rmrmdir showacls setmode stat symlinktar tarmode translate unlock volumevuid wdel logon listconnect showconnect!smb: />下面就可以像ftp一樣,使用命令get, mget, put,mput等。
方法2:mount用法: mount -t cifs -o username=un,password=pwd share mount_point注:username和password兩個屬性值間用逗號隔開[root@centos ~]# mount -t cifs -o user=Administrator,password=web123 //10.226.70.21/mysoft /mnt/cdrom[root@centos ~]# ls /mnt/cdrom1.bat ethereal-setup-0.99.0.exe me New Text Document.txt7-Zip jpwb2009.exe myftp putty
- Linux中訪問samba服務器共享的資源
[root@centos sysconfig]# smbclient //mylinux/smbshare -U test%123456