samba
-
samba概述
-
samba原理
-
samba服務
-
samba的命令
-
samba搭建實例
-
使用GUI工具SWAT管理samba
samba概述
什么是samba?
samba是基于smb(Server Message Block)協議的一種實現方式。
samba的功能是什么?
samba能夠用來在windows,unix平臺間實現文件共享服務,不同于FTP與NFS的是,samba能夠很好的跨平臺實現共享,并在本地掛載共享文件夾。
samba原理
1.SMB是基于NetBIOS的一個網絡文件共享協議,允許cilent從服務器端訪問文件資源。 2.NetBIOS協議是一個用來讓局域網內的主機互相連接的通訊協議,被廣泛用于windows平臺間的通信。 3.samba就是基于smb開發的,讓unix主機能夠通過mbr協議與windows平臺進行文件共享。
samba服務
samba的安裝包:
samba samba服務器端程序。 libsmbclient samba客戶端庫文件。 samba-client samba客戶端程序。 samba-common samba客戶端以及服務端都會用到的文件,如samba.conf等。 samba-winbind samba對于windows域的支持的服務端的庫。 samba-winbind-clients samba windwos域的客戶端。
samba的進程文件:
nmb:負責管理工作組,NETBIOS解析,工作在UDP的137,138端口上。 smb:負責對通過驗證的請求調用系統資源,工作在TCP的139或445端口上。
samba的文件:
/etc/samba/smb.conf samba的主要配置文件。 /etc/samba/smbusers 共享服務中,linux與windows的賬號的映射,格式為 linuxuser = windowsuser1,windowsuser2 /var/lib/samba/private/passdb.tdb / secrets.tdb samba用戶賬號密碼存放的數據庫。
samba.conf
[global] [network] workgroup = MYGROUP 工作組名稱,要與windows的工作組名稱一致。 server string = Samba Server Version %v ; netbios name = MYSERVER ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 ; hosts allow = 127. 192.168.12. 192.168.13. [login] log file = /var/log/samba/log.%m 日志文件路徑。 max log size = 50 一個日志文件最大多少Kb進行輪替。 [獨立服務器設定 Standalone Server] security = user|share|domain 安全認證方式 share:共享模式 user:使用samba服務器的密碼庫 domain:使用外部域服務器的密碼。 passdb backend = tdbsam 密碼庫格式。 [域成員設定 domain members] ; security = domain ; passdb backend = tdbsam ; realm = MY_REALM ; password server = <NT-Server-Name> .................... 海量設置請自行查看此文件,或者查看/usr/share/doc/samba[version] 幫助手冊。 #============================ Share Definitions ============================== [homes] comment = Home Directories 注釋信息。 browseable = no 是否讓所有人都看到此目錄。 writable = yes 是否可以寫入。 ; valid users = %S 有效的用戶。 ; valid users = MYDOMAIN\%S [printers] comment = All Printers path = /var/spool/samba 共享文件夾路徑。 browseable = no guest ok = no 是否允許來賓賬號訪問。 writable = no printable = yes 是否允許打印。 # Un-comment the following and create the netlogon directory for Domain Logons 格式參考模板1 ; [netlogon] ; comment = Network Logon Service ; path = /var/lib/samba/netlogon ; guest ok = yes ; writable = no ; share modes = no # Un-comment the following to provide a specific roving profile share 格式參考模板2 # the default is to use the user's home directory ; [Profiles] ; path = /var/lib/samba/profiles ; browseable = no ; guest ok = yes # A publicly accessible directory, but read only, except for people in 格式參考模板3 # the "staff" group ; [public] ; comment = Public Stuff ; path = /home/samba ; public = yes ; writable = yes ; printable = no ; write list = +staff
smb.conf基礎共享屬性格式小結:
[NAME] 共享名稱,windows看見的文件夾名稱。 comment = [STRING] 注釋信息。 path = /PATH/TO/SHARE_DIR 共享文件夾的路徑。 browseable = yes|no 是否讓所有人都看到此目錄。 guest ok = yes|no 是否允許來賓賬號。 writable = yes|no 是否允許寫入。 read only = yes|no 是否設定只讀。 write list = group,user 只有在此條中組或用戶才能寫入。
賬號,權限相關
與nfs相同,samba的可行性權限也是用戶權限與文件夾權限的交集,所以在設置時請確認用戶,文件夾權限兩點。 如果沒有設定guest ok,samba默認是不允許匿名登陸的,一定要設定賬號。
samba的命令與客戶端訪問
testparm:測試有效的exports內的屬性。
testparm
pdbedit:管理smb的用戶數據庫。
pdbedit -L [-vm] 列出數據庫中的用戶等信息,-v詳細信息,-w使用smbpasswd格式。 pdbedit -a -u [user] 新增一個用戶,但必須存在實體用戶。 pdbedit -r -u [user] 修改一個用戶的信息,需搭配其他參數,可參考man文檔。 pdbedit -x -u [user] 刪除一個用戶。 pdbedit -a -m -u [machine account計算機賬號] 添加一個計算機賬號,域相關。
smbpasswd:改變samba賬戶的密碼。
smbpasswd -a [user] 新增用戶以及密碼。 smbpasswd -r [user] 修改用戶密碼。 smbpasswd -x [user] 刪除用戶。 smbpasswd -d [user] 禁止登陸。 smbpasswd -e [user] 啟用用戶。
smbclient:unix客戶端訪問工具。
smbclient -L //IPADDR [-U smbuser] 測試查看目標服務器所開放的共享文件夾 smbclient //IPADDR/dir -U smbuser 連接共享服務器文件夾。 [root@host2 ~]# smbclient //192.168.1.1/test -U xiao 命令行形式訪問。 Enter xiao's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] smb: \> help ? allinfo altname archive blocksize cancel case_sensitive cd chmod chown ....
掛載訪問。
mount -t cifs -o username=xiao,password=redhat -l //192.168.1.1/test /tmp
samba搭建實例
smb服務搭建:
host1(192.168.1.1):
[root@host1 ~]# yum install samba [root@host1 ~]# vim /etc/samba/smb.conf [test] comment = test on 192.168.1.1 server! path = /tmp/samba writable = yes guest ok = yes write list = xiao [root@host1 ~]# testparm [root@host1 ~]# pdbedit -a -u xiao [root@host1 ~]# pdbedit -L [root@host1 ~]# mkdir -pv /tmp/samba [root@host1 ~]# setfacl -m u:xiao:rwx /tmp/samba [root@host1 ~]# service nmb start [root@host1 ~]# service smb start ps.配置iptables并設置selinux。
測試:
host2(192.168.1.2):
[root@host2 ~]# smbclient -L //192.168.1.1 -U xiao 查看192.168.1.1共享的文件夾,并指定賬戶。 Enter xiao's password: 輸入密碼。 Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] Sharename Type Comment --------- ---- ------- test Disk test on 192.168.1.1 server! IPC$ IPC IPC Service (Samba Server Version 3.6.23-30.el6_7) xiao Disk Home Directories Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] Server Comment --------- ------- HOST1 Samba Server Version 3.6.23-30.el6_7 可以看到host1。 Workgroup Master --------- ------- MYGROUP HOST1 WORKGROUP XIAOLAOPO [root@host1 ~]# smbclient //192.168.1.1/test -U xiao 訪問192.168.1.1的共享文件夾test Enter xiao's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] smb: \> ls 列出文件夾。 . D 0 Tue Apr 26 19:03:03 2016 .. D 0 Wed Apr 27 17:32:03 2016 a.txt A 0 Tue Apr 26 19:02:57 2016 35418 blocks of size 524288. 23572 blocks available smb: \> get a.txt 嘗試下載a.txt getting file \a.txt of size 0 as a.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec) smb: \> put install.log 嘗試上傳。 putting file install.log as \install.log (440.0 kb/s) (average 440.0 kb/s) smb: \> ls 查看,上傳成功。 . D 0 Wed Apr 27 17:46:55 2016 .. D 0 Wed Apr 27 17:32:03 2016 a.txt A 0 Tue Apr 26 19:02:57 2016 install.log A 49565 Wed Apr 27 17:46:55 2016 35418 blocks of size 524288. 23572 blocks available
windows8(192.168.1.10):
訪問192.168.1.1的共享文件夾:
身份驗證:
嘗試創建文件并查看所有者:
使用GUI工具SWAT管理samba
swat是samba的圖形化管理工具,我們可以在配置后通過http來通過網頁配置,并且內嵌幫助文檔,能夠非常直觀的配置samba服務,swat是基于xinetd超級守護進程。
[root@host1 tmp]# yum install xinetd -y 安裝xinetd超級守護進程 [root@host1 tmp]# yum install samba-swat -y 安裝swat程序,主機安裝包名為samba-swat,如果直接輸入swat是找不到包的??! [root@host1 tmp]#vim /etc/xinetd.d/swat 編輯swat的配置文件。 # default: off # description: SWAT is the Samba Web Admin Tool. Use swat \ # to configure your Samba server. To use SWAT, \ # connect to port 901 with your favorite web browser. service swat { port = 901 <--- 監聽的端口默認為901。 socket_type = stream <--- socket類型為stream,面向連接的穩定數據傳輸,即為TCP協議。 wait = no only_from = 192.168.1.0 <---只監聽指定范圍內的主機,即限制登陸主機,設置為0.0.0.0 則默認為監聽所有主機。 user = root <---只允許使用指定用戶登錄。 server = /usr/sbin/swat <---指定主程序路徑。 log_on_failure += USERID disable = no <---開啟swat工具,yes為關閉。 } [root@host1 tmp]# service xinetd start 開啟xinetd服務即可,因為swat是由xinetd來管理的。 [root@host1 tmp]# ss -tunl | grep 901 查看901端口號,的確為設置的tcp的901 tcp LISTEN 0 64 :::901 :::*
訪問服務器的901端口:
進行身份驗證:
進入圖形設定界面:
原創文章,作者:Net18_肖肖,如若轉載,請注明出處:http://www.www58058.com/15661