一、簡介
Samba服務程序是一款基於SMB協議並由服務端和客戶端組成的開源文件共享軟件,實現了Linux和windows系統間的文件共享。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置"NetBIOS over TCP/IP"可跨路由的使用samba所提供的功能。
samba的兩個服務及端口
1.nmbd 主要利用udp 137和138端口負責名稱解析的服務。
2.smbd 這個 進程 的主要功能就是用來管理 SAMBA 主機分享的目錄、文件和打印機等等。 主要利用 TCP 協定來傳輸資料,使用端口為 139 及 445。
Samba的套件
1.samba:這個套件主要包含了 SAMBA 的主要 daemon檔案 ( smbd 及 nmbd )、 SAMBA 的文件檔 ( document )、以及其它與 SAMBA 相關的logrotate 設定文件及開機預設選項檔案等;
2.samba-common:這個套件則主要提供了 SAMBA 的主要設定檔(smb.conf) 、 smb.conf 語法檢驗的測試程序 ( testparm )等等;
3.samba-client:這個套件則提供了當 Linux 做為SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 檔案格式的執行檔 smbmount等等。
一、安裝配置
# yum install samba
關閉:systemctl stop iptables
setenforce 0
或者將/etc/selinux/config下SELINUX=enforcing改為SELINUX=disabled
pam password change = no
passwd chat =**NEW*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *successfully*
passwd program = LANG=en_US/usr/bin/passwd %u
unix password sync = yes
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd
若/etc/samba/下沒有smbpasswd,會自動創建。
配置文件相關參數(不同系統稍有差別):紅色字體為解釋
[global] |
#全局參數。 |
|
workgroup = MYGROUP |
#工作組名稱。 |
|
server string = Samba Server Version %v |
#服務器介紹信息,參數%v為顯示SMB版本號。 |
|
log file = /var/log/samba/log.%m |
#定義日志文件存放位置與名稱,參數%m為來訪的主機名。 |
|
max log size = 50 |
#定義日志文件最大容量為50Kb。 |
|
security = user |
#安全驗證的方式,總共有4種。 |
|
#share:來訪主機無需驗證口令,更加方便,但安全性很差。 |
||
#user:需由SMB服務驗證來訪主機提供的口令后才可建立訪問,更加的安全。 |
||
#server:使用獨立的遠程主機驗證來訪主機提供的口令(集中管理帳號)。 |
||
#domain:使用PDC來完成驗證 |
||
pam password change = no |
||
passwd chat = **NEW*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *successfully* |
||
passwd program = LANG=en_US/usr/bin/passwd %u |
||
unix password sync = yes |
||
passdb backend = smbpasswd |
#定義用戶后台的類型,共有3種。 |
|
#smbpasswd:使用SMB服務的smbpasswd命令給系統用戶設置SMB密碼。 |
||
#tdbsam:創建數據庫文件並使用pdbedit建立SMB獨立的用戶。 |
||
#ldapsam:基於LDAP服務進行帳戶驗證。 |
||
smb passwd file = /etc/samba/smbpasswd #共享目錄路徑 |
||
load printers = yes |
#設置是否當Samba服務啟動時共享打印機設備。 |
|
cups options = raw |
#打印機的選項 |
|
[homes] |
#共享參數 |
|
comment = Home Directories |
#描述信息 |
|
browseable = no |
#指定共享是否在"網上鄰居"中可見。 |
|
writable = yes |
#定義是否可寫入操作,與"read only"相反。 |
|
[printers] |
#打印機共享參數 |
|
comment = All Printers |
||
path = /var/spool/samba |
#共享文件的實際路徑(重要)。 |
|
browseable = no |
||
guest ok = no |
#是否所有人可見,等同於"public"參數。 |
|
writable = no |
||
printable = yes |
||
[database] |
||
comment = Do not arbitrarily modify the database file | ||
path = /database | ||
public = no | ||
writable = yes |
||
在根目錄下創建database目錄 保存smb.conf文件后重啟啟動SMB服務: #systemctl restart smb
|
#useradd smbuser
#smbpasswd –a smbuser 添加用戶並設置密碼
smbpasswd(選項)(參數)
選項
-a:向smbpasswd文件中添加用戶;
-c:指定samba的配置文件;
-x:從smbpasswd文件中刪除用戶;
-d:在smbpasswd文件中禁用指定的用戶;
-e:在smbpasswd文件中激活指定的用戶;
-n:將指定的用戶的密碼置空。
4.在Windows下驗證:
登錄進來可以看到剛剛所創建的database目錄和用戶的家目錄。
在smbuser下新建一個文件
然后可以在服務器上用戶家目錄可以看到剛剛所創建的文件
6.在linux系統上驗證共享結果:
#yum install –y cifs-utils
# mkdir /database
# vim /etc/fstab
//192.168.1.1222/database /database cifs username=smbuser,password=XXX,sec=ntlmssp,rw 0 0
# mount –a
然后查看掛載目錄
服務器上創建111文件:
若提示權限不足,把/database目錄權限修改為如下即可:
注意所屬主與所屬組
在客戶端查看:
至此實現了Linux系統之間分享數據。