SAMBA服務

title samba.jpg

SAMBA服務簡介

SMBServer Message Block服務器消息塊,IBM發佈,最早是DOS網絡文件共享協議

Cifscommon internet file system,微軟基於SMB發佈

SAMBA:1991Andrew Tridgell,實現windowsUNIX相通

SAMBA的功能:

•共享文件和打印,實現在線編輯

•實現登錄SAMBA用戶的身份認證

•可以進行NetBIOS名稱解析

•外圍設備共享

計算機網絡管理模式:

•工作組WORKGROUP:計算機對等關係,帳號信息各自管理

•域DOMAIN:C/S結構,帳號信息集中管理,DC,ADDC:域控制器)

 

Windows上使用的就是SAMBA服務

samba:smb 服務

linux unix:nfs

linux linus: kernel git svn

 

netbios = computername+[00]

netbios最長16個字符

netbios可直接ping通,因爲netbios也有解析功能,可以由以下服務實現

lmhost|wins|dns|c:\windows\system32\drivers\etc\hosts

 

SAMBA介紹

相關包:

Samba 提供smb服務

Samba-client 客戶端軟件

samba-common 通用軟件

cifs-utils smb客戶端工具

samba-winbind AD相關  #一般不用裝

相關服務進程:

smbd 提供smbcifs)服務 TCP:139,445

nmbd NetBIOS名稱解析 UDP:137,138

主配置文件:/etc/samba/smb.conf

範例文件:/etc/samba/smb.conf.example

幫助參看:man smb.conf

語法檢查:testparm [-v] [/etc/samba/smb.conf]

客戶端工具:smbclient,mount.cifs

 

SAMBA服務器配置

smb.conf繼承了.ini文件的格式,用[ ] 分成不同的部分

全局設置:

[global] 服務器通用或全局設置的部分

特定共享設置:

[homes] 用戶的家目錄共享

[printers] 定義打印機資源和服務

[sharename] 自定義的共享目錄配置

其中:#;開頭的語句爲註釋,大小寫不敏感

宏定義:

%m 客戶端主機的NetBIOS %M 客戶端主機的FQDN

%H 當前用戶家目錄路徑 %U 當前用戶用戶名

%g 當前用戶所屬組 %h samba服務器的主機名

%L samba服務器的NetBIOS %I 客戶端主機的IP

%T 當前日期和時間 %S 可登錄的用戶名

 

SAMBA服務器全局配置

workgroup 指定工作組名稱

server string 主機註釋信息

netbios name 指定NetBIOS

interfaces 指定服務偵聽接口和IP

hosts allow 可用“, ,空格,或tab分隔,默認允許所有主機訪問,也可在每個共享獨立配置,如在[global]設置,將應用並覆蓋所有共享設置

IPv4 network/prefix: 172.25.0.0/24 IPv4前綴: 172.25.0.

IPv4 network/netmask: 172.25.0.0/255.255.255.0

主機名: desktop.example.com

example.com後綴的主機名: .example.com

示例:

hosts allow = 172.25.

hosts allow = 172.25. .example.com

hosts deny 拒絕指定主機訪問

config file=/etc/samba/conf.d/%U 用戶獨立的配置文件

Log file=/var/log/samba/log.%m 不同客戶機採用不同日誌

log level = 2 設置記錄日誌的級別

max log size=50 日誌文件達到50K,將輪循rotate,單位KB

Security三種認證方式:

share:匿名(CentOS7不再支持)

usersamba用戶(採有linux用戶,samba的獨立口令)

domain:使用DCDOMAIN CONTROLLER)認證

passdb backend = tdbsam 密碼數據庫格式

實現samba用戶:

包:samba-common-tools

工具:smbpasswd pdbedit

samba用戶須是Linux用戶,建議使用/sbin/nologin

 

管理SAMBA用戶

添加samba用戶

smbpasswd -a <user>

pdbedit -a -u <user>

修改用戶密碼

smbpasswd <user>

刪除用戶和密碼:

smbpasswd -x <user>

pdbedit -x -u <user>

查看samba用戶列表:

/var/lib/samba/private/passdb.tdb

pdbedit -L -v

查看samba服務器狀態

smbstatus

 

Windows

運行 --> \\sambaip --> 輸用戶名密碼

登出:

cmd>net use

cmd>net use \\192.168.30.3\IPC$ /del

nbtstat -a IPADDR  查看IP對應的netbios

 

配置目錄共享

每個共享目錄應該有獨立的[ ]部分

[共享名稱] 遠程網絡看到的共享名稱

comment 註釋信息

path 所共享的目錄路徑

public 能否被guest訪問的共享,默認no,和guest ok 類似

browsable 是否允許所有用戶瀏覽此共享,默認爲yesno爲隱藏,no的話可以起到訪問根目錄時看不見此文件夾的效果

writable=yes 可以被所有用戶讀寫,默認爲no

read only=no writable=yes等價,如與以上設置衝突,放在後面的設置生效,默認只讀

write list 三種形式:用戶,@組名,+組名,用,分隔

writable=no,列表中用戶或組可讀寫,不在列表中用戶只讀

valid users 特定用戶才能訪問該共享,如爲空,將允許所有用戶,用戶名之間用空格分隔

 

基於特定用戶和組的共享

編輯/etc/samba/smb.conf

[share]

path = /app/dir

valid users=wind,@admins

writable = no

browseable = no

public = no  #改成yes的話誰都能寫,所有者所屬組是nobody

 

SMB客戶端訪問

UNC路徑: Universal Naming Convention,通用命名規範

格式:\\sambaserver\sharename

終端下使用smbclient登錄服務器

smbclient -L instructor.example.com

smbclient -L instructor.example.com -U wind

> cd directory

> get file1

> put file2

smbclient //instructor.example.com/shared -U wind

可以使用-U選項來指定用戶%密碼,或通過設置和導出USERPASSWD環境變量來指定

 

掛載CIFS文件系統

手動掛載

mount -t cifs -o user=wind,password=centos //server//shared /mnt/smb

開機自動掛載

cat /etc/fstab 可以用文件代替用戶名和密碼的輸入

//server/homes /mnt cifs credentials=/etc/smb.txt 0 0

cat /etc/smb.txt

username=wind

password=password

chmod 600 /etc/smb.txt

 

實驗:實現SMB共享

一、在samba服務器上安裝samba

yum -y install samba

 

二、創建samba用戶和組

groupadd -r admins

useradd -s /sbin/nologin -G admins wind

smbpasswd -a wind

useradd -s /sbin/nologin cloud

smbpasswd -a cloud

pdbedit -L

 

三、創建samba共享目錄,並設置SElinux

mkdir /testdir/smbshare

chgrp admins /testdir/smbshare

chmod 2775 /testdir/smbshare

semanage fcontext -a -t samba_share_t '/testdir/smbshare(/.*)?'

restorecon -vvFR /testdir/smbshare

 

四、samba服務器配置

vim /etc/samba/smb.conf

security = user

passdb backend = tdbsam

[share]

path = /testdir/smbshare

write list = @admins

systemctl start smb nmb

systemctl enable smb nmb

firewall-cmd --permanent --add-service=samba

firewall-cmd --reload

 

五、samba客戶端訪問

安裝包

yum -y install cifs-utils

wind用戶掛載smb共享並訪問

mkdir /mnt/wind

mount -o username=wind //smbserver/share /mnt/wind

echo "Hello wind" >/mnt/wind/windfile.txt

cloud用戶掛載smb共享並訪問

mkdir /mnt/cloud

mount -o username=cloud //smbserver/share /mnt/cloud

touch /mnt/cloud/cloudfile.txt

  

實驗:針對不同用戶設置不同的共享目錄和權限

一、在samba服務器上安裝samba

yum -y install samba

 

二、創建samba用戶和組

useradd -s /sbin/nologin smb1

smbpasswd -a smb1

useradd -s /sbin/nologin smb2

smbpasswd -a smb2

useradd -s /sbin/nologin smb3

smbpasswd -a smb3

pdbedit -L

 

三、創建samba共享目錄,並設置SElinux

mkdir -pv /data/{tools,smb2,smb3}

chmod 777 /data/{tools,smb2,smb3}

touch /data/tools/defaultdir.txt  #3個共享目錄創建不同的文件作標識

touch /data/smb2/smb2dir.txt

touch /data/smb3/smb3dir.txt

semanage fcontext -a -t samba_share_t '/data(/.*)?'

restorecon -vvFR /data

 

四、samba服務器配置

vim /etc/samba/smb.conf

[global]

workgroup = SAMBA

security = user

netbios name = smbsrv7

passdb backend = tdbsam

log file = /var/log/samba/log.%I

log level = 2

……

config file = /etc/samba/conf.d/%U

[share]

comment=samba share dir

path=/data/tools

read only = yes

SAMBA 不同用戶不同共享目錄和權限 01 smb.conf [global].jpg

SAMBA 不同用戶不同共享目錄和權限 01 smb.conf [share].jpg 

vim /etc/samba/conf.d/smb2

[share]

path=/data/smb2

writable=yes

vim /etc/samba/conf.d/smb3

[share]

path=/data/smb3

SAMBA 不同用戶不同共享目錄和權限 02 conf.d下smb2和smb3.jpg

五、samba客戶端訪問

安裝包

yum -y install cifs-utils

smb1用戶掛載smb共享並訪問

mkdir /mnt/smb1

mount -o username=smb1 //smbserver/share /mnt/smb1

ls /mnt/smb1

echo "Hello smb1" >/mnt/smb1/smb1file.txt

看到smb1用戶進入到了默認的共享目錄,smb1寫權限被拒絕,符合的服務端配置

SAMBA 不同用戶不同共享目錄和權限 03 smb1結果.jpg

smb2用戶掛載smb共享並訪問

mkdir /mnt/smb2

mount -o username=smb2 //smbserver/share /mnt/smb2

ls /mnt/smb2

touch /mnt/smb2/smb2file.txt

看到smb2用戶的進入到了smb2自己的的共享目錄,smb2有寫權限,符合服務端配置

SAMBA 不同用戶不同共享目錄和權限 04 smb2結果.jpg

smb3用戶掛載smb共享並訪問

mkdir /mnt/smb3

mount -o username=smb3 //smbserver/share /mnt/smb3

ls /mnt/smb3

touch /mnt/smb3/smb3file.txt

看到smb3用戶的進入到了smb3自己的的共享目錄,smb3寫權限被拒絕,符合的服務端配置

SAMBA 不同用戶不同共享目錄和權限 05 smb3結果.jpg 

多用戶SMB掛載

SAMBA共享默認只支持同時用一個用戶掛載SMB共享

CentOS7中可啓用多用戶掛載功能

客戶端掛載samba共享目錄後,在客戶端登錄的不同用戶訪問同一個samba的掛載點,可獲得不同權限

 

實驗:多用戶SMB掛載

一、samba服務器配置

yum install samba

mkdir /testdir/multiuser

vim /etc/samba/smb.conf

[smbshare]

path=/testdir/multiuser

writable=no

write list= @admins

SAMBA 多用戶掛載 01 smb.conf.jpg

二、samba服務器創建samba用戶

useradd -s /sbin/nologin smbuser

smbpasswd -a smbuser

groupadd admins

useradd -s /sbin/nologin -G admins wind

smbpasswd -a wind

useradd -s /sbin/nologin cloud

smbpasswd -a cloud

SAMBA 多用戶掛載 02 創建samba用戶.jpg

三、samba服務器設置目錄權限和SELinux

wind,admins組分配目錄讀寫權限

chmod 777 /testdir/multiuser

SAMBA 多用戶掛載 03 設置目錄權限.jpg

或者

setfacl -m u:wind:rwx /testdir/multiuser

setfacl -m g:admins:rwx /testdir/multiuser

設置SELinux標籤:

semanage fcontext -a -t samba_share_t '/testdir/multiuser(/.*)?'

restorecon /testdir/multiuser

systemctl restart smb

 

四、samba客戶端啓用多用戶掛載

yum -y install cifs-utils

mkdir /mnt/smb

echo 'username=smbuser' >/etc/multiuser

echo 'password=centos' >>/etc/multiuser

chmod 600 /etc/multiuser

以多用戶方式掛載:

vim /etc/fstab

//smbserver/smbshare /mnt/smb cifs credentials=/etc/multiuser,multiuser 0 0

mount -a

SAMBA 多用戶掛載 04 客戶端啓用多用戶掛載.jpg

五、在samba客戶端用實現多用戶訪問

useradd wind;useradd cloud

root訪問

ls /mnt/smb; touch /mnt/smb/root.txt

wind訪問

su - wind

ls /mnt/smb; touch /mnt/smb/wind.txt

cifscreds add -u wind smbserver

touch /mnt/smb/wind.txt

cloud訪問

su - cloud

cifscreds add -u cloud smbserver

ls /mnt/smb

touch /mnt/smb/cloud.txt

可以看到,只有wind用戶進行驗證後有寫權限,rootcloud用戶寫權限被拒絕,符合的服務端配置

SAMBA 多用戶掛載 05 客戶端用實現多用戶訪問.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章