Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通訊協議,它爲局域網內的不一樣計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機經過該協議能夠訪問服務器上的共享文件系統、打印機及其餘資源。經過設置「NetBIOS over TCP/IP」使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。linux
軟件包:sambavim
協議:SMP(TCP139)CIFS(445)服務器
配置文件路徑:/etc/samba/smb.conf網絡
所需服務器:svr7(ip192.168.4.7)和myhost2session
3、samba服務器的配置步驟工具
一、安裝軟件spa
[root@svr7 ~]# yum -y install samba
二、起服務rest
[root@svr7 ~]# systemctl restart smb
三、samba賬號的管理code
samba用戶:a、提早創建同名的系統用戶(可不設置密碼)blog
b、採用獨立於系統的密碼
管理工具:pdbedit
添加用戶:-a
查詢用戶:-L
刪除用戶:-x
[root@svr7 ~]# useradd user //添加系統用戶 [root@svr7 ~]# pdbedit -a user //添加與系統用戶同名的samba用戶 new password: //交互式設置密碼 retype new password: Unix username: //添加成功後顯示的內容 NT username: Account Flags: [U ] User SID: S-1-5-21-2938114846-3327256202-3573822823-1000 Primary Group SID: S-1-5-21-2938114846-3327256202-3573822823-513 ......................
[root@myhost1 smb]# pdbedit -L //查看samba用戶列表 user:1001: user1:1002:
4、配置文件及參數
[root@svr7 ~]# vim /etc/samba/smb.conf [global] //全局配置 workgroup = MYGROUP [homes] //家目錄共享 [printers] //打印機共享 [samba] path = /smb/ //共享目錄路徑 ; public = yes|no //默認no;公用的 ; browseable = yes|no //默認yes;是否能夠瀏覽 ; read only = yes|no //默認yes;只讀 ; writable = yes|no //默認yes;可寫 write list = user //默認無;可寫入的用戶列表 valid users = user,user1//默認全部用戶;有效的用戶列表 ; hosts allow = 客戶地址 //容許的客戶機地址 ; hosts deny = 客戶地址 //禁止的客戶機地址 ; comment = 註釋 //說明
5、修改用戶對目錄的讀寫執行權限
root@svr7 ~]# setfacl -m u:user:rwx /smb
六、SELinux對samba共享的保護
a、用getseboolbool查看selinux開關
[root@svr7 ~]#getsebool -a | grep samba_export samba_export_all_ro --> off samba_export_all_rw --> off //是否容許可讀寫共享
b、用setsebool控制SELinux開關
[root@svr7 ~]# setsebool -P samba_export_all_rw=on [root@svr7 ~]# setsebool -P samba_export_all_ro=on //打開
4、客戶端訪問共享目錄
所需軟件包:samba-client
一、列出共享資源:smbclient -L 服務器地址
[root@myhost2 ~]smbclient -L 192.168.4.7 Enter root's password: //此處無需輸入密碼,直接回車 Anonymous login successful Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.2.3] Sharename Type Comment --------- ---- ------- ................................
2、鏈接到目標主機的共享目錄
[root@myhost2 ~]# smbclient -U user //192.168.4.7/tools(共享名) Enter user's password: //輸入samba用戶user的密碼 Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.2.3] smb: \> ls . D 0 Fri Jul 28 22:02:25 2017 .. DR 0 Fri Jul 28 21:32:58 2017 123 D 0 Fri Jul 28 22:02:25 2017
1、客戶端登陸samba時出現如下提示: session setup failed: NT_STATUS_LOGON_FAILURE 該錯誤提示表示用戶有誤,多是用戶不存在,也多是密碼錯誤,或者只是在samba用戶和系統用戶及密碼出現錯誤,總之就是用戶和密碼的問題。 tree connect failed: NT_STATUS_BAD_NETWORK_NAME 該錯誤表示壞的網絡名,表示共享目錄不存在,或共享目錄權限問題 可用setfacl -m給用戶加權限 Connection to 192.168.4.7 failed (Error NT_STATUS_HOST_UNREACHABLE) 2、客戶端鏈接到samba共享目錄時出現如下提示: smb: \> ls NT_STATUS_ACCESS_DENIED listing \* 文件權限不足,或者存在selinux限制 調整文件的權限,並打開selinux開關 3、執行setsebool -P 操做啓用SElinux開關參數時失敗,提示:Killed 內存不足,並且交換空間也不足 添加交換分區(1GB)在重試