一、Samba介紹
Samba是在Linux和Unix系統上實現SMB協議的一個免費軟件 ,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它爲局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。
Samba最大的功能就是可以用於Linux與windows系統直接的文件共享和打印共享,Samba既可以用於windows與Linux之間的文件共享,也可以用於Linux與Linux之間的資源共享。
Samba由兩個主要程序組成,它們是smbd和nmbd。這兩個守護進程在服務器啓動到停止期間持續運行,功能各異。Smbd和nmbd使用的全部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd兩個守護進程說明輸出什麼以便共享,共享輸出給誰及如何進行輸出。
Samba提供了基於CIFS的四個服務:文件和打印服務、授權與被授權、名稱解析、瀏覽服務。前兩項服務由smbd提供,後兩項服務則由nmbd提供。 簡單地說,smbd進程的作用是處理到來的SMB軟件包,爲使用該軟件包的資源與Linux進行協商,nmbd進程使主機(或工作站)能瀏覽Linux服務器。
二、Samba服務的安裝 與配置
1、Samba服務的安裝:
使用系統yum安裝,命令:yum -y install samba samba-client
2、啓動Samba服務:
systemctl start smb nmb
3、查看samba服務進程:
ps -ef | grep -E 'smb|nmb'
4、查看Samba應用服務端口
netstat -tunlp | grep E 'smbd|nmbd'
提示 沒有安裝netstat服務,使用yum安裝netstat服務:
yum -y install net-tools
重新查看應用服務端口
smbd應用進程主要監聽139和445端口,nmbd應用進程主要監聽137與 138端口。
5、Samba服務配置--查看Samba配置文件:
Samba文件共享默認配置文件存放於 /etc/samba/smb.conf下,用於配置Samba服務內容 。
cat /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
6、Samba配置文件解釋說明
全局參數[global]
config file=/usr/local/samba/lib/smb.conf.%m
說明:config file可以讓你使用另一個配置文件來覆蓋缺省的配置文件。如果文件 不存在,則該項無效。這個參數很有用,可以使得samba配置更靈活,可以讓一臺samba服務器模擬多臺不同配置的服務器。比如,你想讓PC1(主機名)這臺電腦在訪問Samba Server時使用它自己的配置文件,那麼先在/etc/samba/host/下爲PC1配置一個名爲smb.conf.pc1的文件,然後在smb.conf中加入:config file=/etc/samba/host/smb.conf.%m。這樣當PC1請求連接Samba Server時,smb.conf.%m就被替換成smb.conf.pc1。這樣,對於PC1來說,它所使用的Samba服務就是由smb.conf.pc1定義的,而其他機器訪問Samba Server則還是應用smb.conf。
workgroup=SAMBA
說明:設定Samba Server 所要加入的工作組或者域
Security=user
說明:設置用戶訪問 Samba Server的驗證方式,一共有四種驗證方式。
(1)share:用戶訪問Samba server 不需要提供用戶名和口令,安全性能較低。
(2)user:Samba Server共享目錄只能被授權的用戶訪問,由Samba Server負責檢查賬號和密碼的正確性。賬號和密碼要在Samba Server中建立。
(3)server:依靠其他Windows NT/2000或Samba Server來驗證用戶的賬號和密碼,是一種代理驗證。此種安全模式下,系統管理員可以把所有的Windows用戶和口令集中到一個NT系統上,使用Windows NT進行Samba認證, 遠程服務器可以自動認證全部用戶和口令,如果認證失敗,Samba將使用用戶級安全模式作爲替代的方式。
(4)domain:域安全級別,使用主域控制器(PDC)來完成認證。
netbios name=smbserver
說明:設置samba server 的netbios名稱,如果不填,默認使用該服務器的DNS名稱第一部分。
interfaces=lo eth0 192.168.12.2/24 192.168.13.2/24
說明:Samba Server 監聽那些網卡,可以寫網卡名或者網卡的IP地址。
hosts allow=192.168.1.1 192.168.10.1
說明:表示允許連到Samba Server的客戶端,多個參數可用空格隔開。hosts deny與hosts allow相反。
max connections =0
說明:max connections用來指定連接Samba Server的最大連接數目。如果超出連接數目,則新的連接請求將被拒絕。0表示不限制。
deadtime=0
說明:deadtime用來設置斷掉一個沒有打開任何文件的連接的時間。單位是分鐘,0代表samba server不自動斷開任何連接。
time server=yes/no
說明:time server 用來設置讓nmdb成爲windows客戶端的時間服務器。
log file=/var/log/samba/log.%m
說明:設置samba server日誌文件存儲位置以及日誌文件名稱。在文件名後加個宏%m(主機名),表示對每個訪問samba server的機器單獨記錄一個日誌文件。
max log size=50
說明:設置samba server日誌文件的最大容量,單位爲KB,0代表不限制。
passdb backend=tdbsam
說明:
passdb backend就是用戶後臺的意思。目前有三種後臺;smbpasswd;tbdsam;ldapsam。sam的簡寫:security account manager(安全賬號管理)。
(1)smbpasswd:使用smb自己的工具smbpasswd來個系統用戶設置密碼,客戶端使用這個密碼來訪問samba資源。
(2)tdbsam:該方式使用一個數據庫文件來建立用戶數據庫。數據庫文件叫passdb.tdb,默認在/etc/samba目錄下。passdb.tdb用戶數據庫可以使用smbpasswd -a來建立samba用戶,不過要建立的用samba用戶必須顯示系統用戶。
(3)ldapsam:該方式則是基於LDAP的賬戶管理方式來驗證用戶。首先要建立LDAP服務,然後設置“passdb backend=ldapsam:ldap://LDAP Server”
encrypt passwords=yes/no
說明:是否將認證密碼加密。因爲現在windows操作系統都是使用加密密碼,所以一般要開啓此項。不過配置文件默認已開啓。
smb passwd file=/etc/samba/smbpasswd
說明:用來定義samba用戶的密碼文件。smbpasswd文件如果沒有就要手工新建。
dns proxy=yes/no
說明:設置samba server 是否開啓dns代理服務
load printers=yes/no
說明:設置是否在啓動samba時就共享打印機
printcap name=cups
說明:設置共享打印機的配置文件
printing =cups
說明:設置samba共享打印機的類型。現在支持的打印系統有:bsd,sysv,plp,lprng,aix,hpux,qnx
共享參數[共享名]
comment=任意字符串
說明:comment是對該共享的描述,可以是任意字符串。
path=共享目錄路徑
說明:path用來指定共享目錄的路徑,可以用%u,%m這樣的宏來代替路徑裏的unix用戶和客戶機的netbios名,用宏表示主要用戶[home]共享域。
browseable=yes/no
說明:browseable用來指定該共享是否可以瀏覽
writeable=yes/no
說明:writeable用來指定該共享路徑是否可寫
available=yes/no
說明:available用來指定該共享路徑是否可用
admin user=該共享的管理者
說明:admin users用來指定該共享的管理員(對該共享具有完全控制權限)。
valid users=允許訪問該共享的用戶
說明:valid users用來指定允許訪問該共享資源的用戶。
invalid users=禁止訪問該共享的用戶
說明:invalid users用來指定不允許訪問該共享資料的用戶。
write list=允許寫入該共享的用戶
public=yes/no
說明:public用來指定該共享是否允許guest賬戶訪問。
guest ok=yes/no
說明:意義同public
三、Samba服務的安裝 與配置
1、服務規劃
系統分區,單獨劃分一個/storage的分區,分區下新建兩個文件夾logger和shared;
logger文件夾/storage/logger下對應的管理員賬號爲logadmin,用戶賬號爲loguser;
shared文件下/storage/shared下對應的管理員賬號爲admin,用戶賬號爲shared;
2、創建文件夾
mkdir /storage
cd /storage
mkdir logger shared
ls
3、創建用戶
useradd -s /sbin/nologin logadmin
useradd -s /sbin/noligin admin
useradd -g logadmin -s /sbin/nologin loguser
useradd -g admin -s /sbin/nologin shared
cat /etc/passwd
4、建立Samba用戶
smbpasswd -a logadmin
smbpasswd -a loguser
smbpasswd -a admin
smbpasswd -a shared
5、更改目錄屬性
chown logadmin.logadmin logger
chown admin.admin shared
chmod -R 777 logger
chmod -R 777 shared
6、配置Samba服務
[root@localhost storage]# vi /etc/samba/smb.conf
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA #工作組
server string=Samba Server Version %v
netbios name=Linuxidc-Server #設置netbios名稱
log file=/var/log/samba/%m.log #設置日誌文件路徑
max log size=10240 #log日誌最大容量
security = user #設置Samba Server驗證方式
passdb backend = tdbsam #用戶後臺模式
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[logger]
commnet=Logs Directories #對共享的描述
path=/storage/logger/ #共享路徑
public=no #不允許guest訪問
admin users=logadmin #該共享的管理者
browseable=yes #允許瀏覽
write=yes #允許寫入
create mask=0777 #文件權限
directory mask=0777
force directory mode=0777
force create mode=0777
[shared]
comment=Shared Directories #對共享的描述
path=/storage/shared/ #共享路徑
public=no #不允許guest訪問
admin users=admin #該共享的管理者
valid users=@admin #可以訪問的用戶組、用戶
browseable=yes #允許瀏覽
writable=yes #允許寫入
create mask=0777 #文件權限
directory mask=0777
force directory mode=0777
force create mode=0777
修改完samba配置文件後,需要重啓Samba服務配置才能生效。
四、Samba服務測試
1、使用windows系統訪問測試:
在windows系統中,輸入samba服務器的IP地址,:
查看服務器的IP地址:
ip addr
windows(windows 10)系統連接Samba服務器:
\\192.168.37.132
2、測試創建文件
拷貝客戶機文件到Samba共享文件夾下,測試文件拷貝是否成功。